最近我在做STM32的SPI,我设置完成后,总是收不到数据,于是我就用示波器看看了时钟信号,发现时钟信号没有发出来。我很怀疑自己的程序设置错了,就拿了KEIl的例程来看看,结果也是没有时钟信号。请问高手怎么会有这种情况!!
你是否设置好了相应的I/O口为复用功能?
请试试发送是否有时钟?
你是否设置好了相应的I/O口为复用功能
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4|GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure)
对于AFIO是没有设置的,难道是这里的问题???
请参考STM32固件库中附带的例子
关于SPI有五个例子:
Example1 Set a communication between the two SPIs in full-duplex mode and performs a transfer from Master to Slave and then Slave to Master in the same application with software NSS management.
Example2 Set a communication between two SPIs in simplex mode and performs a data buffer transfer from Master to Slave using TxE interrupt for master and RxNE interrupt for slave.
Example3 set a communication between two SPIs in full-duplex mode and performs a transfer from Master to Slave and Slave to Master followed by CRC transmission.
Example4 Set a communication between the two SPIs in simplex mode and performs a transfer from Master in polling mode to the Slave in DMA receive mode. The NSS pin is managed by hardware.
Example5 Use the SPI firmware library and an associated SPI FLASH driver to communicate with an M25P64 FLASH
SPI的时钟信号无法发出来!
这些例子我也都试过的,除了设置SPI空闲时的电平在示波器上不同,也是没有信号的。我先是在公司自己开发的试验板上看的,在英贝特培训时发的板子上试也是同样情况。,所以就更加困惑了!
把你的项目文件挂上来看看
还有你的硬件电路是如何接的,SPI另一端接在哪里?
我感到奇怪的是,STM32固件库中附带的例子中Example1应该是可以的,因为那是用两个SPI端口做一发一收,除非你用的芯片只有一个SPI端口;请确认一下。
SPI的时钟信号无法发出来!
谢谢香版主,今天下午有好好看了看,是我们两边的程序不太协调,现在已经可以正常地发出时钟脉冲了,呵呵。谢谢!!
很高兴听到你的问题解决了,也算我没有瞎忙
哈哈,恭喜!