工程苗小兵
先楫資深FAE工程師
電力電子與電力傳動專業碩士研究生,一個從事了20多年的功率控制的工程小兵,有多年的電機驅動和電源控制經驗,專注電力電子控制方向。
SEI 串行編碼器接口
是HPM單片機獨創的通信接口外設,可以在同一個硬件接口上實現不同類型的串行通信協議的數據收發。
是5300精確位置系統的一部分,可以與系統中的其它外設協同工作。
主要應用場景:
作為主機,從外部的串行編碼器讀取電機運動信息(絕對位置、速度、圈數、故障…等),交由 MMC單元 或 主控軟件 進行電機驅動控制。
作為從機,QEIv2或RDC模塊將從傳感器(光、霍爾、旋變)獲取的位置數據,經SEI轉換成不同的協議后發送給外部的電機驅動器(PLC、運動控制卡、伺服驅動……)。
定制通訊,可以在多種不同的串行協議間進行轉換;也可以根據自己的需要定制協議,并可實現硬件自主通訊。
(圖示:5300精確位置系統)
02.串行編碼器接口SEI 的主要特性
●2 個 SEI 控制器
●9 個數據寄存器組
● 最高支持 64 條指令
● 支持同步通信 和 異步通信
● 支持主機模式和從機模式(作為編碼器)
● 每個 SEI 控制器支持共 3 種觸發方式
外部觸發,包括觸發輸入及觸發輸出各 8 路
周期性觸發
軟件觸發
● 支持精確控制 SAMPLE 或 UPDATE 位置信息與時間戳的時機
● 支持命令匹配及指令跳轉
● 支持自動 CRC 校驗
● 支持自動奇偶校驗
● 支持 WatchDog
● 支持超時 TIMEOUT 及收發 CDM/CDS
●靈活實現多種編碼器協議:Tamagawa、HIPERFACE、Nikon 、SSI、BiSS-C、EnDat2.1/2.2
03.HPM5300 串行編碼器接口SEI 的組成結構
SEI模塊的寄存器組成
●引擎寄存器
負責模塊使能控制、超時處理、看門狗配置,和反饋執行狀態、指令指針等
●收發控制
負責收發配置,數據傳輸長度、波特率、空閑狀態、同步或異步控制模式等收發控制
●觸發
負責外部輸入觸發、周期觸發、軟件觸發模式配置
負責輸出觸發,可以配置外部觸發命令
●命令
包含8個命令表及其相關的比較位和最大、最小值范圍
負責命令數據的長度、校驗、大小端格式等
●鎖存器
負責4個鎖存器的跳轉配置、輸出延遲和輸出選擇
●位置寄存器
包含sample和update對應的位置寄存器組
負責觸發sample和update的配置
●中斷寄存器
負責中斷使能配置、狀態記錄、中斷指令和中斷指令匹配的配置
●指令內存
存放64條可配置的指令,SEI0 與 SEI1共用
●數據寄存器組
存放9組數據寄存器, SEI0 與 SEI1共用
04.串行編碼器接口SEI的工作原理:通訊指令
Tamagawa、BiSS-C和SSI,這三種不同協議的編碼器為例,通信協議之前存在較大的差異:異步vs同步、校驗方式、大小端、數據長度、返回信息延遲、通訊結束標志、觸發采樣和更新位置時刻等。
SEI 的大致方法是把通訊協議分解成多個典型節點,每個節點對應一條指令,通過不同指令組合實現通訊完成。
Tamagawa
BiSS-C
SSI
05.SEI示例
多摩川編碼器主查詢協議為例,調用指令設置函數sei_set_instr():
0階段: 發送控制字,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_SEND, 0, SEI_DAT_0, SEI_DAT_2, 8);
參數設置:指定SEI0/1;指定指令指針,OP:3無時限內發送 ;CK:異步傳輸統一為0;CRC:CRC放入無效數據寄存器DAT_0表示當前數據不計算CRC;傳輸數據:放入DAT2;數據長度:8bit。
1階段: 接收控制字,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_3, 8);
參數定義:指定SEI0/1,指定指令指針,OP:6時限內接收 ,CK:異步傳輸統一為0, CRC:校驗值放入數據寄存器DAT_9,傳輸數據放入DAT_3,數據長度為8bit。
2階段: 接收傳感器狀態信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_4, 8);
參數定義:其他信息同上,傳輸數據放入DAT_4。
3階段: 接收位置信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_5, 24);
參數定義:其他信息同上,傳輸數據放入DAT_5,數據長度為24bit。
4階段: 接收ENID,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_6, 8);
參數定義:其他信息同上,傳輸數據放入DAT_6,數據長度為8bit。
5階段: 接收圈數信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_7, 24);
參數定義:其他信息同上,傳輸數據放入DAT_7,數據長度為24bit。
6階段: 接收報警信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_8, 8);
參數定義:其他信息同上,傳輸數據放入DAT_8,數據長度為8bit。
7階段: 接收CRC,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_0, SEI_DAT_9, 8);
參數定義:其他參數同上, CRC:數據放入無效數據寄存器DAT_0表示該指令中接收到的數據不計算CRC;如果DAT_9配置為CRC模式,前期接收數據計算后的CRC校驗值會與DAT_9接收值做對比,數據長度為8bit。
8階段: 停止指令sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_HALT, 0, SEI_DAT_0, SEI_DAT_0, 0)
參數定義:OP:0 停頓,其他參數均設為0。
通訊結束。
06.SEI 引擎寄存器
寄存器組成
●引擎控制
負責模塊使能控制、狀態回倒、狀態異常處理、觸發使能控制、看門狗使能
●指針地址配置
配置異常和初始執行指令地址指針,當執行不同數據通訊時可以修改初始執行指令地址指針實現調用不同的收發指令
●看門狗配置、程序執行指針、當前指令、看門狗狀態
負責監控當前工作狀態
●SEI中有兩組,分別應用于SEI0和SEI1
-
編碼器
+關注
關注
45文章
3655瀏覽量
134874 -
接口
+關注
關注
33文章
8667瀏覽量
151518 -
通訊
+關注
關注
9文章
911瀏覽量
34987 -
串行
+關注
關注
0文章
237瀏覽量
33900
發布評論請先 登錄
相關推薦
評論