本文介绍两套基于云途 YTM32B1MD24 的 SENT/SPC 通信 Demo,分别用于 SENT 数据发送和接收。工程使用 eTMR / MPWM 定时器与 DMA 完成波形输出及边沿采样,由软件处理协议编码、解码和 CRC,可用于学习 SENT/SPC 通信、对接传感器,或搭建收发联调环境。
工程说明
SENT 通过相邻下降沿的时间间隔传递数据。SPC 则采用主机触发、从机响应的方式:主机先在信号线上输出一个低电平 trigger,从机收到后返回 SENT 报文。
两个工程按 SENT 数据的传输方向命名,对应关系如下:
工程
SENT 功能
SPC 角色
适用场景
YTM32B1MD24_SENT_Rx
接收并解码 SENT 报文
主机:发送 trigger,再接收响应
读取传感器数据、接收 TX Demo 的输出
YTM32B1MD24_SENT_Tx
编码并发送 SENT 报文
从机:接收 trigger,再发送响应
模拟传感器输出、为接收端提供报文
两套工程均提供 eTMR 和 MPWM 实现。它们可以配合使用,也可以根据外部设备的协议和电气接口单独使用。
实现方式与支持功能
RX 通过定时器输入捕获记录下降沿时间戳,使用 DMA 搬运采样数据,再由软件识别 SYNC、状态位、数据及 CRC。TX 将报文编码为符号时长,通过定时器与链接 DMA 输出对应波形。
两端使用相近的工程结构:app/main.c 负责应用流程,spc_driver 提供协议接口及 eTMR / MPWM 硬件实现,YCT 文件保存时钟、引脚和外设配置。
支持的消息格式如下:
消息类型
ID 长度
数据长度
CRC
Fast message
无
1~6 个 nibble,每个 nibble 为 4 bit
CRC-4
Short slow message
4 bit
8 bit
CRC-4
Enhanced slow message,4-bit ID
4 bit
16 bit
CRC-6
Enhanced slow message,8-bit ID
8 bit
12 bit
CRC-6
Slow message 通过多个 Fast message 的状态位传输,Short 和 Enhanced 格式分别需要 16 帧和 18 帧。
默认 SENT tick 为 3 µs,Fast 数据为 6 个 nibble。TX 默认生成 Fast CRC 并附加 Pause Pulse,RX 默认开启 Fast CRC 校验、Slow 解码和 Slow CRC 校验。
除 SPC 触发响应外,驱动也支持纯 SENT 收发:RX 可持续接收外部报文,TX 可由应用直接调用发送接口,发送时机由应用安排。
两套 Demo 如何配合使用
默认配置包含四个逻辑通道:SENT_CH0 / SENT_CH2 分别使用 eTMR / MPWM 完成 SPC 触发响应;SENT_CH1 / SENT_CH3 用于演示对应的纯 SENT 收发。TX 每接受一次有效 trigger,会先发送主通道响应,再由对应的跟随通道发送一帧。
按各工程 README 中的接线表连接对应通道和公共地,并使用兼容的 SPC / SENT 电气接口。
分别运行 RX 和 TX 工程,打开 RX 串口日志,参数为 115200 baud、8N1、无流控。
按 RX README 的说明,通过调试器设置通道和 trigger 宽度,发起一次请求。
等待本次请求完成,检查主通道及跟随通道的接收日志,再发起下一次请求。
本文上传了两者互相配合的测试报告:SENT_TX_RX_回归测试报告_2026-10-09.zip
例如,向 eTMR 对应的 SENT_CH0 发送 20 µs trigger,可观察一次 Fast 响应;使用 25 µs trigger,并逐次等待响应、重复 16 次,可观察完整的 Short slow message。这些宽度与消息类型的对应关系由本 Demo 定义,对接实际传感器时应以设备协议为准。完整 Slow 序列结束后,再切换响应类型或模块。
RX 默认打印原始报文及解码结果。TX 打印默认关闭,需要时可将 app/main.c 中的 APP_PRINT_ENABLE 设为 1U。串口仅用于日志输出,请求通过 RX 调试变量发起。
具体引脚、配置项、API 和使用限制见各工程的 ReadMe.md。
工程下载
SENT RX Demo:YTM32B1MD24_SENT_Rx.zip 。
SENT TX Demo:YTM32B1MD24_SENT_Tx.zip 。
每套工程附带 ReadMe.md,建议先阅读接线与使用说明,再根据自己的应用调整配置。