[AVR单片机] SPI缓冲处理后,如何确定发送值与哪一个接收值是对应的

[复制链接]
2612|5
 楼主| daiqh 发表于 2012-10-6 11:02 | 显示全部楼层 |阅读模式
发送和接收都作buffer处理,有一堆数需要发送,而发送的数值当中有一个需要读取其返回的值,但怎么才知道在接收缓冲中其对应的返回值是那个位置呢?就是怎么确定这个接收buffer的读指针。因为SPI硬件加缓冲实现,不能确定这个数是什么时候发。
mohanwei 发表于 2012-10-6 15:16 | 显示全部楼层
可以确定。因为SPI的特点是发送完一字节就肯定接收完一字节。
 楼主| daiqh 发表于 2012-10-6 16:06 | 显示全部楼层
可以确定。因为SPI的特点是发送完一字节就肯定接收完一字节。
mohanwei 发表于 2012-10-6 15:16

发完一字节是肯定会接收到一个字节,但这个字节(需要读取其返回的值)发送之前也有一堆数据要发送,发送的个数也不确定,发送的数会放进发送缓冲区再由硬件自动发送。虽然返回的值都放到接收缓冲区了,但不知这一个字节是什么时候被写入接收缓冲区,也不能确定保存的位置。
 楼主| daiqh 发表于 2012-10-6 16:12 | 显示全部楼层
可以确定。因为SPI的特点是发送完一字节就肯定接收完一字节。
mohanwei 发表于 2012-10-6 15:16

如果没这个缓冲,每发完一个再进入中断读取其接收到的值,这样是可以做到的。但加了缓冲又应该如何处理,还没想到办法。
mohanwei 发表于 2012-10-6 21:41 | 显示全部楼层
如果不是帧结构,是不能这样用的。
例如一些SPI接口的Flash,擦除、写入等操作,必须发送命令后,不停读取状态寄存器,直到查询到“空闲”才允许进行下一步操作……
 楼主| daiqh 发表于 2012-10-6 22:46 | 显示全部楼层
如果不是帧结构,是不能这样用的。
例如一些SPI接口的Flash,擦除、写入等操作,必须发送命令后,不停读取状态寄存器,直到查询到“空闲”才允许进行下一步操作…… ...
mohanwei 发表于 2012-10-6 21:41

已经放弃缓冲做法了,只能提速SPI,再发一字节,等待完成,再返回接收了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

95

帖子

2

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