色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

嵌入式測量器件使用簡單的串行接口

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-06-13 15:37 ? 次閱讀

簡單串行接口(SSI)是一種二進制協議,用于與模擬嵌入式測量設備(78M6610+LMU、78M6610+PSU和MAX78630+PPM)通信

概述

簡單串行接口(SSI)是一種二進制串行協議,用于ADI公司嵌入式測量設備(EMD)上的UART通信。本應用筆記通過詳細說明可用命令和相應的源代碼示例來介紹該協議的特性和結構。該協議的主要特點是:

簡單性:該協議可以在主機處理器上實現,而不會占用過多的系統資源。

健壯性:每個數據包都包含一個標頭、字節計數、有效負載和校驗和。如果命令的標頭、字節計數和校驗和不正確,則收件人可以拒絕數據包。

效率:數據以二進制編碼而不是字符編碼值交換,命令不需要回顯到主機。此外,可以在單個數據包中發送多個命令,以進一步減少通信開銷。

支持多點系統:目標設備尋址能力支持在單個串行總線上連接多個目標設備。

SSI 是一種基于數據包的協議,可實現主從或命令-響應通信。SSI 中使用兩種類型的數據包:主數據包,由主機設備發出;和從數據包,由從屬 EMD 發出,以響應來自主機或主站的命令。

下載相應的源代碼。

串行接口選擇

主站通過三個串行接口訪問模擬 EMD:UART、SPI 和 I2C。SSI 使用 UART 接口,必須相應地配置 EMD 才能使用 SSI。這是通過器件相應引腳上的上拉或下拉電阻完成的。有關配置器件串行接口的說明,請參閱器件數據手冊。

設備地址

EMD 的器件地址 (SSID) 通過 DevAddr 寄存器和器件的一個或兩個引腳的組合進行設置,具體取決于器件的封裝。有關設置器件SSID的說明,請參閱器件數據手冊。

主數據包

主數據包始終包含以下內容:

單字節標頭,0xAA

單字節數據包長度指示器,它是數據包中所有字節的計數,包括其自身

有效負載,可以包含多個命令

校驗和,它是數據包中所有前面字節的模 256 和的二進制補碼,從標頭字節開始,包括有效負載的最后一個字節

從上面的描述中,有一些特征與所有有效的主數據包有關:

主數據包的長度始終為 4 個或更多字節。

主數據包的長度不能超過 255 字節。

字段字節計數為一個字節。

數據包的最大長度受從設備的命令緩沖區限制。請參閱從器件的數據手冊,了解該器件的最大命令長度。

圖 1 說明了主數據包的結構。

wKgZomSIHLaACqCQAAARqTdbU-o998.png

圖1.SSI 主數據包結構。

從數據包

從數據包的結構因從設備從主設備接收的命令而異。最短的從數據包是單字節響應,表示對收到的命令進行肯定或否定確認。在 SSI 中實現的所有單字節數據包如表 1 所示。

法典 定義
0xAD 沒有數據的正確認是接收和執行的有效命令,但不需要數據響應。
0xB0 否定確認
0xBC 錯誤命令是從設備不支持的已接收命令。
0xBD 校驗和錯誤是在主數據包中檢測到的校驗和錯誤。
0xBF 緩沖區溢出表示主數據包太長。

包含數據的從數據包遵循與主數據包相同的一般結構,包括標頭字節、字節計數、有效負載和校驗和,如圖 2 所示。

多字節從數據包的標頭字節可以是0xAA(用數據確認)或0xAE(自動報告數據包)。自動報告數據包由 78M6610+PSU 等設備生成,這些設備可以定期自動傳輸測量數據。由于自動報告數據和命令響應數據有不同的標頭,因此主機可以在從站發送自動報告數據時發送命令和接收響應。

wKgaomSIHLeAMvqcAAAPuQkpzdM302.png

圖2.多字節從數據包。

主命令

SSI主站和從站之間的大多數通信都涉及請求從設備中寄存器的內容并寫入這些寄存器。典型的命令序列包括向從站發送目標寄存器地址,并發出讀或寫命令以從目標地址開始讀取或寫入一個或多個寄存器。其他命令允許在單個總線上具有多個從設備的系統中選擇或取消選擇單個從設備。實現自動報告的設備還可以接受命令來更改自動報告數據包的內容。

當前版本的 SSI 中支持的所有主命令如表 2 所示。請注意,所有模擬 EMD 可能無法響應所有命令。請參閱器件的數據手冊,以確定哪些命令可以在特定器件中執行。

命令 參數 描述
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 協議,并為構建自定義應用程序奠定基礎。提供的源代碼不執行任何特定的應用程序;但是,它確實提供了與模擬EMD接口所需的基本功能。提供的源代碼文件及其說明列于表 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,無符號字符×數據) 函數 ssi_get_checksum()

計算 SSI 數據包的相應校驗和。

int ssi_send_packet(無符號字符byte_cnt,無符號字符 x 有效負載) 函數 ssi_send_packet()

需要有效負載字節計數和指向有效負載的指針作為其參數。如果數據包字節計數(有效負載字節計數 + 3)大于從設備頭文件中定義的MAX_PACKET_LEN,則 ssi_send_packet() 將返回 -1 以指示故障。如果沒有,該函數通過將標頭、數據包字節計數添加到有效負載的前面來完成數據包構建,然后調用 ssi_get_checksum() 將校驗和添加到數據包的末尾。然后,該函數將數據包一次發送到 ssi_tx_byte()。

maxim_ssi.c 提供的所有剩余功能都調用 ssi_send_packet() 并提供嵌入式測量應用所需的基本功能。但是,最終用戶可以自由構建自定義數據包并從其應用程序調用 ssi_send_packet()。如果他們選擇這樣做,請務必記住,該函數僅期望有效負載中的字節數作為其參數和指向該有效負載的指針。標頭、實際數據包字節計數和校驗和由函數添加。

int ssi_deselect_device(void) 函數 ssi_deselect_device() 構建適當的 SSI 有效負載,用于在串行總線上發送 DE_SELECT_TRGT (0xC0)

master 命令,然后調用函數 ssi_send_packet()。該函數返回從設備響應或 -1 以指示故障。

在任何應用程序的開頭調用此函數,以確保在繼續之前未選擇任何設備。圖 3 顯示了調用 ssi_deselect_device 函數的預期主數據包和從屬響應。

wKgZomSIHLqAa5EKAAAY0FfsHEM915.png

int ssi_select_device(unsigned char ssid) 函數 ssi_select_device()

需要一個字節作為其參數,即要選擇從設備的 SSID。然后,該函數構建適當的 SSI 有效負載,用于在串行總線上發送 SELECT_TRGT(0xCF 或 0xC1–0xCE)主命令,然后調用函數 ssi_send_packet()。該函數返回從設備響應或 -1 以指示故障。圖 4 和圖 5 顯示了調用 ssi_select_device() 函數的預期主數據包和從屬響應。

wKgaomSIHLuAJumfAAAaCpwZwVE997.png

wKgaomSIHL6AGpswAAAYrlXqGnk041.png

int ssi_set_rw_adrs(emd_register_t adrs) 函數 ssi_set_rw_adrs()

需要枚舉類型的emd_register_t作為其參數。此數據類型表示嵌入式測量設備寄存器的字地址。參數可以是關聯從設備頭文件中定義的寄存器的名稱,也可以是單詞地址的整數表示形式。

該函數構建適當的 SSI 有效負載以發送 RW_ADRS (0xA3) 主命令,然后調用函數 ssi_send_packet()。該函數返回從設備響應或 -1 以指示故障。圖 6 顯示了調用 ssi_set_rw_adrs() 函數的預期主數據包和從屬響應。

wKgZomSIHL-AB-OUAAAhabnFnGE279.png

int ssi_clear_adrs(void) 函數ssi_clear_adrs構建適當的 SSI 有效負載以發送 CLEAR_ADRS (0xA0)

master 命令,然后調用函數 ssi_send_packet()。該函數要么返回從設備響應,要么返回 -1 以指示故障。圖 7 顯示了調用 ssi_clear_adrs 函數的預期主數據包和從屬響應。

wKgaomSIHMGAcdCZAAAYIyfatvM738.png

無符號字符 x ssi_read_3bytes(emd_register_t ADRS) 函數 ssi_read_3bytes()

期望將寄存器的字地址作為參數讀取。該函數構建適當的 SSI 有效負載來設置目標地址并從該地址讀取三個字節,然后調用函數 ssi_send_packet()。該函數返回指向從屬設備的響應的指針。圖 8 顯示了調用 ssi_read_3bytes() 函數的預期主數據包和從屬響應。

wKgZomSIHMKADLjTAAAxwPYqnHE687.png

int ssi_write_3bytes(emd_register_t ADRS, unsigned char x data) 函數 ssi_write_3bytes()

期望寫入寄存器的字地址和指向要寫入的數據的指針作為其參數。該函數構建適當的 SSI 有效負載以設置目標地址并將三個字節寫入該地址,然后調用函數 ssi_send_packet()。該函數返回從設備響應或 -1 以指示故障。圖 9 顯示了調用 ssi_write_3bytes() 函數的預期主數據包和從屬響應。

wKgZomSIHMSAS8PPAAApbbe9xjM865.png

無符號字符 x ssi_read_Nbytes(emd_register_t ADRS, 無符號字符 n_bytes) 函數 ssi_read_Nbytes()

期望讀取第一個寄存器的字地址和請求的字節數。該函數構建適當的 SSI 有效負載來設置目標地址并從該地址讀取 N 個字節,然后調用函數 ssi_send_packet()。該函數返回指向從屬設備的響應的指針。圖 10 顯示了調用函數 ssi_read_Nbytes() 的預期主數據包和從屬響應。

wKgaomSIHMaAXP1gAAA25CMqEIw520.png

int ssi_write_Nbytes(emd_register_t ADRS, 無符號字符 x 數據, 無符號字符 n_bytes) 函數 ssi_write_Nbytes()

期望寫入寄存器的起始地址、指向要寫入的數據的指針以及要寫入的字節數作為其參數。該函數構建適當的 SSI 有效負載以設置目標地址并從給定地址開始寫入 N 個字節,然后調用函數 ssi_send_packet()。該函數返回從設備響應或 -1 以指示故障。圖 11 顯示了調用 ssi_write_Nbytes() 函數的預期主數據包和從屬響應。

wKgaomSIHMeARtoUAAAuu6NHgwg206.png

maxim_em_device.h

頭文件 maxim_em_device.h 為那些可能在其應用程序中使用部分或全部器件的開發人員提供了一種定義應用中使用的模擬 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()由用戶自行決定刪除;它僅為方便起見而提供。

結論

ADI公司EMD的簡單串行接口顧名思義:簡單。本應用筆記和隨附的源代碼旨在闡明協議,并在盡可能短的開發時間內啟動并運行應用。

審核編輯:郭婷

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

    關注

    68

    文章

    19259

    瀏覽量

    229653
  • 嵌入式
    +關注

    關注

    5082

    文章

    19104

    瀏覽量

    304825
  • 串行接口
    +關注

    關注

    3

    文章

    327

    瀏覽量

    42603
收藏 人收藏

    評論

    相關推薦

    J210組成簡單電容測量器電路圖

    圖中所示是用J210組成的簡單電容測量器線路。由于單穩電路的輸出脈寬與外接元件RX、CX成比例關系,所以當
    發表于 09-25 22:12 ?977次閱讀
    J210組成<b class='flag-5'>簡單</b>電容<b class='flag-5'>測量器</b>電路圖

    用Labview 和USB 接口實現的電容測量器

    Hello,大家好, 我是LABVIEW新手,我導師現在讓我做一個 電容測量器, 把capacitance 用US(uart)相連到PC, 用pc裝好的Labview 來實現電容數值的讀取。我對整個project不是太理解。不知道有沒有人做過相關的,或者有任何意見都可以提。 謝謝 特別是labview這一塊。
    發表于 10-09 23:30

    脈搏測量器

    有沒有對脈搏測量器熟悉的大神,可以分享點經驗給我這個菜鳥嗎
    發表于 06-19 22:14

    高壓脈沖幅值測量器電路及制作

    高壓脈沖幅值測量器電路及制作
    發表于 04-14 10:42 ?23次下載
    高壓脈沖幅值<b class='flag-5'>測量器</b>電路及制作

    高值電阻測量器

    高值電阻測量器
    發表于 04-30 23:32 ?838次閱讀
    高值電阻<b class='flag-5'>測量器</b>

    電容測量器電路圖

    電容測量器電路圖
    發表于 04-09 12:08 ?1661次閱讀
    電容<b class='flag-5'>測量器</b>電路圖

    邏輯電平測量器電路圖

    邏輯電平測量器電路圖
    發表于 04-09 22:07 ?864次閱讀
    邏輯電平<b class='flag-5'>測量器</b>電路圖

    邏輯電平測量器電路圖

    邏輯電平測量器電路圖
    發表于 04-09 22:09 ?633次閱讀
    邏輯電平<b class='flag-5'>測量器</b>電路圖

    音頻測量器

    音頻測量器
    發表于 09-23 16:36 ?597次閱讀
    音頻<b class='flag-5'>測量器</b>

    身高體重測量器控制系統電路圖

    身高體重測量器控制系統電路圖如下圖所示:
    發表于 07-19 09:53 ?5988次閱讀
    身高體重<b class='flag-5'>測量器</b>控制系統電路圖

    如何自己動手制作一個自動連續的肺活量測量器

    在儀器室還沒有配備專門的肺活量測量儀器之前,我設計制作了一個自動連續的肺活量測量器測量效果非常理想,能實現自動裝水,連續測量
    的頭像 發表于 08-04 11:19 ?1.6w次閱讀

    由INA117構成的測量器件電源電流電路

    關鍵詞:INA117 , 測量器件 , 電源電流 如圖所示為由INA117構成的測量器件電源電流電路。該電路在測試器件的上端與下端分別串聯一個取樣電阻Rs,流過測試器件電流也同樣流過R
    發表于 02-19 14:57 ?602次閱讀

    雨量檢測器_雷達雨量測量器介紹

    雨量檢測器又稱雨量檢測儀、雷達雨量測量器,雨量檢測器是用于測量降水類型和降水強度的儀器,相比傳統機械雨量檢測方式更加靈敏和快速,可以分辨出雨、雪和冰雹的類型以及降雨的強度,而且無需擔心樹葉等物體覆蓋在探測器表面影響降雨檢測,廣
    的頭像 發表于 02-01 11:48 ?1157次閱讀
    雨量檢測器_雷達雨量<b class='flag-5'>測量器</b>介紹

    嵌入式測量器件使用簡單串行接口簡介

    簡單串行接口(SSI)是一種二進制串行協議,用于在Maxim Integrated的嵌入式測量
    的頭像 發表于 02-20 09:35 ?1110次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>測量器件</b>使用<b class='flag-5'>簡單</b>的<b class='flag-5'>串行</b><b class='flag-5'>接口</b>簡介

    頻率測量器常見故障及預防措施

    頻率測量器是一種用于測量電信號頻率的儀器。它通常由一個計數器和一個穩定的參考信號源組成。在測量過程中,測量器會將待測信號與參考信號進行比較,并計算出頻率差異。頻率
    的頭像 發表于 06-08 18:07 ?2138次閱讀
    主站蜘蛛池模板: 久久视频在线视频观品15| 久久精品国产亚洲AV忘忧草蜜臀 | 18国产精品白浆在线观看免费| 在线中文字幕亚洲日韩| 99精品免费久久久久久久久日本| 国产99热在线观看| 好好的曰com久久| 免费一级特黄欧美大片久久网| 日本湿姝在线观看| 亚洲AV久久无码精品九号软件| 20岁中国男同志china1069| 成年人视频在线免费看| 国产高潮国产高潮久久久久久| 久久久这里有精品999| 欧美亚洲另类丝袜自拍动漫| 亚洲国产AV无码综合在线| 综合亚洲桃色第一影院| 被室友C哭调教双性| 精品国产乱码久久久久久免费流畅 | 亚洲欧美中文字幕先锋| 99热久久这里只精品国产WWW| 粉嫩国产14xxxxx0000| 精品国产午夜福利在线观看蜜月| 人妻仑乱少妇88MAV| 亚洲精品影院久久久久久| 草莓视频在线看免费高清观看| 国产一区二区精品视频| 久久久97丨国产人妻熟女| 丝袜美女被艹| 做暖暖视频在线看片免费| 国产女人与黑人在线播放| 美女屁股软件| 校草让我脱了内裤给全班看| H狠狠躁死你H| 好湿好滑好硬好爽好深视频| 精品国产成a人在线观看| 四虎国产一区| 97视频在线免费| 久久精品动漫99精品动漫| 热久久综合这里只有精品电影| 午夜噜噜噜私人影院在线播放|