|
汉哥,
我参照你H7的代码,使用H745驱动ST7789,基本上是移植你的代码,只是改了一些RESET\RS\CS的管脚,使用SPI5,但是在初始化BSP的时候只要加上LCD_InitHard,程序就跑步下去,追踪下看了,是卡在下面的函数,如果使用寄存器就是卡在while ((SPI5->SR & SPI_SR_TXC) == 0);,如果使用HAL_SPI_Transmit,就会卡在等待EOT的标志,感觉SPI没有执行操作,附件是代码。不知道是哪里需要设置了。
static void ST7789_SendByteQuick(uint8_t data)
{
#if 1 /* 纭欢妯″紡 */
SPI5->CFG1 = SPI_BAUDRATEPRESCALER_8 | 7;
SPI5->CR1 = SPI_CR1_SSI;
SPI5->CR2 = 1;
SPI5->CR1 = SPI_CR1_SPE | SPI_CR1_SSI;
SPI5->CR1 = SPI_CR1_SPE | SPI_CR1_SSI | SPI_CR1_CSTART;
while ((SPI5->SR & SPI_FLAG_TXE) == 0);
*((__IO uint8_t *)&SPI5->TXDR) = data;
while ((SPI5->SR & SPI_SR_TXC) == 0);
SPI5->IFCR = SPI_IFCR_EOTC | SPI_IFCR_TXTFC;
SPI5->CR1 &= ~(SPI_CR1_SPE);
#else /* 杞欢妯″紡 */
HAL_SPI_Transmit(&hspi5 , &data , 1, 0xFFFFFFFF);
#endif
|
|