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

2019-12-15 12:17发布

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

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


SPI  DMA接收完中断是否代表数据已经接收完成全部到了 接收数组?
SPI DMA发送完中断是否代表仅仅缓冲区数据空,但是有字节在位移寄存器里面 没有发送出去,请问有几个字节?假如我是按byte发送,如何解决这种情况呢,是否非得再往spi写入数据才能发送缓冲区剩余的数据? 这样每一帧会多无效的字节,如何解决呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
wowangru
1楼-- · 2019-12-18 00:00
 精彩回答 2  元偷偷看……
wowangru
2楼-- · 2019-12-18 04:32
loveavr999 发表于 2018-11-7 14:01
包分小点,最后拼起来,spi 用10m的话,100ns完全可以计算过来,可以不要用crc,用简单的xor计算,收一个 ...

我要用DMA收发SPI。 不准备占用CPU ,我的从机确实是FPGA  
wowangru
3楼-- · 2019-12-18 05:52
aozima 发表于 2018-11-7 13:55
硬件上,SPI是按包的。

软件上,每包有校验。

请问
SPI  DMA接收完中断是否代表数据已经接收完成全部到了 接收数组?
SPI DMA发送完中断是否代表仅仅缓冲区数据空,但是有字节在位移寄存器里面 没有发送出去,请问有几个字节? 假如我是按byte发送,如何解决这种情况呢!  是否非得多往SPI写入数据才能发出位移寄存器中剩余的数据?  这样多了无效的字节,有解决办法吗
aozima
4楼-- · 2019-12-18 11:17
从机FPGA更做好,CMD和RESP都不用在两次CS周期里面了,做在一起都可以。
上面分成两次,且在RESP里面会暂停一下是为了照顾MCU做从机时的处理时间。
wowangru
5楼-- · 2019-12-18 11:47
aozima 发表于 2018-11-7 15:59
从机FPGA更做好,CMD和RESP都不用在两次CS周期里面了,做在一起都可以。
上面分成两次,且在RESP里面会暂停 ...

我的主机是stm32   现在还没有玩转他的SPI  

一周热门 更多>