这时候就能够对SDRAM部分0x80000000区间直接读写。
(七)背光驱动
背光实际上就是使能一个IO口将之拉高:
- /* Back light. */
- #define LCD_BL_GPIO GPIO2
- #define LCD_BL_GPIO_PIN 31
- void DEMO_InitLcdBackLight(void)
- {
- gpio_pin_config_t config = {
- kGPIO_DigitalOutput,
- 0,
- kGPIO_NoIntmode,
- };
- /* Backlight. */
- config.outputLogic = 1;
- GPIO_PinInit(LCD_BL_GPIO, LCD_BL_GPIO_PIN, &config);
- }
复制代码
(六)修改LCD部分驱动
驱动LCD的代码需要修改,因为图形界面配置出来的LCDIF代码是只读的,它的缓冲区是写死的,可能不能够重新定向。
为什么说可能呢?看看这个描述:
- AT_NONCACHEABLE_SECtiON_ALIGN(uint32_t BOARD_LCDIF_Buffer[2][BOARD_LCDIF_PANEL_HEIGHT][BOARD_LCDIF_PANEL_WIDTH], BOARD_LCDIF_RGB_BUFFER_ALIGN);
复制代码
恕我水平有限,实在没搞懂这个宏是怎么回事,但是根据官方驱动LCD的例程,好像是通过脚本重定向整个RAM区间,使代码不需要额外指定区间。
但是这种方式实在是令小白望而却步,为了使用一些简单好懂的方法,这里需要
1-LCDIF初始化部分代码拷出来,然后删掉原本图形界面配置LCDIF部分配置。
2-删掉上面这个看不懂的宏,定义一个新的宏,指向外部SDRAM区域:
#define DEMO_BUFFER0_ADDR 0x80000000U
3-修改结构体 elcdif_rgb_mode_config_t BOARD_LCDIF_rgbConfig
其中
.bufferAddr = DEMO_BUFFER0_ADDR,
4-在初始化之前把这部分区域全部写0xAA,在RGB565格式下为粉红色。
uint16_t *t;
t=DEMO_BUFFER0_ADDR;
memset(t, 0xAA, BOARD_LCDIF_PANEL_WIDTH * BOARD_LCDIF_PANEL_HEIGHT *2);
5-初始化LCDIF
ELCDIF_RgbModeInit(LCDIF, &BOARD_LCDIF_rgbConfig);
6-启动LCDIF总线
ELCDIF_RgbModeStart(LCDIF);
显示效果:
有了图形界面配置工具之后,整个驱动制作简便了许多,NXP的MCUXpresso真是个好东西啊。
`