zoomdy 发表于 2017-2-21 12:57:45

SPI是全双工的,当MOSI在发送数据的时候,MISO同时也在接收数据,如果说你要先发送4字节然后接收2字节,那么实际上发送了6字节,4字节你指定的数据和2字节FF,接收到的也是6个字节,要自己丢弃前面4个字节。一般来讲,接收的数据应该是FF,你收到的是0,我想问一下,你的MISO是上拉还是下拉或者是浮空?如果MISO是下拉那接收到0就对了,如果是浮空,那接收到0的可能性也很大。

maisheng 发表于 2017-2-22 10:29:26

zoomdy 发表于 2017-2-21 12:57
SPI是全双工的,当MOSI在发送数据的时候,MISO同时也在接收数据,如果说你要先发送4字节然后接收2字节,那 ...

非常感谢。我的MISO是悬空的。根据阁下的意见找到解决办法了。把所有HAL_SPI_Transmit()都换成HAL_SPI_TransmitReceive()就好了。应该是SPI的read fifo中的数据没有读取导致。

zbber 发表于 2017-2-22 15:31:26

没有找到问题之前只能先这样改代码:

maisheng 发表于 2017-2-25 13:58:01

zbber 发表于 2017-2-22 15:31
没有找到问题之前只能先这样改代码:

已经解决了。看你楼上回复。

奇缘时间 发表于 2017-9-17 00:31:27

你好,最近使用HAL库 SPI通信时也出现了错误,请问你的问题解决了嘛?
页: 1 [2]
查看完整版本: 问个关于STM32L4 SPI读数据,前3个字节永远是0