本次来试试STM32N6的LTDC外设,通过LTDC实现LCD屏显示。
首先打开STM32CubeMX,使用开发板模式新建工程,配置LTDC外设。配置如下:
先是屏幕驱动颜色和分辨率。使用RGB565颜色模式,屏幕分辨率为800*480.

然后是LTDC层显示控制。这里使用2个显示层,一个显示范围100*100,另一个显示范围50**200。


再就是RIF模块要使能。也可以在ltdc初始化后面加上如下代码:
RIMC_MasterConfig_t RIMC_master = {0};
RIMC_master.MasterCID = RIF_CID_1;
RIMC_master.SecPriv = RIF_ATTRIBUTE_SEC | RIF_ATTRIBUTE_PRIV;
HAL_RIF_RIMC_ConfigMasterAttributes(RIF_MASTER_INDEX_LTDC1 , &RIMC_master);
HAL_RIF_RISC_SetSlaveSecureAttributes(RIF_RISC_PERIPH_INDEX_LTDCL1 , RIF_ATTRIBUTE_SEC | RIF_ATTRIBUTE_PRIV);

还必须打开HAL_RIF_MODULE_ENABLED定义使能。

或者另一个办法就是直接配置RIF模块。这样就不用添加额外代码。如下:

下面接着定义一个buffer用于显存。
uint32_t lcd_buffer[100*100*2/4];
void lcd_buff_set(uint16_t color)
{
uint16_t i;
uint16_t *ptr;
ptr = (uint16_t *) lcd_buffer;
for(i=0;i<100*100;i++)
{
ptr[i] = color;
}
}
在main函数中使用如下:

然后编译DEBUG调试就可以看到颜色方块变化了。
附件:n6_lcd.zip
|