STM32N6570-DK】+ 利用LTDC驱动LCD显示
本次来试试STM32N6的LTDC外设,通过LTDC实现LCD屏显示。首先打开STM32CubeMX,使用开发板模式新建工程,配置LTDC外设。配置如下:
先是屏幕驱动颜色和分辨率。使用RGB565颜色模式,屏幕分辨率为800*480.
!(data/attachment/forum/202505/25/222746p66yy5qy7jsljskg.png "image.png")
然后是LTDC层显示控制。这里使用2个显示层,一个显示范围100*100,另一个显示范围50**200。
!(data/attachment/forum/202505/25/222955iulgnaahn7j7niyu.png "image.png")
!(data/attachment/forum/202505/25/223138jftcfwtutfq4lggw.png "image.png")
再就是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);
```
!(data/attachment/forum/202505/25/223403y3pvpv3aptle9vsx.png "image.png")
还必须打开HAL_RIF_MODULE_ENABLED定义使能。
!(data/attachment/forum/202505/25/223439i69d3mcn62x88kbx.png "image.png")
或者另一个办法就是直接配置RIF模块。这样就不用添加额外代码。如下:
!(data/attachment/forum/202505/25/223608nbkmvcq1qkvi56qm.png "image.png")
下面接着定义一个buffer用于显存。
```
uint32_t lcd_buffer;
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 = color;
}
}
```
在main函数中使用如下:
!(data/attachment/forum/202505/25/223818r5eldbaa20e1dzeu.png "image.png")
然后编译DEBUG调试就可以看到颜色方块变化了。
!(data/attachment/forum/202505/25/224154yxfxf0zx1b2l1b97.gif "n6.gif")
[!(/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg) 附件:n6_lcd.zip](forum.php?mod=attachment&aid=2406946 "attachment")
RIF 可以防止非授权的访问,如 LTDC 写 SDRAM 时未经授权会触发异常。
页:
[1]