SPI协议如何校验? 有没有同一个数据包完成校验的方法?

2019-12-15 12:17发布

本帖最后由 wowangru 于 2018-11-7 13:58 编辑

SPI就像一个环形位移寄存器,本身没有校验。   没有不出错的通讯!    我现在想给SPI增加校验功能。  
   我如何才知道从机有没有正确接收呢?  从机发的数据主机有没有正确接收呢?   
   如果要直到是不是非得下一个数据包才能知道? 这样是不是效率会受影响!!


SPI  DMA接收完中断是否代表数据已经接收完成全部到了 接收数组?
SPI DMA发送完中断是否代表仅仅缓冲区数据空,但是有字节在位移寄存器里面 没有发送出去,请问有几个字节?假如我是按byte发送,如何解决这种情况呢,是否非得再往spi写入数据才能发送缓冲区剩余的数据? 这样每一帧会多无效的字节,如何解决呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
wye11083
1楼-- · 2019-12-15 16:52
spi本身是全双工的,所以你可以让从机一边收一边回传啊。
wowangru
2楼-- · 2019-12-15 18:23
wye11083 发表于 2018-11-6 22:48
spi本身是全双工的,所以你可以让从机一边收一边回传啊。

我怎么直到接收到的数据是对的?   对方怎么知道我发送的是对的?   假如加了校验加什么样的校验合适? CRC吗   如果校验错了怎么办呢?
wowangru
3楼-- · 2019-12-15 19:05
wye11083 发表于 2018-11-6 22:48
spi本身是全双工的,所以你可以让从机一边收一边回传啊。

从机回传的应该是上一个包的请求吧?   没法做到实时解析实时回传吧?
wye11083
4楼-- · 2019-12-15 23:35
 精彩回答 2  元偷偷看……
Doding
5楼-- · 2019-12-16 05:18
wowangru 发表于 2018-11-6 22:57
我怎么直到接收到的数据是对的?   对方怎么知道我发送的是对的?   假如加了校验加什么样的校验合适? C ...

SPI只管收发数据,保证数据正确是硬件设计和数据处理的事,硬件上保证干扰尽量小,数据处理可以用现成的协议,也可以自己定协议,看具体需求。
CRC错了和数据错了没什么区别,都是错了,错了怎么处理是协议定的,丢掉还是重发,根据具体需求定。
modbus
6楼-- · 2019-12-16 07:10
你想想很多SPI接口的芯片都没有校验,是怎么用的

一周热门 更多>