lunar-412568 发表于 2020-7-16 16:49:20

STM32F103的SPI模式


STM32F103连一个ADC芯片,此芯片时序如下图。
一开始用了全双工模式SPI_Direction_2Lines_FullDuplex,调试发现执行了发送和接收函数后,只实现了发送,没有接收。即图中红框内部分,后面接收部分连时钟信号都不产生。
然后又尝试SPI_Direction_2Lines_RxOnly,连发送信号都不输出了。
难道是发送和接收要分成两步,用两种模式实现?


tgw860910 发表于 2020-7-17 09:35:25

SPI是同步收发的,你要收数据必须要同时发数据,即使是发一串无意义的数据也行;
我猜你这个芯片应该是主机先发一串命令,然后ADC芯片才能把你想要的数据返回,这时候你应该再继续发一串FF FF FF FF ....

damiaa 发表于 2020-7-17 10:15:41

SPI_Direction_2Lines_FullDuplex,收发
SPI_Direction_2Lines_RxOnly 只收了。

hjl2832 发表于 2020-7-17 11:08:52

肯定是双工的了,你确定你的接收IO配置正确了吗?SPI收和发是2个独立的IO,并不会互相影响。只要有时钟,就会传输数据。

hjl2832 发表于 2020-7-17 11:09:44

hjl2832 发表于 2020-7-17 11:08
肯定是双工的了,你确定你的接收IO配置正确了吗?SPI收和发是2个独立的IO,并不会互相影响。只要有时钟,就 ...

注意SPI下 ,IO 是工作在复用模式。

陌路夕颜 发表于 2020-7-17 12:14:52

把软件配置部分源码贴出来有助于分析问题,或者直接用别人现成的驱动

lunar-412568 发表于 2020-7-17 13:23:18

tgw860910 发表于 2020-7-17 09:35
SPI是同步收发的,你要收数据必须要同时发数据,即使是发一串无意义的数据也行;
我猜你这个芯片应该是主机 ...

:victory:对的,收发执行两次即可,第二次可以收到数据。

ts2000 发表于 2020-7-17 14:30:06

spi的发送和接收是同步的,发送完成,就相当于接收完成。

dataozi 发表于 2020-7-17 15:30:39

最好把这一块的代码发出来,SPI全双工,发的时候也是收的时候,看一下 MOSI和MOSI的配置。

butterflyspring 发表于 2020-7-27 17:38:04

作为SOI的从设备是没有主动发送数据的能力,必须依靠主设备的时钟。所以主发送命令时,从可能没有准备好数据,所以下一次准备好后,主再发数据时就能收到信息了
页: [1] 2
查看完整版本: STM32F103的SPI模式