stm32f4,spi主从机通信

stm32f4的SPI主从机通信怎么做的可靠:

Android做主机,stm32f4做从机,spi,16bit,主机mode3,从机mode0,发送和接收都用dma;

主机设置从机的参数,参数大于2个字节:

发送一个命令字节,16bit=8bit主命令+8bit子命令,忽略返回数据

根据实际情况设置一个或多个参数,忽略返回数据(发送数据填充0xffff)

主机设置从机的参数,参数大于1个字节:

发送一个命令字节,16bit=8bit主命令+8bit数据

主机获取从机参数:

发送一个命令字节,16bit=8bit主命令+8bit子命令,忽略返回数据

根据实际情况获取一个或多个参数,忽略发送数据(发送数据填充0xffff)

TIP

stm32f4,spi+dma发送大批量数据时会丢数据,但基本上只会丢最会几个数,Txdma会一直等待,导致新的命令响应不了,现在的做法是,主机结尾多采集10个数据。这时候速率很快,Receive_DMA中断,可能响应不及时,IRQ中会报OV溢出错误,让spi的管理状态复位,spi就响应不了了,因此需要在IRQ中注释掉溢出错误的处理。

Android发送10个自己以内,或2048个数据都可以,但是2047或4096这样的就发送失败,安卓IO报错。

猜你喜欢

转载自www.cnblogs.com/deyicun/p/12078117.html