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

  恩智浦 i.MXRT 四位数系列目前分为 RT10xx 和 RT11xx,前者的 BootROM 支持的上位机通信协议叫 SDP(来自于 i.MX),后者通信协议是 blhost(来自于 Kinetis),两种协议都实现了通过 UART/USB 与上位机通信的一系列命令。

  近期有一个 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 仅仅代表正确收到了上位机命令)。如果在此基础上再次设波特率,则需要调整串口调试助手里的波特率与上次设置一致。

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

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

欢迎订阅

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

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

痞子衡嵌入式:i.MXRT10xx系列ROM的UART SDP设置不同波特率的方法与实践的更多相关文章

  1. 痞子衡嵌入式:大话双核i.MXRT1170之单独在线调试从核工程的方法(IAR篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170下单独在线调试从核工程的方法(基于IAR). 两年前痞子衡写过一篇<双核i.MXRT1170之Cortex-M ...

  2. 痞子衡嵌入式:MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异. 程序函数库是一个包含已经编译好代码和数据的函数集合,这 ...

  3. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(2)- KBOOT形态(ROM/Bootloader/Flashloader)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT形态. 痞子衡在前一篇文章里简介了 KBOOT架构,我们知道KBOOT是一个完善的Bootl ...

  4. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(11)- KBOOT特性(ROM API)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之ROM API特性. KBOOT的ROM API特性主要存在于ROM Bootloader ...

  5. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列ROM中的FlexSPI驱动API实现IAP. 痞子衡的技术交流群里经常有群友提问: i.MXRT中的FlexSPI驱动 ...

  6. 痞子衡嵌入式:其实i.MXRT1050,1020,1015系列ROM也提供了FlexSPI driver API

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1050/1020/1015系列ROM中的FlexSPI驱动API使用. 今天痞子衡去4S店给爱车做保养了,保养一次要等两小 ...

  7. 痞子衡嵌入式:了解i.MXRTxxx系列ROM API及其与i.MXRT1xxx系列的差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM API设计细节. 痞子衡之前写过两篇文章 <利用i.MXRT1xxx系列ROM提供的FlexSPI ...

  8. 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...

  9. 痞子衡嵌入式:了解i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点. 前段时间痞子衡写了一篇 <深入i.MXRT1050系 ...

  10. 痞子衡嵌入式:了解i.MXRTxxx系列ROM中灵活的串行NOR Flash启动硬复位引脚选择

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中灵活的串行NOR Flash启动硬复位引脚选择. 关于 i.MXRT 系列 BootROM 中串行 NOR ...

随机推荐

  1. php服务器如何验证令牌

    在PHP中,令牌通常用于防止跨站请求伪造(CSRF)攻击.以下是一个简单的例子,展示了如何生成和验证令牌: 生成令牌: function generateToken($length = 32) { / ...

  2. c# virtual 关键字 虚方法

    1.简单的说,虚方法就是可以被子类重写的方法,如果子类重写了虚方法,那么运行时将使用重写后的逻辑,如果没有重写,则使用父类中虚方法的逻辑 class Program { static void Mai ...

  3. job提交后,inp文件的处理过程

    用户提交job后,abaqus的inp文件处理过程 1. 对inp文件预处理 打开任务管理器可以看到pre.exe的进程 预处理中的error .warning 都会在.DAT文件中 dat文件出现e ...

  4. 遍历列表、元组或字符串的函数enumerate

    这两天在处理遇到的问题,循环遍历列表中的字典并输出到excel中 查阅资料发现了一个正和我意的函数 所以周一一上班我就开始试一试 然而发现 enumerate函数只适用于列表.元组或字符串的函数 语法 ...

  5. C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  6. 超级详细的mysql数据库安装指南

    https://zhuanlan.zhihu.com/p/37152572 2,073 人赞同了该文章 如果你的电脑是mac,参考社群会员 @奔跑的土豆 的分享: mac下mysql的安装步骤 227 ...

  7. 实现领域驱动设计 - 使用ABP框架 - 系列文章汇总

    系列文章汇总 前言: 最近看到ABP官网的一本电子书,感觉写的很好,翻译出来,一起学习下 Implementing Domain Driven Design 实现领域驱动设计 - 使用ABP框架 - ...

  8. 关于SIFT,GIFT在旋转不变性上的对比实验

    目录 关于SIFT,GIFT在旋转不变性上的对比实验 回顾 准确率测试 总结 核心代码 关于SIFT,GIFT在旋转不变性上的对比实验 这篇文章不讨论SIFT,GIFT的实现原理,只从最终匹配结果的准 ...

  9. Ai满嘴顺口溜,想考研?浪费我几个小时

    Trae + claude3.7 事情的经过是这样的: 我有个方法代码如下: /// <summary> /// 获取客户端列表 /// </summary> /// < ...

  10. 设置git忽略文件

    要设置Git忽略文件,你可以使用一个名为.gitignore的特殊文件.在这个文件中,你可以列出需要Git忽略的文件.文件夹.或者匹配模式.当Git执行操作时,它会自动忽略这些被列出的文件. 1. 在 ...