打印
[STM32F1]

STM32F103RCT6,使用DMA传输SPI

[复制链接]
875|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
悠然33|  楼主 | 2017-8-7 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想使用DMA来进行SPI的接收和发送,SPI为主机,怎么控制片选脚,使SPI能用DMA自动传输。
沙发
mmuuss586| | 2017-8-7 15:28 | 只看该作者
DMA中断好像可以吧;  通过中断去处理;

没试过

使用特权

评论回复
板凳
feelhyq| | 2017-8-7 15:49 | 只看该作者
在 DMA SPI传输过程中,由于不知道当前字节或者数据帧是否传输完(CPU没有干预),因此片选是不能够被改变的。

使用特权

评论回复
地板
悠然33|  楼主 | 2017-8-7 16:28 | 只看该作者
mmuuss586 发表于 2017-8-7 15:28
DMA中断好像可以吧;  通过中断去处理;

没试过

DMA中断试过,我是发送跟接收都进DMA中断的,但是片选脚还是不好设置

使用特权

评论回复
5
悠然33|  楼主 | 2017-8-7 16:30 | 只看该作者
feelhyq 发表于 2017-8-7 15:49
在 DMA SPI传输过程中,由于不知道当前字节或者数据帧是否传输完(CPU没有干预),因此片选是不能够被改变的 ...

在主模式下,片选是拉低的

使用特权

评论回复
6
feelhyq| | 2017-8-7 16:47 | 只看该作者
悠然33 发表于 2017-8-7 16:30
在主模式下,片选是拉低的

只在使用之前拉低,使用之后拉高就行了

使用特权

评论回复
7
悠然33|  楼主 | 2017-8-7 16:50 | 只看该作者
本帖最后由 悠然33 于 2017-8-7 16:53 编辑
feelhyq 发表于 2017-8-7 16:47
只在使用之前拉低,使用之后拉高就行了

那这样就要使用中断,软件去控制了,但是如果我使用DMA中断,则片选就没办法设置,DMA有发送缓冲区为空中断,接收缓冲区非空中断。这两个中断,进去都是结束后的,没办法使能片选

使用特权

评论回复
8
feelhyq| | 2017-8-7 18:16 | 只看该作者
悠然33 发表于 2017-8-7 16:50
那这样就要使用中断,软件去控制了,但是如果我使用DMA中断,则片选就没办法设置,DMA有发送缓冲区为空中 ...

巧了,我现在正在调SPI+DMA(SLAVE模式),“DMA有发送缓冲区为空中断,接收缓冲区非空中断“,在STM32里面好像没有这个DMA中断吧?你说的应该是SPI的,楼主不用考虑那么多,大胆去干,使用DMA之前拉低,DMA所有数据传输完成之后拉高就行了

使用特权

评论回复
9
悠然33|  楼主 | 2017-8-7 20:29 | 只看该作者
feelhyq 发表于 2017-8-7 18:16
巧了,我现在正在调SPI+DMA(SLAVE模式),“DMA有发送缓冲区为空中断,接收缓冲区非空中断“,在STM32里面 ...

噢,谢谢,我试试

使用特权

评论回复
10
布丁奶茶| | 2017-8-8 11:39 | 只看该作者
楼上正解,传输前选中,传输完成拉高片选

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

0

粉丝