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报错。

 

posted @ 2019-12-21 20:20  得一寸  阅读(1878)  评论(0编辑  收藏  举报