大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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. pikachu搭建

    pikachu靶场搭建教程 下载小皮面板phpstudy: 小皮官网:https://www.xp.cn/ 下载pikachu : https://github.com/zhuifengshaonia ...

  2. 使用电阻网络实现的vga驱动电路,fpga驱动vga显示器验证,代替gm7123芯片

    之前驱动vga,要么是直接使用fpga管脚直接驱动,颜色为8原色 使用线缆 vs,hs,r,g,b一共五根线,三原色要么是0要么是1,所以色彩最多8种,rgb组合 若要实现真彩色驱动,如rgb888, ...

  3. RVV1.0指令中关于_m系列函数的使用方法,即掩码mask的转换使用

    在RVV1.0指令函数的使用中,遇到了mask加载不匹配问题 uint8_t mask_data[] = {15, 0, 0, 0, 0, 0, 0, 0}; vbool8_t mask = vlm_ ...

  4. excel 日期列显示到日

    原来显示 效果图: 步骤

  5. 200条Git命令复习总结使用

    新建 创建一个新的 git 版本库.这个版本库的配置.存储等信息会被保存到.git 文件夹中 # 初始化当前项目 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init ...

  6. celery 启动显示警告信息“...whether broker connection retries are made during startup in Celery 6.0 and above...”

    博客地址:https://www.cnblogs.com/zylyehuo/ # celery作为一个单独项目运行,在settings文件中设置 broker_connection_retry_on_ ...

  7. Linux-Deepin下搭建云笔记

    背景 操作系统切换为Deepin以后,因为没有windows,各家的云笔记产品,几乎对Linux都没有很好的支持. 印象笔记,没有linux版本,web版本不支持markdown 为知笔记,需要收费, ...

  8. 【Linux】5.3 Shell字符串

    Shell 字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 1. 单 ...

  9. 【UWB】DWM1000 室内定位串口协议说明

    UWB室内定位串口协议说明 通过串口发送的测距报告消息有三种: "mr"信息包括标签到锚定原始范围 "mc"标签到锚定范围偏差修正范围 - 用于标签位置 &qu ...

  10. 数据处理与任务调度的双引擎:ETL工具PDI与DPDI调度管理工具的全面剖析

    ETL工具PDI及调度DPDI ETL流程解析 数据抽取(Extract) 抽取是ETL的起点,需连接多种数据源获取原始数据.如从关系型数据库提取销售记录,或从文本文件读取客户信息,为后续处理奠定基础 ...