This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

麻烦各位看一下。2片stm32进行SPI通信。下面分别是主机从机的程序。但主机接收到的数据出错了。

刚算是了解清楚了SPI的原理,动手做个实验。在SPI主从通信中。我想让主机跟从机交换一次数据。从机程序里直接往SPI-DR里赋值了,那么在主机时钟信号到来的时候通信就自动开始了不是吗?

然后我接上了逻辑分析仪观察。发现主机输出的数据是正确的,但主机接收回来的返回值并不是0xf0;而是00111100..但我现在没有JLINK,我只能观察到IO的变换。麻烦朋友们看看程序是不是有问题呢?

spi1.jpgspi2.jpg
Parents

  • Hi Jonny

         这两段代码是同一个程序的吗?我假设你是准备用同一块MCU的两个SPI,分别做主从。

         但你主从都是用的SPI1,这里就有问题。还有GPIO的初始化,这里也没看到。也没有读SPI数据的代码。

         另外SPI1_ReadWriteByte是你自己写的函数吗?

         STM32F1的标准外设库里有相应的例程(STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\SPI\FullDuplex_SoftNSS),建议你去参考一下。

         下载地址: STSW-STM32054 STM32F10x standard peripheral library - STMicroelectronics

Reply

  • Hi Jonny

         这两段代码是同一个程序的吗?我假设你是准备用同一块MCU的两个SPI,分别做主从。

         但你主从都是用的SPI1,这里就有问题。还有GPIO的初始化,这里也没看到。也没有读SPI数据的代码。

         另外SPI1_ReadWriteByte是你自己写的函数吗?

         STM32F1的标准外设库里有相应的例程(STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\SPI\FullDuplex_SoftNSS),建议你去参考一下。

         下载地址: STSW-STM32054 STM32F10x standard peripheral library - STMicroelectronics

Children