91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

RT10xx系列UART SDP能設(shè)置多高波特率?

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

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

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

一、SDP協(xié)議簡介

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

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

二、Secure Provisioning Tool設(shè)置

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

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

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

三、在RT1010上手工測試

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

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

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

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

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

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

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關(guān)注 41
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧
主站蜘蛛池模板: 金门县| 长葛市| 松阳县| 南岸区| 砚山县| 德钦县| 麻栗坡县| 秦皇岛市| 文昌市| 娄烦县| 炉霍县| 元朗区| 河曲县| 恭城| 隆昌县| 名山县| 合阳县| 行唐县| 页游| 东海县| 南通市| 黄梅县| 平阴县| 大连市| 汕尾市| 出国| 香格里拉县| 闵行区| 克拉玛依市| 行唐县| 郎溪县| 息烽县| 榆林市| 福鼎市| 仪陇县| 屯留县| 永春县| 西贡区| 承德市| 新津县| 政和县|