[DemoCode下载] 高级技术-M031 的一个SPI和4个UART之间的数据传输

[复制链接]
1081|10
 楼主| zhuomuniao110 发表于 2022-12-20 15:55 | 显示全部楼层 |阅读模式
EC_M031_SPI_TO_4_UART_V1.00.zip (1.74 MB, 下载次数: 17)
本范例代码主要演示 M031 实现 1 个 SPI 和 4 个 UART 之间进行数据交换。
范例里有两个工程。Master 文件夹下是主机程序,它通过 SPI 和从机通讯,设置 SPI 总线时钟为 16MHZ,定时给从机发送数据、检测到从机请求后读取和解析从机数据、记录并打印传输数据的长度。Slave 文件夹下是从机程序,它收到主机的 SPI 数据后,解析并通过 UART 发送给其他设备;收到其他设备的 UART 数据后,对数据进行编码并通知主机来读取数据。本文介绍了 SPI 速率和角色的设置、PDMA 基本操作模式和 Scatter-Gather 操作模式的配置、SPI+PDMA 的传输和传完判断。


主机和从机通过 SPI 通讯
帧头(1 字节)+ 帧长度(2 字节)+ 通道(1 字节)+ 数据(128 字节)+ CRC(1 字节) + 帧尾(1 字节)
7237063a16a1d59b45.png
从机和其他设备通过 UART 通讯,采用数据透传。当主机空闲时定时给从机发送数据,发送间隔受到从机接收 buffer 长度、数据解析和转发速度的影响。如果主机发送速度比从机转发速度快,会导致从机接收 buffer 溢出。本范例设置主机发送的间隔是 15 ms,那么主机 SPI 向 4 个 UART 都发送一帧(128 字节)数据需要 15*4=60 ms。从机 UART 以 115200 bps 波特率再将数据转发出去需要 128*4*10/115200=44 ms。因此从机转发速度比主机发送速度快,不会发生从机接收 buffer 溢出。当检查到从机请求后,读取从机 数据,读取的帧长度固定。主机的 SPI TX 和 RX 都使用 PDMA 基本操作模式搬运数据,完成搬运任务后 PDMA 会回到空闲状态,下一次搬运需要重新启动 PDMA。当从机收到主机(SPI)数据,解析后通过 UART 主动发送给其他设备。但当从机收到其他设备(UART)数据,不能主动发送给主机(SPI),需要通过 GPIO 通知主机,等待主机来读取。主机读数据的帧长度固定,如果从机数据不足,帧结尾会用 0 补齐。为了避免 UART 收到少量数据就触发一次 SPI 传输,从机每隔 2 ms 检查是否有数据需要发送给主机。从机的 SPI TX 和 RX也使用 PDMA 搬运数据。SPI TX 使用 PDMA 的基本操作模式,完成搬运任务后回到空闲状态;SPI RX 使用 PDMA 的 Scatter-Gather 操作模式,采用两张描述符表轮流将数据搬运到指定内存。作为从机,为了保证不丢失数据,需要设置较大的数据接收 buffer,收到的数据尽快发送给对应的设备。buffer 的大小跟接收速度、数据量以及转发速度都有关系。从机 SPI 需要接收主机发送给 4 个串口的数据,并且 SPI 传输速度比 UART 快,所以 SPI 的 buffer 需要比 UART的 buffer 大。
3418063a16a465e518.png
更多详情下载附件,内有源码工程可供使用
heisexingqisi 发表于 2022-12-20 17:31 | 显示全部楼层
这个比较好,方便扩展从机使用。
tpgf 发表于 2023-1-4 08:45 | 显示全部楼层
spi和4个uart之间是如何进行硬件连接的呢
nawu 发表于 2023-1-4 09:35 | 显示全部楼层
这四个串口是同时进行通讯?挂在一个总线上?
drer 发表于 2023-1-4 09:50 | 显示全部楼层
哦 我明白了 楼主是使用spi接收 然后使用uart进行发送数据是吗
zljiu 发表于 2023-1-4 10:06 | 显示全部楼层
这么多串口同时操作 会不会导致数据阻塞呢
kxsi 发表于 2023-1-4 10:18 | 显示全部楼层
四个串口是硬件上独立的吗 这种发送需要跑系统吗
tfqi 发表于 2023-1-4 10:31 | 显示全部楼层
流程图很清晰 但是需要判定的逻辑也是非常多的
中国龙芯CDX 发表于 2023-1-5 12:21 | 显示全部楼层
四个串口同时操作嘛?
xinpian101 发表于 2023-1-8 21:46 | 显示全部楼层
实现了串口转发的功能,方便用于串口服务器这种设备上
小小蚂蚁举千斤 发表于 2023-1-9 09:28 来自手机 | 显示全部楼层
多串口好操作吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

233

主题

3529

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部