SPI模拟时序波形
-
1. 版本
Config Tool Version:2.7.8
ME05 SDK version:1.4.0
EVB version: YTM32B1ME0-EVB-Q144 Rev.C2.前言
有客户需要用MCU引脚输出特定波形进行通信,如下图:

MCU没有特定的硬件外设可以输出这种波形,使用IO模拟会很占用CPU资源,但是用SPI进行组帧可以模拟出这种波形。
通过调整SPI的波特率和帧间隔时间去满足它的时序要求。3.方案
固定发送特定的组帧,即用一个SPI帧去模拟一bit时序,如下图:

设定SPI的帧长度(Framesize)为6,0码 高电平/低电平时间:1/2;1码 高电平/低电平时间:2/1.3.1 波特率计算
如上时序中1bit的理想时间是720ns,我们假设是750ns,即SPI一帧750ns,
那SPI的1bit就是 750ns/6 = 125ns,可得SPI的波特率为1 / 125ns = 1 / 0.000 000 125 = 8M.即设定SPI的波特率为8M最合适。4. 示例工程配置
4.1 SPI时钟配置
功能时钟选择PLL, 120M时钟, 3分频,所以SPI的功能时钟为40M.

4.2 SPI功能配置
这里只考虑主机发送的配置:

因为要尽量满足时钟波形连续无间隔,需要对CS2CLK,CLK2CS,Frame2Frame进行微调,这里都设置1。

设置为Frame2Frame讲个刚好为60ns,与时钟线的负脉宽基本一样

4.3 码元转换函数
此函数可将16进制数据转化为对应的码元数据,方便SPI发送函数传参。
比如说0x23,它的二进制数据是0010 0011,转换后的数据数组就是
{0x30, 0x30,0x3C, 0x30, 0x30, 0x30,0x3C, 0x3C}

5. 实测波形
5.1 发送全0数据:
T0H典型值:250ns。
T0L典型值:500ns。

5.2 发送全1数据:
T1H典型值:500ns。
T1L典型值:250ns。

5.3 随机数据

5.4 Reset码

6. 示例工程
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...