久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

痞子衡
認(rèn)證:普通會(huì)員
作者動(dòng)態(tài)
一種多MCU分時(shí)復(fù)用Flash啟動(dòng)的創(chuàng)新方法(下)
2星期前
一種多MCU分時(shí)復(fù)用Flash啟動(dòng)的創(chuàng)新方法(上)
3星期前
RT10xx系列UART SDP能設(shè)置多高波特率?
06-06 09:51
有時(shí)候MCU片內(nèi)合封Flash就是個(gè)黑盒子!
05-15 13:52
有人說高性能MCU片內(nèi)合封Flash不可靠?
05-13 14:33

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 波特率自動(dòng)識(shí)別,而 SDP 協(xié)議不支持自動(dòng)識(shí)別,但可以通過專用命令設(shè)置不同 UART 波特率。

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

一、SDP協(xié)議簡(jiǎn)介

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

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

二、Secure Provisioning Tool設(shè)置

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

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

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

三、在RT1010上手工測(cè)試

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

準(zhǔn)備一塊 RT1010 板卡,調(diào)到 SDP 模式,將 UART 連接好便可以開始測(cè)試,先用 sdphost.exe -- error-status 命令測(cè)試一下連通性(-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 對(duì)應(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è)置一致。

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

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

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關(guān)注 41
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧