惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - 痞子衡

痞子衡嵌入式:如果你嫌MCU板卡工厂验收测试麻烦,不妨试试FATestSuite 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 痞子衡嵌入式:turbo-spiboot - 一种基于MCUBoot协议的二级SPI加载APP提速方案 痞子衡嵌入式:如果你在找针对i.MX RT系列的OTA参考设计,可以持续关注Tiny OTA 痞子衡嵌入式:Farewell, 我的写博故事2025 《痞子衡嵌入式半月刊》 第 120 期 痞子衡嵌入式:16MB以上NOR Flash地址模式切换会造成软复位后i.MXRT无法正常启动 痞子衡嵌入式:i.MXRT中FlexSPI外设速度上限的三个影响因子(数据手册里的纠结) 痞子衡嵌入式:在i.MXRTxxx下使能DMA动态链式传输误区及各外设驱动对DMA链式支持情况 痞子衡嵌入式:在i.MXRTxxx下使能DMA链式传输可达到SPI从设备接收速率上限50Mbps 痞子衡嵌入式:在i.MXRT下测试启动特性时可改写OTP Shadow寄存器而不烧OTP 痞子衡嵌入式:如果i.MXRT1xxx在Hab关闭时出现偶发性启动失败,请先检查JTAG电路 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.B)- FlexSPI NOR连接方式大全(RT1180) 《痞子衡嵌入式半月刊》 第 119 期 痞子衡嵌入式:从i.MXRT600用户手册UM里一个关于FlexSPI LUT长度的勘误说起 痞子衡嵌入式:i.MXRT1170使用FlexSPI 2nd引脚组连接串行NOR Flash启动时FDCB需特殊设置 痞子衡嵌入式:MDK5.40下从DFP包路径添加用户下载算法FLM文件的方法 痞子衡嵌入式:不处理i.MXRT1064片内Flash的RESET#引脚可能会导致无法启动或程序跑飞 痞子衡嵌入式:聊聊i.MXRT1024/1064片内4MB Flash的SFDP表易丢失导致的烧录异常 痞子衡嵌入式:在含多个i.MXRT的主从系统中共享一颗Flash启动的方法与实践(下篇)
痞子衡嵌入式:i.MXRT10xx系列ROM的UART SDP设置不同波特率的...
痞子衡 · 2025-05-27 · via 博客园 - 痞子衡

  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT10xx系列ROM的UART SDP设置不同波特率的方法

  恩智浦 i.MXRT 四位数系列目前分为 RT10xx 和 RT11xx,前者的 BootROM 支持的上位机通信协议叫 SDP(来自于 i.MX),后者通信协议是 blhost(来自于 Kinetis),两种协议都实现了通过 UART/USB 与上位机通信的一系列命令。blhost 协议支持 UART 波特率自动识别,而 SDP 协议不支持自动识别,但可以通过专用命令设置不同 UART 波特率。

  近期有一个 RT1011 日本客户,在查看芯片参考手册时发现 System Boot 章节介绍了 UART SDP 可以支持设置不同的波特率,客户想知道能够支持的最大波特率,这点在手册里并未提及,而在恩智浦官方工具(Secure Provisioning Tool,简称 SPT)里可设的最大波特率是 460800(V10 版本),那么这就是极限吗?今天痞子衡来实测一下:

一、SDP协议简介

  SDP 协议在不同的 RT10xx 型号上是有区别的,其中在 RT1060 上协议最全,一共支持 7 条命令,而在 RT1010 上则简化为仅支持 4 条命令。不管怎样 SET_BAUDRATE 是基础命令。

  SDP 协议命令组成也足够简单,固定 16 个字节,由 COMMAND TYPE + ADDRESS + FORMAT + DATA COUNT + DATA + RESERVED 组成,简单又粗暴。

二、Secure Provisioning Tool设置

  恩智浦官方工具 SPT 里集成了 SDP 协议支持,我们只需要在界面里选择不同波特率即可,从最低 14400 到最高 460800,不过遗憾的是波特率窗口并不支持用户手动输入,所以在这个上位机工具里没法测极限波特率。

  熟悉这个上位机的朋友应该知道,其底层依赖得是 SPSDK,这是一个基于 Python 实现的命令集合 SDK。其用于 SDP 通信的工具是 sdphost,命令列表里有 set-baudrate 支持,我们当然可以使用这个工具来做测试。

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

三、在RT1010上手工测试

  痞子衡也开发过一个上位机 MCUBootUtility (这是官方工具 SPT 的前身),其底层依赖得是 \tools\sdphost\win\sdphost.exe,这个程序是最早的 SDP 协议工具,但是比较遗憾的是其不支持 set-baudrate 命令并且该工具已经不再升级。今天我们就结合这个古早的工具以及串口调试助手来做极限波特率测试,顺便了解一下 SDP 协议里的数据包格式。

  准备一块 RT1010 板卡,调到 SDP 模式,将 UART 连接好便可以开始测试,先用 sdphost.exe -- error-status 命令测试一下连通性(-d 参数可以看到与上位机交互数据包),波特率仅能设置为默认的 115200:

  当然也可以直接用串口调试助手(依然是默认 115200 波特率),手工打入 16 个字节的 error-status 数据包,看看结果是不是和 sdphost.exe 一致:

  这时候继续在串口调试助手里使用默认 115200 波特率发送 set-baudrate 数据包,注意数据包里 ADDRESS 为波特率值时是大端模式(0x0000E100 对应波特率 57600),当收到 RT1010 传来的 ACK 0x900dd009 时表明波特率设置"成功"(这里有个误区,MCU 发送 ACK 并不是用新设置的波特率,而用得与当前上位机一致的波特率,这个 ACK 仅仅代表正确收到了上位机 set-baudrate 命令)。如果在此基础上再次设波特率,则需要调整串口调试助手里的波特率与上次设置一致。

  要测试新波特率是否设置成功,还是要继续使用 sdphost -- error-status 命令做一次新的测试。最终痞子衡实测 RT1010 上最高波特率可达 512000 (614400 测试失败),由于痞子衡基于的环境里 Host 是 RT1010-EVK 上的 DAP-LINK 里自带的 USB 转 UART 功能,实际最高波特率性能可能也受此影响,大家可以选择更高性能的 Host 做更极限的测试。

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

欢迎订阅

文章会同时发布到我的 博客园CSDN微信公众号知乎与非网电子技术应用AET电子星球51CTO 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。