以前都是用IO口模拟SPI通信来驱动TFT,当然没什么问题的了。今天调了一下用STM32的SPI来驱动TFT,结果问题来了,屏怎么也没有反应,用示波器测了一下SCK和MOSI,发现有信号输出,这就奇怪了。后来我又把SPI初始化程序检查了一遍,还是没错,8位数据发送SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;,先发送高位SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;。受不了了,这是为什么。还好我机智,本来我用的是时钟8分频提供SCK,后来我改成了时钟的256分频,结果终于好了。经调试发现最快可以用时钟32分频 SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;。总结:如果STM32的SPI时钟过快,而串口TFT屏跟不上,导致不能正常使用。可以适当降低SCK的频率即可解决。
|