关于使用RSPI来发送连续比特流的方法

cathy的头像
cathy 发布于:周二, 07/23/2024 - 17:29 ,关键词:

有些特殊的外设会使用基于SPI模式,发送连续比特流来传输数据。本文主要介绍对于Renesa RA,如何使用SPI来实现高速比特流的发送。

注意,此方式仅针对搭载了支持该工作模式SPI外设的RA产品,使用前请在硬件手册中确认这一点。

灵活的Renesas Advanced(RA)32位MCU是采用Arm® Cortex®-M33、-M23、-M4和-M85处理器内核,并经过PSA认证的、行业领先的32位MCU。RA可提供更为强大的嵌入式安全功能、卓越的CoreMark®性能和超低的运行功率,相比竞争对手的Arm Cortex-M MCU具有重大优势。PSA认证可为客户提供信心和保障,帮助其快速部署安全的物联网端点和边缘设备,以及适用于工业4.0的智能工厂设备。

有关瑞萨RA MCU的更多信息,请访问下方网址:

RA MCU

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus 

有关SPI的更多信息,请访问下方网址:

SPI

https://www.renesas.cn/cn/zh/products/gadget-renesas/reference/gr-lychee/library-spi 

RSPI在正常的配置模式下,如果发送4个字节,总线上波形如下图所示。在每两个字节之间都有delay的插入。

1.png

手册上关于这部分的描述如下:

2.png

t1是从SSLn生效到第一个clock的延时

t2是最近一个CLK结束到SSLn失效的延时

t3是SSLn再次使能之前的延时

但是这样会造成比特流不连续,无法满足某些特定应用的要求。

SPI实际上还提供了Burst功能,用于产生连续的比特流,该功能尚未在FSP界面中支持,当前可通过手动修改R_SPI代码实现,把寄存器位SSLKP和BFDS置位。更新代码如下所示:

3.png

修改代码后,测试波形结果如下图:

4.png

细心的小伙伴会发现,最后一个字节没有发送完成。仔细检查发现,在最后一个字节发送的过程中,RSPCK上缺少两个clock,实际上程序也没有进入发送完成中断。

所以光这样还不行,还需要在发送中断程序中做一下处理。

在ra\fsp\src\r_spi\r_spi.c的函数r_spi_transmit函数中增加一个判断,在发送最后一个字节前,重新把SSLKP清零:

5.png

这是修改后的时序,字节间已经没有插入delay,保证了比特流的连续性。

6.png

需特别注意的是,假如生成连续比特流,则不支持通过DMA/DTC进行SPI传输。

另外,如果不切换FSP的版本,对于源码的修改,RA文件夹中可以保留,但是ra_cfg和ra_gen文件夹中的内容会被FSP重写。如果切换FSP的版本,则三个文件夹(ra,ra_cfg和ra_gen)中的内容均会被FSP重写。

对该功能的支持已加入FSP的开发计划,届时无需手动修改,仅需在FSP Stack中配置即可。

有关FSP的更多信息,请访问下方链接:

FSP(瑞萨灵活配置软件包)

https://www.renesas.cn/cn/zh/software-tool/flexible-software-package-fsp 

来源:瑞萨嵌入式小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 15