为了后续程序的调试以及显示数据,将液晶显示屏接入开发板。本次实验使用以ST7735S为驱动核心的1.8寸TFT显示屏作为显示输出部件,使用SPI通讯方式输出显示数据。显示屏需要提供开发板提供几个接口完成通讯,连接设置为: 显示屏 开发板 ================================ 1、地:GND GND 2、电源:VDD,3.3V VDD 3、时钟:SCK P01.1 4、数据:SDA P01.2 5、复位:RST P01.3 6、指令、数据寄存器选择:DC P01.4 7、片选:CS P01.5 8、背景灯:BLK 没找到开发板的电原理图,只好根据开发板上的印字,选择了几个IO口作为接口引脚使用。为了快速实现通讯控制,以IO口模拟SPI方式通讯。通讯之前需要验证这几个IO是否可以顺利实现高低电平的输出控制,先以驱动LED模式方式测试。 定义关联的管脚和口: #define PORT01 1U /*!<@brief PORT device name: 1U */ #define PIN01_0 0U #define PIN01_1 1U #define PIN01_2 2U #define PIN01_3 3U #define PIN01_4 4U 初始化函数: void BOARD_InitPins(void) { /* Enables the clock for the IOCON block. 0 = Disable; 1 = Enable.: 0x01u */ CLOCK_EnableClock(kCLOCK_Iocon); /* Enables the clock for the GPIO1 module */ CLOCK_EnableClock(kCLOCK_Gpio1); gpio_pin_config_t LED_GREEN_config = { .pinDirection = kGPIO_DigitalOutput, .outputLogic = 0U }; // 初始化关联管脚 GPIO_PinInit(GPIO, PORT01, PIN01_0, &LED_GREEN_config); GPIO_PinInit(GPIO, PORT01, PIN01_1, &LED_GREEN_config); GPIO_PinInit(GPIO, PORT01, PIN01_2, &LED_GREEN_config); GPIO_PinInit(GPIO, PORT01, PIN01_3, &LED_GREEN_config); GPIO_PinInit(GPIO, PORT01, PIN01_4, &LED_GREEN_config); } 在主程序中,测试IO口输出: int main(void) { /* Init output LED GPIO. */ GPIO_PortInit(GPIO, BOARD_LED_PORT); /* Board pin init */ BOARD_InitPins(); BOARD_InitBootClocks(); /* Set systick reload value to generate 1ms interrupt */ if (SysTick_Config(SystemCoreClock / 1000U)) { while (1) { } } while (1) { /* Delay 1000 ms */ SysTick_DelayTicks(1000U); GPIO_PortToggle(GPIO, PORT01, 1u << PIN01_0); GPIO_PortToggle(GPIO, PORT01, 1u << PIN01_1); GPIO_PortToggle(GPIO, PORT01, 1u << PIN01_2); GPIO_PortToggle(GPIO, PORT01, 1u << PIN01_3); GPIO_PortToggle(GPIO, PORT01, 1u << PIN01_4); } } 使用LED测试了输出控制,没有问题。 接下来,引入TFT显示屏的处理代码,实现显示输出。 在主程序中加入下面代码: [size=18.6667px] Lcd_Init(); [size=18.6667px] Lcd_Clear(BLACK); [size=18.6667px] [size=18.6667px] Gui_DrawFont_GBK16(0, 0, WHITE, BLACK, (uint8_t *)"Hello World ..."); [size=18.6667px]编译、下载,复位开发板。可以看到结果:
|