91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

經驗分享 | SEI同步通訊—BISS-C/ENDAT協(xié)議解讀

先楫半導體HPMicro ? 2025-11-24 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SEI(Serial Encoder Interface)串行編碼器接口,是先楫半導體創(chuàng)新性設計的一個針對串行絕對值編碼器通信的外設。SEI支持同步通信模式與異步通信模式,既能做主機——從編碼器獲取數(shù)據(jù),又能做從機——將位置信息以主機需要的串行協(xié)議發(fā)出。在電機類應用中大大的降低了編碼器相關開發(fā)任務的難度,同時以硬件編解碼的方式降低了CPU負載率,讓CPU有更多算力處理其他任務。

先楫半導體SDK1.10.0提供了諸多SEI應用的實例,包括Biss-c、Endat、Hiperface、Nikon、SSI、Tamagawa等串行協(xié)議的主站、從站配置源碼,開發(fā)者在sample實例的基礎上,簡單的進行修改即可應用到項目中。

本文以Biss-c和Endat協(xié)議為例,對SEI在同步通信中用法進行講解,使讀者對SEI的用法有進一步的認識與了解。

本文中,命令指協(xié)議中主站向從站發(fā)送的命令,從站需要根據(jù)命令內容進行回復或執(zhí)行某些操作;指令指SEI引擎執(zhí)行的動作。

1、SEI關鍵概念

1.1 數(shù)據(jù)寄存器

數(shù)據(jù)寄存器是SEI收發(fā)數(shù)據(jù)的數(shù)據(jù)存放單元。在通信的接收過程中,接收到的數(shù)據(jù)會被存放于數(shù)據(jù)寄存器中;在通信的發(fā)送過程中,需要向外發(fā)送的數(shù)據(jù)同樣存放在數(shù)據(jù)寄存器中。

SEI共有17組數(shù)據(jù)寄存器,每個寄存器寬度為32bit。當SEI工作在同步模式時,數(shù)據(jù)線上連續(xù)出現(xiàn)的數(shù)據(jù)會根據(jù)clock信號進行采樣,并將采樣后的數(shù)據(jù)按照SEI配置依次保存到數(shù)據(jù)寄存器中,不超過32bit的圈數(shù)/位置數(shù)據(jù)可以使用1個數(shù)據(jù)寄存器進行保存,超過32bit的數(shù)據(jù)使用2個數(shù)據(jù)寄存器進行保存——不過單圈精度超過32位以及圈數(shù)超過32位的編碼器比較少見,32bit寄存器可滿足絕大部分使用場景。

數(shù)據(jù)寄存器0用于忽略接收到的數(shù)據(jù)——某些通信協(xié)議的數(shù)據(jù)字段,如果開發(fā)者不關心,可以使用數(shù)據(jù)數(shù)據(jù)寄存器0進行接收;其概念與Linux系統(tǒng)下黑洞文件類似。

數(shù)據(jù)寄存器2~數(shù)據(jù)寄存器17為通用數(shù)據(jù)寄存器??梢怨ぷ髟?種模式下:

數(shù)據(jù)模式:僅用于存儲數(shù)據(jù)。

檢查模式:可設定期待值,例如用戶期待接收到0x17,當接收到的寫入該數(shù)據(jù)寄存器的值不為0x17時,可產生傳輸錯誤提示。

CRC模式:用于收發(fā)數(shù)據(jù)過程中實時計算CRC值,可通過設置CRC多項式與CRC初始值來設計CRC算法,當接收數(shù)據(jù)的CRC計算結果與實時計算結果不符時,可產生錯誤傳輸提示。

1.2 命令寄存器

用于收發(fā)串行編碼器協(xié)議中的命令數(shù)據(jù)。例如ENDAT協(xié)議中Mode Command字段為命令,其含義如下圖:

8ac2a792-c8d6-11f0-8ce9-92fbcf53809c.jpg

可以看到,Mode Command字段內的M0~M3決定了通信的內容,根據(jù)該字段的不同,主機可以從編碼器中讀取位置數(shù)據(jù)、收發(fā)配置參數(shù)、復位等。


1.3 命令匹配表

命令寄存器接收到命令后,SEI引擎接收JUMP跳轉指令,會根據(jù)命令內容在命令匹配表內進行檢索。找到符合命令的表項后,則跳轉至該命令匹配表指向的指令開始執(zhí)行。SEI共支持8張命令匹配表,SEI引擎會以順序方式對每張命令匹配表的命令進行對比,如果命令匹配表0~命令匹配表6都匹配失敗,則無條件執(zhí)行命令匹配表7的預設指令(回復/不回復)。命令匹配表一般在做從機時使用。


1.4 指令

SEI引擎共支持8種指令,分為停止、等待、接收、發(fā)送、跳轉5大類指令,根據(jù)是否有超時保護拓展為8種指令。例如接收指令可分為時限內接收與無限時接收,時限內接收在規(guī)定的時間內未收到數(shù)據(jù)會進行報錯處理,無限時接收則會永遠等待下去。其它時限內發(fā)送與無限時發(fā)送等概念,請讀者自行理解。

SEI共支持預設128條指令。


1.5 狀態(tài)機

SEI狀態(tài)機包括4個狀態(tài),狀態(tài)的切換只能以0-->1-->2-->3-->0的順序進行,每種狀態(tài)的切換條件可由開發(fā)者自行定義,例如設置執(zhí)行完第10條指令后狀態(tài)機從狀態(tài)0切換到狀態(tài)1。狀態(tài)切換可向外發(fā)送事件信號,開發(fā)者可將該信號拉到其它外設進行觸發(fā),實現(xiàn)硬件同步;或簡單的產生一次中斷或DMA事件,使用中斷或DMA進行一定的數(shù)據(jù)處理工作。

理解SEI工作的關鍵就在于以上5個概念的掌握。其它更多的技術細節(jié)需要讀者自行查閱UM手冊進行理解。


2、BISSC指令表解析


下面對SEI工作的流程進行直觀的舉例描述,時序如下圖所示,代碼參考samples\drivers\sei\master\bissc\src\sei.c:

8ae1d7f2-c8d6-11f0-8ce9-92fbcf53809c.png8aea590e-c8d6-11f0-8ce9-92fbcf53809c.png

1)主機SEI引擎使能后,對外發(fā)送clock信號,同時開始以指令0“等待”數(shù)據(jù)線上的ACK信號,ACK信號由編碼器發(fā)出(編碼器收到clock信號后會發(fā)出ACK表示應答),拉低數(shù)據(jù)總線電平,因此SEI收到ACK信號后會跳轉到指令1;


2)按照協(xié)議,ACK響應后編碼器發(fā)送1 bit高電平,代表開始數(shù)據(jù)傳輸,指令1“等待”數(shù)據(jù)線上的START信號,如SEI收到START信號,將繼續(xù)接收CDS數(shù)據(jù),跳轉到指令2;


3)CDS和CDM是BISSC協(xié)議中用于主機與編碼器進行一些控制指令交互的手段,主機每一幀數(shù)據(jù)傳送1 bit CDM數(shù)據(jù)給編碼器,編碼器每幀數(shù)據(jù)傳輸1 bit CDS數(shù)據(jù)給主機完成交互。例程使用的編碼器型號,不存在控制數(shù)據(jù)交互功能,因此1 bit的CDS數(shù)據(jù)沒有意義,接收到數(shù)據(jù)后將其保存到數(shù)據(jù)寄存器0中,跳轉到指令3;


4)主機SEI引擎接收12bit多圈數(shù)據(jù)保存在DATA_2中,跳轉到指令4


5)主機SEI引擎接收12bit單圈數(shù)據(jù)保存在DATA_3中,跳轉到指令5


6)WARN和ERROR是BISSC協(xié)議中用于表示編碼器狀態(tài)的數(shù)據(jù)bit,當故障時會通過這兩個數(shù)據(jù)bit通知主機數(shù)據(jù)無效,例程使用DATA_4保存后,跳轉到指令6


7)接下來6個bit的數(shù)據(jù)是用于數(shù)據(jù)完整性校驗的CRC,CRC校驗正確數(shù)據(jù)才有效,否則會觸發(fā)SEI TRX中斷,接收完6 bit CRC數(shù)據(jù)后會跳轉到指令7


8)當數(shù)據(jù)發(fā)送完成后,Data 保持小于 10us 的低電平,這段時間被稱為 Timeout。該信號一直維持到 Data 被拉高,表明當前幀通信結束,可以開始下一幀通信。在此期間,SEI主機不再向外發(fā)送clock信號,并維持CLK數(shù)據(jù)線為高電平。當編碼器準備好下一幀數(shù)據(jù)傳輸,會釋放數(shù)據(jù)線將其拉高為高電平,即指令8配置的等待數(shù)據(jù)線為1


9)完成整個通信過程后,主機執(zhí)行HALT指令,準備下一幀數(shù)據(jù)的傳輸,重新從指令0開始數(shù)據(jù)傳輸


可以看到,通過以上工作流程的描述,SEI就依靠硬件自動完成了clock的發(fā)送,從編碼器讀回來了數(shù)據(jù)。CPU只要在數(shù)據(jù)寄存器中讀取位置值和圈數(shù)值即可。


3、ENDAT指令表解析


與SEI類似,下面對ENDAT協(xié)議進行解析,時序如下圖所示,代碼參考samples\drivers\sei\master\endat\src\sei.c:

8af3e5b4-c8d6-11f0-8ce9-92fbcf53809c.png

由以上時序圖可以看到,ENDAT協(xié)議,由以下幾個階段組成:

1)由主機發(fā)送2個周期的clock信號

2)由主機發(fā)送Mode command(參見1.2章節(jié)),Mode command共6 bit,后3 bit與前3 bit按位取反

3)由主機再發(fā)送2個周期的clock信號

4)主機持續(xù)輸出clock信號,開始等編碼器給出start信號,start信號即編碼器拉高數(shù)據(jù)線,

5)編碼器傳輸1 bit Error數(shù)據(jù)

6)編碼器傳輸n bit位置數(shù)據(jù)(n取決于編碼器規(guī)格)

7)編碼器傳輸5 bit CRC數(shù)據(jù)

8)一段時間的timeout,其概念與BISSC相似,區(qū)別在于編碼器會拉低數(shù)據(jù)線表示timeout結束,即可以開始下一幀數(shù)據(jù)傳輸。

參照以上對ENDAT編碼器協(xié)議的解讀,理解下圖所示例程的指令表設計,應該是毫無難度了。

8b00aca4-c8d6-11f0-8ce9-92fbcf53809c.png


4、同步通信其它技術點解析


4.1 采樣點

細心的讀者會注意到,SDK中BISSC與ENDAT兩個master例程,采樣點的設置不同,下面介紹一下采樣點的設置。

BISSC例程如下,接收采樣點為ck0 point,發(fā)送點為ck1 point:

8b0e97e2-c8d6-11f0-8ce9-92fbcf53809c.png

ck0是指一個clock周期的第一個邊沿,ck1是指一個clock周期的第二個邊沿。結合BISSC協(xié)議的規(guī)定,idle狀態(tài)下clock為高電平,那么第一個邊沿就是下降沿,第二個邊沿就是上升沿。

即意味著,SEI引擎會在下降沿采樣接收信號線上的數(shù)據(jù),在上升沿發(fā)送要發(fā)出的數(shù)據(jù)。BISSC協(xié)議主機不發(fā)送數(shù)據(jù),只關注接收即可。

如下圖為BISSC標準協(xié)議,可以看到,數(shù)據(jù)確實在clock的下降沿采樣,上升沿數(shù)據(jù)發(fā)生變化。

8b2d71c6-c8d6-11f0-8ce9-92fbcf53809c.png

ENDAT波形如下圖,可以看到發(fā)送Mode command時,數(shù)據(jù)在下降沿發(fā)送;接收數(shù)據(jù)時,數(shù)據(jù)在下降沿采樣:

8b382058-c8d6-11f0-8ce9-92fbcf53809c.png8b4159a2-c8d6-11f0-8ce9-92fbcf53809c.png

所以ENDAT例程采樣點配置如上圖所示,clock信號線idle電平為高電平,那么接收采樣點為ck0 point,發(fā)送點也為ck0 point。


4.2 采樣點調整

當編碼器線纜長度比較長,電信號的傳輸時間會對信號的相位發(fā)生影響,當影響無法忽略時,需要對采樣點進行調整。


如下圖ENDAT協(xié)議中所示,主機發(fā)出的clock在信號線上傳輸?shù)竭_編碼器,編碼器根據(jù)clock信號發(fā)送位置數(shù)據(jù),位置數(shù)據(jù)傳輸?shù)街鳈C時,如果主機仍然在下降沿采樣,那么就會發(fā)生錯誤。

8b4c2620-c8d6-11f0-8ce9-92fbcf53809c.png

先楫SDK例程開發(fā)時充分考慮以上情況的發(fā)生,在SEI最初的通信過程中,會測量主機主動發(fā)出的clock信號下降沿與從機回復信號的start上升沿之間的時間差,來判斷電信號在線纜中傳輸造成的相位偏移影響,對采樣點進行調整,如下圖代碼:

8b5627a6-c8d6-11f0-8ce9-92fbcf53809c.png

調整的邏輯較簡單,請讀者自行分析,以便更好的理解整個通信過程。


5、小結


相信通過以上針對SEI的講解,及對BISSC、ENDAT例程代碼的分析,讀者對SEI有了更深的認識,希望開發(fā)者可以用好SEI模塊,加速項目開發(fā)與落地。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼器
    +關注

    關注

    45

    文章

    3953

    瀏覽量

    142612
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    129968
  • 接口
    +關注

    關注

    33

    文章

    9519

    瀏覽量

    157017
  • 絕對值編碼器

    關注

    3

    文章

    71

    瀏覽量

    10619
  • 先楫半導體
    +關注

    關注

    12

    文章

    284

    瀏覽量

    3297
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    SEI異步通訊—多摩川協(xié)議支持

    1、SEI簡介SEI(SerialEncoderInterface)串行編碼器接口,是先楫半導體創(chuàng)新性設計的一個針對串行絕對值編碼器通信的外設。SEI支持同步通信模式與異步通信模式,既
    的頭像 發(fā)表于 06-14 08:17 ?4398次閱讀
    <b class='flag-5'>SEI</b>異步<b class='flag-5'>通訊</b>—多摩川<b class='flag-5'>協(xié)議</b>支持

    用SPI模擬BISS-C協(xié)議,可以用定時器捕獲時鐘高電平持續(xù)時間判斷biss幀的開始嗎?

    用SPI模擬BISS-C協(xié)議 可以用定時器捕獲時鐘高電平持續(xù)時間判斷biss幀的開始嗎
    發(fā)表于 04-02 07:42

    SEI實現(xiàn)BiSS-C從機協(xié)議,發(fā)送TIMEOUT期間CDM如何接收?

    SEI實現(xiàn)BiSS-C從機協(xié)議,發(fā)送TIMEOUT期間CDM如何接收?
    發(fā)表于 04-07 11:09

    一個到電機位置編碼器的EMC兼容接口設計

    設計使用AM437x主機處理器來運行所有這三個編碼器協(xié)議。與TIDA-00179硬件將針對EnDat 2.2 (TIDA-00172)、BiSS C (TIDA-00175) 和 HI
    發(fā)表于 09-04 14:48

    電磁兼容(EMC)標準的電機位置編碼器接口講解

    iC-Haus公司的開源協(xié)議。它定義了適用于致動器和傳感器(如旋轉編碼器或位置編碼器)的數(shù)字雙向串行接口。BiSS允許單向或雙向模式(被稱為BiSS-C連續(xù)模式)下的串行同步數(shù)據(jù)通信。
    發(fā)表于 09-05 16:07

    請問tms320f28377d連接多個ENDAT絕對值編碼器是否需要4個硬件SPI接口才行?

    3個。是否用1個SPI接口能復用?2、是否普通IO口模擬SP時序,也能實現(xiàn)讀???I3、不同廠家的電機控制器芯片都宣傳支持ENDATBISS編碼器接口,是否能認為只要用SPI總線讀回數(shù)據(jù),剩下的工作就是軟件解析數(shù)據(jù)的工作了,對嗎?還是C
    發(fā)表于 09-13 09:51

    C2000 MCU的BiSS-C絕對編碼器主接口參考設計

    (通過 LaunchPad 開發(fā)套件)配合使用,以實現(xiàn)集成式 BiSS-C 數(shù)字協(xié)議解決方案可通過軟件驅動程序函數(shù)和數(shù)據(jù)結構輕松執(zhí)行連接 BiSS-C 的命令C28x 優(yōu)化 CRC 算
    發(fā)表于 10-22 10:02

    PRU-ICSS的另一個應用概述

    就在于根據(jù)編碼器和電機供應商選擇和集成正確的數(shù)字編碼器協(xié)議標準。三個最常用的位置編碼器協(xié)議標準為EnDat 2.2, BiSS C和高性能接
    發(fā)表于 08-05 04:45

    最近在使用TMS320F28379D用其CLB功能實現(xiàn)ENDAT2.2協(xié)議時與海德漢的編碼器進行通訊。程序初始化一直不成功?

    各位大俠好,最近在使用TMS320F28379D用其CLB功能實現(xiàn)ENDAT2.2協(xié)議時與海德漢的編碼器進行通訊。程序初始化一直不成功,有哪位大俠做過相關的研究?。肯旅媸浅跏蓟绦?/div>
    發(fā)表于 05-16 17:36

    基于FPGA的BISS-C協(xié)議編碼器的解碼實現(xiàn)

    有沒有大佬弄過 基于FPGA的BISS-C協(xié)議編碼器解碼,想問一下該怎么搞,有償,或者有沒有現(xiàn)成的產品可以幫忙解碼?
    發(fā)表于 05-23 17:17

    詳解雙向/串行/同步BiSS)位置編碼器的接口

    。)BiSS允許單向或雙向模式(被稱為BiSS-C連續(xù)模式)下的串行同步數(shù)據(jù)通信。BiSS接口與串行同步接口(SSI)硬件兼容。
    發(fā)表于 11-17 01:55 ?2.3w次閱讀
    詳解雙向/串行/<b class='flag-5'>同步</b>(<b class='flag-5'>BiSS</b>)位置編碼器的接口

    DesignDRIVE軟件:關于位置管理器BiSS-C的介紹

    C2000DesignDRIVE?位置管理器BiSS-C介紹
    的頭像 發(fā)表于 08-13 03:40 ?4673次閱讀

    C2000位置管理器技術的BiSS-C解決方案介紹

    C2000DesignDRIVE位置管理器BiSS-C解決方案
    的頭像 發(fā)表于 04-12 07:13 ?5262次閱讀

    解讀Modbus通訊協(xié)議

    作為工控人,Modbus 通訊協(xié)議想必都不陌生,Modbus 通訊協(xié)議可以說是工業(yè)自動化領域應用最為廣泛的通訊
    的頭像 發(fā)表于 11-09 16:39 ?3501次閱讀

    C2000位置管理器BISS-C庫用戶指南

    電子發(fā)燒友網(wǎng)站提供《C2000位置管理器BISS-C庫用戶指南.pdf》資料免費下載
    發(fā)表于 11-09 15:19 ?5次下載
    <b class='flag-5'>C</b>2000位置管理器<b class='flag-5'>BISS-C</b>庫用戶指南