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

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

3天內(nèi)不再提示

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

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-02-20 09:35 ? 次閱讀

簡單串行接口(SSI)是用于與Maxim嵌入式測量器件(78M6610+LMU、78M6610+PSU和MAX78630+PPM)通信的二進制協(xié)議。

概述

簡單串行接口(SSI)是一種二進制串行協(xié)議,用于在Maxim Integrated的嵌入式測量設(shè)備(EMD)上進行UART通信。本應(yīng)用筆記通過詳細說明可用命令和相應(yīng)的源代碼示例來介紹該協(xié)議的特性和結(jié)構(gòu)。該協(xié)議的主要特點是:

簡單性:該協(xié)議可以在主機處理器上實現(xiàn),而不會占用過多的系統(tǒng)資源。

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

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

支持多點系統(tǒng):目標設(shè)備尋址能力支持在單個串行總線上連接多個目標設(shè)備。

SSI 是一種基于數(shù)據(jù)包的協(xié)議,可實現(xiàn)主從或命令-響應(yīng)通信。SSI 中使用兩種類型的數(shù)據(jù)包:主數(shù)據(jù)包,由主機設(shè)備發(fā)出;和從數(shù)據(jù)包,由從屬 EMD 發(fā)出,以響應(yīng)來自主機或主站的命令。

下載相應(yīng)的源代碼。

串行接口選擇

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

設(shè)備地址

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

主數(shù)據(jù)包

主數(shù)據(jù)包始終包含以下內(nèi)容:

單字節(jié)標頭,0xAA

單字節(jié)數(shù)據(jù)包長度指示器,它是數(shù)據(jù)包中所有字節(jié)的計數(shù),包括其自身

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

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

從上面的描述中,有一些特征與所有有效的主數(shù)據(jù)包有關(guān):

主數(shù)據(jù)包的長度始終為 4 個或更多字節(jié)。

主數(shù)據(jù)包的長度不能超過 255 字節(jié)。

字段字節(jié)計數(shù)為一個字節(jié)。

數(shù)據(jù)包的最大長度受從設(shè)備的命令緩沖區(qū)限制。請參閱從器件的數(shù)據(jù)手冊,了解該器件的最大命令長度。

圖 1 說明了主數(shù)據(jù)包的結(jié)構(gòu)。

pYYBAGPyzk2AE5CYAAAVJskm84E500.png?imgver=1


圖1.SSI 主數(shù)據(jù)包結(jié)構(gòu)。

從數(shù)據(jù)包

從數(shù)據(jù)包的結(jié)構(gòu)因從設(shè)備從主設(shè)備接收的命令而異。最短的從數(shù)據(jù)包是單字節(jié)響應(yīng),表示對收到的命令進行肯定或否定確認。在 SSI 中實現(xiàn)的所有單字節(jié)數(shù)據(jù)包如表 1 所示。

表 1.單字節(jié)從屬數(shù)據(jù)包

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

包含數(shù)據(jù)的從數(shù)據(jù)包遵循與主數(shù)據(jù)包相同的一般結(jié)構(gòu),包括標頭字節(jié)、字節(jié)計數(shù)、有效負載和校驗和,如圖 2 所示。

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

pYYBAGPyzk6AFqksAAARqMGFUQg882.png?imgver=1


圖2.多字節(jié)從數(shù)據(jù)包。

主命令

SSI主站和從站之間的大多數(shù)通信都涉及請求從設(shè)備中寄存器的內(nèi)容并寫入這些寄存器。典型的命令序列包括向從站發(fā)送目標寄存器地址,并發(fā)出讀或?qū)懨钜詮哪繕说刂烽_始讀取或?qū)懭胍粋€或多個寄存器。其他命令允許在單個總線上具有多個從設(shè)備的系統(tǒng)中選擇或取消選擇單個從設(shè)備。實現(xiàn)自動報告的設(shè)備還可以接受命令來更改自動報告數(shù)據(jù)包的內(nèi)容。

當前版本的 SSI 中支持的所有主命令如表 2 所示。請注意,所有Maxim EMD可能不會響應(yīng)所有命令。請參閱器件的數(shù)據(jù)手冊,以確定哪些命令可以在特定器件中執(zhí)行。

表 2.主命令

命令 參數(shù) 描述
0xA0
0xA1 1 字節(jié),地址 [7:0] 設(shè)置目標地址位 [7:0]。
0xA2 1 字節(jié),地址 [15:8] 設(shè)置目標地址位 [15:8]。
0xA3 2 字節(jié),地址 [7:0],[15:8] 設(shè)置目標地址位 [15:0]。
0xD0 數(shù)據(jù) 寫入字節(jié),從目標地址開始,由字節(jié)計數(shù)的剩余部分設(shè)置。
0xD1-0xDF 數(shù)據(jù) 從目標地址開始寫入 1–15 個字節(jié)。
0xE0 1 字節(jié),字節(jié)數(shù) 從目標地址開始讀取字節(jié),需要指示要讀取的字節(jié)數(shù)的參數(shù)。
0xE1-0xEF 從目標地址開始讀取 1–15 個字節(jié),不需要參數(shù),使用低半字節(jié)。
0xAE 安裝新的自動報告命令。
以下命令用于選擇和取消選擇目標設(shè)備
0xC0 取消選擇當前選定的從屬設(shè)備
0xC1-0xCE 選擇目標設(shè)備,不需要參數(shù),使用低半字節(jié)。
0xCF 1 字節(jié),設(shè)備的 SSID 選擇目標設(shè)備,需要指示從設(shè)備SSID的參數(shù)

超時

當設(shè)備空閑(即等待來自主站或目標站的數(shù)據(jù)包)時,接收緩沖區(qū)指針將重置并指向第一個緩沖區(qū)位置。收到第一個字節(jié)時,設(shè)備會檢查它是 SSI 標頭還是應(yīng)答 (0xAA)。如果是這樣,則重置超時計時器,并且每個后續(xù)接收字節(jié)也會重置計時器。如果在超時間隔內(nèi)未收到任何字節(jié),并且數(shù)據(jù)包被視為不完整,則設(shè)備將返回空閑狀態(tài),而不發(fā)送任何內(nèi)容。此時,主服務(wù)器可以重新發(fā)送最后一個命令或發(fā)送新命令。

當數(shù)據(jù)包損壞或未選擇目標時,可能會發(fā)生超時。主設(shè)備和從設(shè)備都必須實現(xiàn)超時。如果在接收數(shù)據(jù)包期間以當前波特率在大約 50 字節(jié)時間內(nèi)未收到字節(jié),則會發(fā)生超時。在重新發(fā)送命令之前,主服務(wù)器應(yīng)至少等待此時間。

SSI 源代碼和示例

開發(fā)以下示例是為了幫助理解 SSI 協(xié)議,并為構(gòu)建自定義應(yīng)用程序奠定基礎(chǔ)。提供的源代碼不執(zhí)行任何特定的應(yīng)用程序;但是,它確實提供了與Maxim EMD接口所需的基本功能。提供的源代碼文件及其說明列于表 3 中。

表 3.示例源代碼文件及其說明

文件 描述
maxim_ssi.c SSI 讀取、寫入等的函數(shù)定義
maxim_ssi.h 函數(shù)原型和 SSI 命令#defines
maxim_em_device.h 定義應(yīng)用中使用的嵌入式測量設(shè)備的頭文件
78M6610_LMU.h 嵌入式測量設(shè)備頭文件
78M6610_PSU.h 嵌入式測量設(shè)備頭文件
MAX78630_PPM.h 嵌入式測量設(shè)備頭文件
華華 客戶的硬件特定功能定義(ssi_tx_byte、ssi_rx_byte)
呵呵 客戶的硬件特定功能原型

maxim_ssi.c 和 maxim_ssi.h
頭文件 maxim_ssi.h 提供 SSI 函數(shù)原型,并定義主命令、從屬響應(yīng)和最大數(shù)據(jù)包長度。

maxim_ssi.c 提供以下功能:

無符號字符 ssi_get_checksum(無符號字符 CNT,無符號字符 X 數(shù)據(jù))

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 數(shù)據(jù))

無符號字符 x ssi_read_Nbytes(emd_register_t 個 ADR,無符號字符n_bytes)

int ssi_write_Nbytes(emd_register_t ADR、無符號字符 x 數(shù)據(jù)、無符號字符n_bytes)

maxim_em_device.h 頭文件 maxim_em_device.h
為那些可能在其應(yīng)用中使用部分或全部器件的開發(fā)人員提供了一種定義應(yīng)用中使用的 Maxim EMD 的便捷方法。該文件僅具有可以注釋或取消注釋的#defines,具體取決于所使用的設(shè)備。

78M6610_LMU.h、78M6610_PSU.h、MAX78630_PPM.h 頭文件 78M6610_LMU.h、78M6610_PSU.h 和 MAX78630_PPM.h
通過使用枚舉類型emd_register_t使用戶應(yīng)用程序代碼可讀,為所使用的嵌入式測量設(shè)備的寄存器提供別名。此外,還提供用于設(shè)備寄存器的位掩碼。

hw.c 和 hw.h
文件 hw.c 提供了函數(shù) ssi_tx_byte() 和 ssi_rx_byte()。這是用戶實現(xiàn)其硬件特定函數(shù)調(diào)用的適當文件??梢允褂玫墓δ躨nit_hardware()由用戶自行決定刪除;它僅為方便起見而提供。

結(jié)論

Maxim Integrated的EMD的簡單串行接口名副其實:簡單。本應(yīng)用筆記和隨附的源代碼旨在闡明協(xié)議,并在盡可能短的開發(fā)時間內(nèi)啟動并運行應(yīng)用。

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

    關(guān)注

    5059

    文章

    18973

    瀏覽量

    302033
  • Maxim
    +關(guān)注

    關(guān)注

    8

    文章

    859

    瀏覽量

    87059
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119816
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    用Labview 和USB 接口實現(xiàn)的電容測量器

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

    脈搏測量器

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

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

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

    高值電阻測量器

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

    電容測量器電路圖

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

    邏輯電平測量器電路圖

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

    邏輯電平測量器電路圖

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

    音頻測量器

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

    身高體重測量器控制系統(tǒng)電路圖

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

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

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

    由INA117構(gòu)成的測量器件電源電流電路

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

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

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

    頻率測量器常見故障及預(yù)防措施

    頻率測量器是一種用于測量電信號頻率的儀器。它通常由一個計數(shù)器和一個穩(wěn)定的參考信號源組成。在測量過程中,測量器會將待測信號與參考信號進行比較,并計算出頻率差異。頻率
    的頭像 發(fā)表于 06-08 18:07 ?2060次閱讀

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

    簡單串行接口(SSI)是一種二進制協(xié)議,用于與模擬嵌入式測量設(shè)備(78M6610+LMU、78M6610+PSU和MAX78630+PPM)
    的頭像 發(fā)表于 06-13 15:37 ?786次閱讀
    <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>