【MSPM0L1306 LaunchPad™ 开发套件】8 SPI测试并驱动TFT液晶屏,整体测试总结
[复制链接]
本次要驱动的屏的基本信息如下:
1.54寸tft作为显示元件,主要参数是240*240分辨率,主控是7789,可通过SPI/8080进行通信,在本次测试使用SPI进行通信,驱动的同事也是对SPI功能的测试。硬件接口如下:
其中SPI涉及3个接口,屏幕作为被动器件,只需要接受配置信息数据或者命令就可以了,其他接口均使用IO控制。
为此我们在syscfg配置文件中创建一个SPI:
注意:只能创建一个SPI;
基础配置:
频率最高16MHz,本次选择的是16M,帧格式选择3线模式,8位数据位,高位在前,也就是MSB,时钟极性选择Low,当没有时钟的时候管脚为低电平,其他默认就可以。
一定要注意你的引脚配置,后续的连接需要根据这个进行:
配置其他IO口为输出功能:
TFT_POW:PA7;
TFT_RST:PA23;
TFT_WR:PA12;
TFT_CS:PA3;
不同的屏的初始化都是有差异的,只要配置对应的接口就可以,代码如下:
/************************************宏定义************************************/
#define TFT_RS_reset DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_12)
#define TFT_RS_set DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_12)
#define TFT_RESET_reset DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_23)
#define TFT_RESET_set DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_23)
#define TFT_BL_SET DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_7)
#define TFT_BL_RESET DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_7)
#define SPI1_CS_OUT0 DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_3)
#define SPI1_CS_OUT1 DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_3)
void delay_us(uint32_t Data)
{
delay_cycles(Data*32);
}
void delay_ms(uint32_t Data)
{
delay_cycles(Data*32000);
}
void SPI1_Send8(uint8_t Data)
{
SPI1_CS_OUT0;
delay_us(1);
DL_SPI_transmitData8(SPI_TFT_INST, Data);
while(DL_SPI_isBusy(SPI_TFT_INST));
delay_us(1);
SPI1_CS_OUT1;
}
void TFT_init(void)
{
TFT_BL_SET;
TFT_RESET_reset;
SPI1_CS_OUT1;
}
void TFT_WR_COMM(uint8_t COMM)
{
TFT_RS_reset;
SPI1_Send8(COMM);
}
void TFT_WR_DATA(uint8_t DATA)
{
TFT_RS_set;
SPI1_Send8(DATA);
}
void TFT_WR_DATA16(uint16_t DATA)
{
TFT_WR_DATA( DATA >> 8);
TFT_WR_DATA( DATA );
}
初始化成功:
整体来说由于主频的限制,整屏刷新还是比较喜人的,如果是分辨率小一点还是完全没有压力的。
总结
到这里基本上对于想要测试的功能都有了一个基本的了解和测试功能实现,对于这个开发板TI板载的资源还是很丰富的,不仅仅是板载了调试器还准备了丰富的外部资源用与对外设功能的测试,尽量减少测评所需的额外的器件,让你可以快速体验;
syscfg配置文件随工程非常的方便,我们在进行基础配置可以快速进行,配置完成编译就可以完成初始化,不过也有一些小问题需要注意,例如SPI中新建的几个IO配置在进行“Name”项的复制粘贴时出现了复位配置的情况,屏幕初始化失败就因为这个,当然还有其他的小问题,外部中断对应的中断处理函数单一就不给宏定义,导致找了好长时间中断函数,不过整体来说还是很方便的;
SDK的存在就是让你对各个外设功能的全面体验,你可以使用开发板直接下载进行体验,也可以打开学习使用方法,每个demo工程包括软硬件的介绍和syscfg配置等,全面详细。
本次测试体验圆满结束!
|