簡單串行接口(SSI)是用于與Maxim嵌入式測量器件(78M6610+LMU、78M6610+PSU和MAX78630+PPM)通信的二進制協議。
概述
簡單串行接口(SSI)是一種二進制串行協議,用于在Maxim Integrated的嵌入式測量設備(EMD)上進行UART通信。本應用筆記通過詳細說明可用命令和相應的源代碼示例來介紹該協議的特性和結構。該協議的主要特點是:
簡單性:該協議可以在主機處理器上實現,而不會占用過多的系統資源。
健壯性:每個數據包都包含一個標頭、字節計數、有效負載和校驗和。如果命令的標頭、字節計數和校驗和不正確,則收件人可以拒絕數據包。
效率:數據以二進制編碼而不是字符編碼值交換,命令不需要回顯到主機。此外,可以在單個數據包中發送多個命令,以進一步減少通信開銷。
支持多點系統:目標設備尋址能力支持在單個串行總線上連接多個目標設備。
SSI 是一種基于數據包的協議,可實現主從或命令-響應通信。SSI 中使用兩種類型的數據包:主數據包,由主機設備發出;和從數據包,由從屬 EMD 發出,以響應來自主機或主站的命令。
下載相應的源代碼。
串行接口選擇
主站通過三個串行接口訪問Maxim EMD:UART、SPI和I2C。SSI 使用 UART 接口,必須相應地配置 EMD 才能使用 SSI。這是通過器件相應引腳上的上拉或下拉電阻完成的。有關配置器件串行接口的說明,請參閱器件數據手冊。
設備地址
EMD 的器件地址 (SSID) 通過 DevAddr 寄存器和器件的一個或兩個引腳的組合進行設置,具體取決于器件的封裝。有關設置器件SSID的說明,請參閱器件數據手冊。
主數據包
主數據包始終包含以下內容:
單字節標頭,0xAA
單字節數據包長度指示器,它是數據包中所有字節的計數,包括其自身
有效負載,可以包含多個命令
校驗和,它是數據包中所有前面字節的模 256 和的二進制補碼,從標頭字節開始,包括有效負載的最后一個字節
從上面的描述中,有一些特征與所有有效的主數據包有關:
主數據包的長度始終為 4 個或更多字節。
主數據包的長度不能超過 255 字節。
字段字節計數為一個字節。
數據包的最大長度受從設備的命令緩沖區限制。請參閱從器件的數據手冊,了解該器件的最大命令長度。
圖 1 說明了主數據包的結構。
圖1.SSI 主數據包結構。
從數據包
從數據包的結構因從設備從主設備接收的命令而異。最短的從數據包是單字節響應,表示對收到的命令進行肯定或否定確認。在 SSI 中實現的所有單字節數據包如表 1 所示。
表 1.單字節從屬數據包
法典 | 定義 |
---|---|
0xAD | 沒有數據的正確認是接收和執行的有效命令,但不需要數據響應。 |
0xB0 | 否定確認 |
0xBC | 錯誤命令是從設備不支持的已接收命令。 |
0xBD | 校驗和錯誤是在主數據包中檢測到的校驗和錯誤。 |
0xBF | 緩沖區溢出表示主數據包太長。 |
包含數據的從數據包遵循與主數據包相同的一般結構,包括標頭字節、字節計數、有效負載和校驗和,如圖 2 所示。
多字節從數據包的標頭字節可以是0xAA(用數據確認)或0xAE(自動報告數據包)。自動報告數據包由 78M6610+PSU 等設備生成,這些設備可以定期自動傳輸測量數據。由于自動報告數據和命令響應數據有不同的標頭,因此主機可以在從站發送自動報告數據時發送命令和接收響應。
圖2.多字節從數據包。
主命令
SSI主站和從站之間的大多數通信都涉及請求從設備中寄存器的內容并寫入這些寄存器。典型的命令序列包括向從站發送目標寄存器地址,并發出讀或寫命令以從目標地址開始讀取或寫入一個或多個寄存器。其他命令允許在單個總線上具有多個從設備的系統中選擇或取消選擇單個從設備。實現自動報告的設備還可以接受命令來更改自動報告數據包的內容。
當前版本的 SSI 中支持的所有主命令如表 2 所示。請注意,所有Maxim EMD可能不會響應所有命令。請參閱器件的數據手冊,以確定哪些命令可以在特定器件中執行。
表 2.主命令
命令 | 參數 | 描述 |
---|---|---|
0xA0 | 那 | |
0xA1 | 1 字節,地址 [7:0] | 設置目標地址位 [7:0]。 |
0xA2 | 1 字節,地址 [15:8] | 設置目標地址位 [15:8]。 |
0xA3 | 2 字節,地址 [7:0],[15:8] | 設置目標地址位 [15:0]。 |
0xD0 | 數據 | 寫入字節,從目標地址開始,由字節計數的剩余部分設置。 |
0xD1-0xDF | 數據 | 從目標地址開始寫入 1–15 個字節。 |
0xE0 | 1 字節,字節數 | 從目標地址開始讀取字節,需要指示要讀取的字節數的參數。 |
0xE1-0xEF | 那 | 從目標地址開始讀取 1–15 個字節,不需要參數,使用低半字節。 |
0xAE | 那 | 安裝新的自動報告命令。 |
以下命令用于選擇和取消選擇目標設備 | ||
0xC0 | 那 | 取消選擇當前選定的從屬設備 |
0xC1-0xCE | 那 | 選擇目標設備,不需要參數,使用低半字節。 |
0xCF | 1 字節,設備的 SSID | 選擇目標設備,需要指示從設備SSID的參數 |
超時
當設備空閑(即等待來自主站或目標站的數據包)時,接收緩沖區指針將重置并指向第一個緩沖區位置。收到第一個字節時,設備會檢查它是 SSI 標頭還是應答 (0xAA)。如果是這樣,則重置超時計時器,并且每個后續接收字節也會重置計時器。如果在超時間隔內未收到任何字節,并且數據包被視為不完整,則設備將返回空閑狀態,而不發送任何內容。此時,主服務器可以重新發送最后一個命令或發送新命令。
當數據包損壞或未選擇目標時,可能會發生超時。主設備和從設備都必須實現超時。如果在接收數據包期間以當前波特率在大約 50 字節時間內未收到字節,則會發生超時。在重新發送命令之前,主服務器應至少等待此時間。
SSI 源代碼和示例
開發以下示例是為了幫助理解 SSI 協議,并為構建自定義應用程序奠定基礎。提供的源代碼不執行任何特定的應用程序;但是,它確實提供了與Maxim EMD接口所需的基本功能。提供的源代碼文件及其說明列于表 3 中。
表 3.示例源代碼文件及其說明
文件 | 描述 |
---|---|
maxim_ssi.c | SSI 讀取、寫入等的函數定義 |
maxim_ssi.h | 函數原型和 SSI 命令#defines |
maxim_em_device.h | 定義應用中使用的嵌入式測量設備的頭文件 |
78M6610_LMU.h | 嵌入式測量設備頭文件 |
78M6610_PSU.h | 嵌入式測量設備頭文件 |
MAX78630_PPM.h | 嵌入式測量設備頭文件 |
華華 | 客戶的硬件特定功能定義(ssi_tx_byte、ssi_rx_byte) |
呵呵 | 客戶的硬件特定功能原型 |
maxim_ssi.c 和 maxim_ssi.h
頭文件 maxim_ssi.h 提供 SSI 函數原型,并定義主命令、從屬響應和最大數據包長度。
maxim_ssi.c 提供以下功能:
無符號字符 ssi_get_checksum(無符號字符 CNT,無符號字符 X 數據)
int ssi_send_packet(無符號字符byte_cnt,無符號字符 x 有效負載)
int ssi_deselect_device(無效)
int ssi_select_device(unsigned char ssid)
國際ssi_set_rw_adrs(emd_register_t ADR)
int ssi_clear_adrs(無效)
無符號字符 x ssi_read_3bytes(emd_register_t ADR)
int ssi_write_3bytes(emd_register_t ADR,無符號字符 x 數據)
無符號字符 x ssi_read_Nbytes(emd_register_t 個 ADR,無符號字符n_bytes)
int ssi_write_Nbytes(emd_register_t ADR、無符號字符 x 數據、無符號字符n_bytes)
maxim_em_device.h 頭文件 maxim_em_device.h
為那些可能在其應用中使用部分或全部器件的開發人員提供了一種定義應用中使用的 Maxim EMD 的便捷方法。該文件僅具有可以注釋或取消注釋的#defines,具體取決于所使用的設備。
78M6610_LMU.h、78M6610_PSU.h、MAX78630_PPM.h 頭文件 78M6610_LMU.h、78M6610_PSU.h 和 MAX78630_PPM.h
通過使用枚舉類型emd_register_t使用戶應用程序代碼可讀,為所使用的嵌入式測量設備的寄存器提供別名。此外,還提供用于設備寄存器的位掩碼。
hw.c 和 hw.h
文件 hw.c 提供了函數 ssi_tx_byte() 和 ssi_rx_byte()。這是用戶實現其硬件特定函數調用的適當文件。可以使用的功能init_hardware()由用戶自行決定刪除;它僅為方便起見而提供。
結論
Maxim Integrated的EMD的簡單串行接口名副其實:簡單。本應用筆記和隨附的源代碼旨在闡明協議,并在盡可能短的開發時間內啟動并運行應用。
-
嵌入式
+關注
關注
5142文章
19553瀏覽量
315329 -
Maxim
+關注
關注
8文章
859瀏覽量
88386 -
寄存器
+關注
關注
31文章
5424瀏覽量
123487
發布評論請先 登錄
用Labview 和USB 接口實現的電容測量器
如何自己動手制作一個自動連續的肺活量測量器?
由INA117構成的測量器件電源電流電路
雨量檢測器_雷達雨量測量器介紹

評論