昨晚上调试TFT时,由于硬件问题将TFT的SDA 和SCL接口用在了SPI2 的PB15(SPI_MOSI) 与PB13(SPI2_SCK)上。
程序中逻辑应该没有问题,而且也在SPI1 端口上检验过,正常运行,但是接到SPI2上就无输出了,
以为是硬件SPI的原因,换成了软件SPI,
void LCD_SPIx_WriteByte(u8 data)
{
// HAL_SPI_Transmit(&LCD_SPI_CH,&data,1,0xffff);
unsigned char i=0;
for ( i = 8; i > 0; i --)
{
LCD_SCL_CLR;
if ( data & 0x80)
LCD_SDA_SET; //输出数据
else
LCD_SDA_CLR;
LCD_SCL_SET;
data <<= 1;
}
}
但是TFT还是没有显示。
上一篇blog:STM32F4-TFT-SPI时序逻辑分析仪调试记录
已经通过逻辑分析仪抓取了正常的时序,唯独换到PB15 和PB13上就没有输出。
逻辑分析仪查看之后发现:
SCL–PB13引脚是正常发送脉冲的,但是SDA–PB15硬件始终是高电平,所以问题可能出在PB15上,
而且现在用是软件SPI,不排除PB15在硬件SPI模式下也是常高,检测一下。
换成硬件SPI:
输出依然有问题,现在可以定位根本原因应该是SPI_MOSI也就是PB15有问题。
硬件检查一下,看看是否有短路
发现PB15与PB14短路!!!!
坑人啊。。。。
含泪换上另一片芯片
之后再测
时序基本都是错的,怪不得无法显示。。。
改用软件SPI试试,看看是不是硬件有问题;
还是不对,TFT也不显示
换个SDA引脚到PB2:
这个会貌似对了,但是TFT不显示,检查发现DC引脚接错了,反过来,显示正常
那换SDA到PB15:
显示正常!!!!
可怜的深圳打工人,排队做核酸去。。。。
--------------------------------------分割线--------------------------------------------
做核酸回来,
那换成硬件SPI呢?
时序看着不对,但是正常显示。。。突然想起来
这就尴尬了。。。采样率才高一倍。。。况且已经是逻辑分析仪的最高采样率了!!!。
无奈只能调小硬件SPI波特率
终于显示正常了!!!!
佩服我自己!!!
然而我又想起了之前的另一个bug:
【STM32-USB-MSC问题求助】STM32F411CEU6 (WeAct)+w25q64+USB-MSC Flash用SPI2 读出容量只有520KB
这个也是用的同一块开发板,,,,莫非??后背发凉。。明天测试一下。。