• 正文
    • 一、SDP協(xié)議簡介
    • 二、Secure Provisioning Tool設置
    • 三、在RT1010上手工測試
  • 相關推薦
申請入駐 產業(yè)圖譜

RT10xx系列UART SDP能設置多高波特率?

05/28 15:20
882
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是痞子衡,是正經(jīng)搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT10xx系列ROMUART SDP設置不同波特率的方法。

恩智浦 i.MXRT 四位數(shù)系列目前分為 RT10xx 和 RT11xx,前者的 BootROM 支持的上位機通信協(xié)議叫 SDP(來自于 i.MX),后者通信協(xié)議是 blhost(來自于 Kinetis),兩種協(xié)議都實現(xiàn)了通過 UART/USB 與上位機通信的一系列命令。blhost 協(xié)議支持 UART 波特率自動識別,而 SDP 協(xié)議不支持自動識別,但可以通過專用命令設置不同 UART 波特率。

近期有一個 RT1011 日本客戶,在查看芯片參考手冊時發(fā)現(xiàn)?System Boot?章節(jié)介紹了 UART SDP 可以支持設置不同的波特率,客戶想知道能夠支持的最大波特率,這點在手冊里并未提及,而在恩智浦官方工具(Secure Provisioning Tool,簡稱 SPT)里可設的最大波特率是 460800(V10 版本),那么這就是極限嗎?今天痞子衡來實測一下:

一、SDP協(xié)議簡介

SDP 協(xié)議在不同的 RT10xx 型號上是有區(qū)別的,其中在 RT1060 上協(xié)議最全,一共支持 7 條命令,而在 RT1010 上則簡化為僅支持 4 條命令。不管怎樣 SET_BAUDRATE 是基礎命令。

SDP 協(xié)議命令組成也足夠簡單,固定 16 個字節(jié),由 COMMAND TYPE + ADDRESS + FORMAT + DATA COUNT + DATA + RESERVED 組成,簡單又粗暴。

二、Secure Provisioning Tool設置

恩智浦官方工具 SPT 里集成了 SDP 協(xié)議支持,我們只需要在界面里選擇不同波特率即可,從最低 14400 到最高 460800,不過遺憾的是波特率窗口并不支持用戶手動輸入,所以在這個上位機工具里沒法測極限波特率。

熟悉這個上位機的朋友應該知道,其底層依賴得是 SPSDK,這是一個基于 Python 實現(xiàn)的命令集合 SDK。其用于 SDP 通信的工具是 sdphost,命令列表里有 set-baudrate 支持,我們當然可以使用這個工具來做測試。

https://spsdk.readthedocs.io/en/latest/apps/sdphost.html

三、在RT1010上手工測試

痞子衡也開發(fā)過一個上位機 MCUBootUtility (這是官方工具 SPT 的前身),其底層依賴得是 toolssdphostwinsdphost.exe,這個程序是最早的 SDP 協(xié)議工具,但是比較遺憾的是其不支持 set-baudrate 命令并且該工具已經(jīng)不再升級。今天我們就結合這個古早的工具以及串口調試助手來做極限波特率測試,順便了解一下 SDP 協(xié)議里的數(shù)據(jù)包格式。

準備一塊 RT1010 板卡,調到 SDP 模式,將 UART 連接好便可以開始測試,先用 sdphost.exe -- error-status 命令測試一下連通性(-d 參數(shù)可以看到與上位機交互數(shù)據(jù)包),波特率僅能設置為默認的 115200:

當然也可以直接用串口調試助手(依然是默認 115200 波特率),手工打入 16 個字節(jié)的 error-status 數(shù)據(jù)包,看看結果是不是和 sdphost.exe 一致:

這時候繼續(xù)在串口調試助手里使用默認 115200 波特率發(fā)送 set-baudrate 數(shù)據(jù)包,注意數(shù)據(jù)包里 ADDRESS 為波特率值時是大端模式(0x0000E100 對應波特率 57600),當收到 RT1010 傳來的 ACK 0x900dd009 時表明波特率設置"成功"(這里有個誤區(qū),MCU 發(fā)送 ACK 并不是用新設置的波特率,而用得與當前上位機一致的波特率,這個 ACK 僅僅代表正確收到了上位機 set-baudrate 命令)。如果在此基礎上再次設波特率,則需要調整串口調試助手里的波特率與上次設置一致。

要測試新波特率是否設置成功,還是要繼續(xù)使用 sdphost -- error-status 命令做一次新的測試。最終痞子衡實測 RT1010 上最高波特率可達 512000 (614400 測試失?。?,由于痞子衡基于的環(huán)境里 Host 是 RT1010-EVK 上的 DAP-LINK 里自帶的 USB 轉 UART 功能,實際最高波特率性能可能也受此影響,大家可以選擇更高性能的 Host 做更極限的測試。

至此,i.MXRT10xx系列ROM的UART SDP設置不同波特率的方法痞子衡便介紹完畢了,掌聲在哪里~~~

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

碩士畢業(yè)于蘇州大學電子信息學院,目前就職于恩智浦(NXP)半導體MCU系統(tǒng)部門,擔任嵌入式系統(tǒng)應用工程師。痞子衡會定期分享嵌入式相關文章