硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1425|回复: 10
收起左侧

[SPI/QSPI] 高速SPI从机环形DMA接收方案(已量产)

  [复制链接]

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
发表于 2022-10-27 20:04:31 | 显示全部楼层 |阅读模式
概述:
配置能缓存最大数据长度的缓冲区,如1024字节;配置SPI接收为DMA环形模式,使用DMA通道的CNT寄存器作为写指针位置。

中断:
CS下降沿中断:读取CNT寄存器,作为帧起始位置;
CS上升沿中断:读取CNT寄存器,作为帧结束位置,复制数据至应用层(如跨边界分2次复制)。


优点:
中断少,CPU参与少,不丢数据。

缺点:
需分配专用的缓冲区。


回复

使用道具 举报

4

主题

74

回帖

86

积分

初级会员

积分
86
发表于 2022-10-27 20:50:04 | 显示全部楼层
不错不错,很好的分享!!!
回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2022-10-27 23:49:17 来自手机 | 显示全部楼层
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2022-10-28 01:10:28 | 显示全部楼层
好思路,主机可以多高的主频与其通信?
回复

使用道具 举报

0

主题

100

回帖

100

积分

初级会员

积分
100
发表于 2022-10-28 09:51:03 | 显示全部楼层
我在UART接受处理使用了类似思路,不过我在DMA完成中断里不做任何数据处理,只对用于记录接收循环计数的全局变量加1。

应用层使用数据时先从接收循环计数变量和CNT寄存器计算出实际总接收字节数量,比较上次处理时的总接收字节数量就能算出新接收字节数量及在buffer的起始位置,然后做相应数据处理。

这个思路有个好处是可以多个任务同时使用接收数据而完全独立互不干扰。譬如一个任务做命令解释,另外一个任务做数据转发(用于调试)。
回复

使用道具 举报

2

主题

63

回帖

69

积分

初级会员

积分
69
发表于 2022-10-28 11:03:42 | 显示全部楼层
eric2013 发表于 2022-10-28 01:10
好思路,主机可以多高的主频与其通信?

之前产品中按照这样做,SPI从机100MHZ长时间通信无问题 ,现在产品已经量产
回复

使用道具 举报

2

主题

63

回帖

69

积分

初级会员

积分
69
发表于 2022-10-28 11:05:37 | 显示全部楼层
之前的做法有点区别,在中断中只是切换接收缓存buf,在循环中处理接收数据
回复

使用道具 举报

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
 楼主| 发表于 2022-10-28 19:07:05 | 显示全部楼层
eric2013 发表于 2022-10-28 01:10
好思路,主机可以多高的主频与其通信?

看了下应用手册,DMA从外设到SRAM,典型的延时是4个CLK
回复

使用道具 举报

77

主题

691

回帖

922

积分

金牌会员

积分
922
发表于 2022-10-28 20:29:04 | 显示全部楼层
很巧妙的应用呀,省去自己维护缓冲区的消耗和不小心可能出现的BUG。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2022-10-29 00:32:56 | 显示全部楼层
emwin 发表于 2022-10-28 19:07
看了下应用手册,DMA从外设到SRAM,典型的延时是4个CLK

100MHz的话,差不多就是25MHz,这速度还行。
回复

使用道具 举报

15

主题

73

回帖

118

积分

初级会员

积分
118
发表于 2022-10-31 21:44:39 | 显示全部楼层
MK
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 06:39 , Processed in 0.264443 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表