找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 894|回复: 7
打印 上一主题 下一主题
收起左侧

关于SPI DMA的接收设备掉线疑问

[复制链接]
回帖奖励 10 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:326261 发表于 2023-9-11 14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,目前题主在做一个STM32的spi dma作flash芯片传输数据,但是要检测到flash是否在线
又因为要兼容各种flash芯片,不能采用读取ID号来区分,只能使用检测数据来区分了
但是看了资料,实在不理解如何使用STM32内部寄存器区分是否接收到数据了

SPI的DMA传输流程我个人的理解是:
DMA通过读取SPI_DR寄存器的值来获取到DMA缓冲里面,但是他不会去区分DR的值是从哪来的,
是否来的合理,只是提取,提取到了就产生DMA完成中断,然后把数据传到内存里。

问题:
1、我的对SPI的DMA流程是否正确?
2、有没有寄存器可以检测出来我已经没有flash芯片了,为什么还能接收到00或者FF的数据?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:771630 发表于 2023-9-11 20:54 | 只看该作者
SPI不具有检测设备是否在线的能力,他不像IIC有ACK,也不像UART有下降沿触发,所有时钟信号由主机产生,主机只会在时钟边缘读取引脚电平并储存,如果引脚存在上下拉,则可能接收到ff或者00,如果是浮空的,则是随机数。
回复

使用道具 举报

板凳
ID:1088185 发表于 2023-9-11 21:09 | 只看该作者
这跟DMA无关, 是你对SPI的读写流程不太了解, 最好看看SPI的方块图,这比较容易理解
双工的SPI其实是没有只写的, 它写的同时必定是同时读, 那怕你配置是只写, 它还是读了, 只不过是读了就放弃了。 相反,SPI也没有只读的动作,读的过程也是写的过程, 所以没有接收完成的标志位,因为它写完就是读完的意思。
回复

使用道具 举报

地板
ID:326261 发表于 2023-9-12 09:05 | 只看该作者
XLinliY.Zhang 发表于 2023-9-11 20:54
SPI不具有检测设备是否在线的能力,他不像IIC有ACK,也不像UART有下降沿触发,所有时钟信号由主机产生,主 ...

感谢回答,还想问一下,如果要做一个检测设备在线的机制,你的思路是怎样的吗?
比如我的思路:在指定的一个地址0x10,写入一个数据0xAA,再读出来是否一致,来判断设备是否在线。
回复

使用道具 举报

5#
ID:326261 发表于 2023-9-12 09:11 | 只看该作者
1600277881 发表于 2023-9-11 21:09
这跟DMA无关, 是你对SPI的读写流程不太了解, 最好看看SPI的方块图,这比较容易理解
双工的SPI其实是没有 ...

非常感谢!看了一下时序图,学习了。
按照内部文档逻辑所说,如果不用DMA的话,他会有一个接收缓冲区标志位,如果接收到数据,这个位则置起,但是DMA这个不经过SPI内部缓冲区,所以导致接收缓冲器是否为空的这个RXNE标志位没有作用了,所以检测不到我的主板是否接收到数据。
还想请教一下,如果是要做检测设备是否在线,是否接收到数据的话,要怎么作这个判断逻辑呢?
回复

使用道具 举报

6#
ID:1092816 发表于 2023-9-12 10:36 | 只看该作者
如果不通过DMA传输数据,正常,就是你DMA流程哪里没设置到。要检测flash芯片是否在线,定时读取id
回复

使用道具 举报

7#
ID:326261 发表于 2023-9-12 11:15 | 只看该作者
cjc1029 发表于 2023-9-12 10:36
如果不通过DMA传输数据,正常,就是你DMA流程哪里没设置到。要检测flash芯片是否在线,定时读取id

因为有的flash芯片是不能采取读取ID号来判断的,厂家没有ID号查询这个,所以查ID号暂不考虑。
回复

使用道具 举报

8#
ID:771630 发表于 2023-9-12 14:56 | 只看该作者
工学院陈伟霆 发表于 2023-9-12 09:05
感谢回答,还想问一下,如果要做一个检测设备在线的机制,你的思路是怎样的吗?
比如我的思路:在指定的 ...

从一个已知数据的地址读取数据,并判断是否正确,例如芯片ID、某个值固定的寄存器、储存进去的数据等
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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