STM32F103的SPI模式
STM32F103连一个ADC芯片,此芯片时序如下图。
一开始用了全双工模式SPI_Direction_2Lines_FullDuplex,调试发现执行了发送和接收函数后,只实现了发送,没有接收。即图中红框内部分,后面接收部分连时钟信号都不产生。
然后又尝试SPI_Direction_2Lines_RxOnly,连发送信号都不输出了。
难道是发送和接收要分成两步,用两种模式实现?
SPI是同步收发的,你要收数据必须要同时发数据,即使是发一串无意义的数据也行;
我猜你这个芯片应该是主机先发一串命令,然后ADC芯片才能把你想要的数据返回,这时候你应该再继续发一串FF FF FF FF .... SPI_Direction_2Lines_FullDuplex,收发
SPI_Direction_2Lines_RxOnly 只收了。
肯定是双工的了,你确定你的接收IO配置正确了吗?SPI收和发是2个独立的IO,并不会互相影响。只要有时钟,就会传输数据。 hjl2832 发表于 2020-7-17 11:08
肯定是双工的了,你确定你的接收IO配置正确了吗?SPI收和发是2个独立的IO,并不会互相影响。只要有时钟,就 ...
注意SPI下 ,IO 是工作在复用模式。 把软件配置部分源码贴出来有助于分析问题,或者直接用别人现成的驱动 tgw860910 发表于 2020-7-17 09:35
SPI是同步收发的,你要收数据必须要同时发数据,即使是发一串无意义的数据也行;
我猜你这个芯片应该是主机 ...
:victory:对的,收发执行两次即可,第二次可以收到数据。 spi的发送和接收是同步的,发送完成,就相当于接收完成。 最好把这一块的代码发出来,SPI全双工,发的时候也是收的时候,看一下 MOSI和MOSI的配置。 作为SOI的从设备是没有主动发送数据的能力,必须依靠主设备的时钟。所以主发送命令时,从可能没有准备好数据,所以下一次准备好后,主再发数据时就能收到信息了
页:
[1]
2