[MCU] 【极海 APM32E103VET6S开发板】评测3、TFT LCD

wenyangzeng   2022-9-14 20:51 楼主

极海 APM32E103VET6S开发板】评测3TFT LCD

 

本次评测让APM32E103VET6D SPI2驱动SPI接口的320×240TFT彩色液晶模块。

image.png CubeMX配置:

image.png  

 

 

TFT-LCD的原始代码网上到处都是,本文就不再贴出。

SPI接口的TFT-LCD写数据、命令的数据长度每次只能是8Bit,16位彩色写点必须分2次写入。CubeMX-SPI2写TFT-LCD的命令和数据的函数是:

HAL_SPI_Transmit(&hspi2, buff, 0x01, 5000);

APM32E103VESPI2初始化函数:

 hspi2.Instance = SPI2;
  hspi2.Init.Mode = SPI_MODE_MASTER;
  hspi2.Init.Direction = SPI_DIRECTION_2LINES;
  hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi2.Init.NSS = SPI_NSS_SOFT;
  hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
  hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi2.Init.CRCPolynomial = 7;
  if (HAL_SPI_Init(&hspi2) != HAL_OK)
  {
    Error_Handler();
  }

编译、下载、运行,发现断电再启动LCD屏并不是每次都能显示,安排了PB8、PB9驱动的2只LED做运行状态的指示,可以点亮,证明没有死机,判断是SPI驱动有问题。

SPI2接口改GPIO口,使用模拟SPI方式驱动,居然每次重启都成功。留下一个疑问,SPI驱动不稳定到底是硬件问题还是CubeMX的问题。

 

image.png

硬件模拟的SPI驱动函数:

void Send_SPI(uint8_t data)
{
	uint8_t i;
	LCD_SCK_CLR;
	for(i=0;i<8;i++)
	{	if(data &0x80)
			LCD_SDA_SET;
		else
		LCD_SDA_CLR;
		LCD_SCK_SET;
		__nop();
		data<<=1;
		LCD_SCK_CLR;
	}
}

运行结果:

 

image.png  

IMG_20220914_174536.jpg

cpu.png    

本帖最后由 wenyangzeng 于 2022-9-14 20:55 编辑

回复评论 (3)

这几张图片显得非常的好呀,有没有测试下视频?

点赞  2022-9-15 06:04
引用: lugl4313820 发表于 2022-9-15 06:04 这几张图片显得非常的好呀,有没有测试下视频?

视频肯定不行的,SPI接口的LCD刷屏速度跟不上的。

点赞  2022-9-15 08:11

谢谢分享,如果能直接cube那这种片子上手简直很平顺了。

默认摸鱼,再摸鱼。2022、9、28
点赞  2022-9-15 22:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复