新闻详情

SWM32SRET6-50 RGB565 驱动7寸800*480屏 测试记录

290
发表时间:2022-10-21 08:52作者:全球芯 | glochip.com网址:http://glochip.com/news/

测试设备:SWM32SRET6-50 官方开发板(官方淘宝店购买) 板载SPIFLASH一枚、SD卡接口一个、标准40pin RGB显示接口一个,支持电容及电阻触摸,电阻触摸芯片未焊,电容触摸为I2C接口。如下图(图中为5寸触摸屏,实测7寸屏加转接板也可以驱动)。


5寸触摸屏一个、7寸屏(at070tn92)加转接板一套、jlink一个。


该开发板使用的SWM32SRET6-50 MCU内置8MSDRAM,对于驱动800*480的屏已经足够了。显存占用800*480*2 = 750KByte,加一个缓冲去共1500KByte。缓冲区不是必须的,有缓冲区通过切换现存地址可以避免刷屏的效果。


测试例程使用官方例程目录为\SWM320_Lib-200727\SWM320_Lib\LCD\SimplLCD_SDRAM


1、用keil4 打开例程后,修改man.c 中的分辨率设置


#define LCD_HDOT    800    //480        //水平点数

#define LCD_VDOT    480    //272        //垂直点数


2、根据屏的参数修改RGBLCDInit 函数中的


   LCD_initStruct.Hfp = 15;

    LCD_initStruct.Hbp = 40;

    LCD_initStruct.Vfp = 8;

    LCD_initStruct.Vbp = 8;


void RGBLCDInit(void)

{

    LCD_InitStructure LCD_initStruct;

   

    GPIO_Init(GPIOB, PIN12, 1, 0, 0);//±³¹â¿ØÖÆ

    GPIO_SetBit(GPIOB, PIN12);        //µãÁÁ±³¹â

   

    PORT->PORTN_SEL0 = 0xAAAAAAAA;    //

    PORT->PORTN_SEL1 = 0xAA;

   

    LCD_initStruct.Interface = LCD_INTERFACE_RGB;

    LCD_initStruct.HnPixel = LCD_HDOT;

    LCD_initStruct.VnPixel = LCD_VDOT;

    LCD_initStruct.Hfp = 15;

    LCD_initStruct.Hbp = 40;

    LCD_initStruct.Vfp = 8;

    LCD_initStruct.Vbp = 8;

    LCD_initStruct.ClkDiv = LCD_CLKDIV_2;    //

    LCD_initStruct.ClkAlways = 1;

    LCD_initStruct.SamplEdge = LCD_SAMPLEDGE_FALL;

    LCD_initStruct.HsyncWidth = LCD_HSYNC_2DOTCLK;

    LCD_initStruct.IntEOTEn = 1;

    LCD_Init(LCD, &LCD_initStruct);

}


3、根据使用的内置SDRAM 大小为8MByte,修改void MemoryInit(void) 函数中的,内存大小设置


SDRAM_InitStruct.CellSize = SDRAM_CELLSIZE_64Mb;


4、如果需要串口输出可以修改串口端口配置


    PORT_Init(PORTC, PIN2, FUNMUX0_UART0_RXD, 1);  

    PORT_Init(PORTC, PIN3, FUNMUX1_UART0_TXD, 0);   


5、还要根据开发板背光控制端口修改背光端口设置


    GPIO_Init(GPIOB, PIN12, 1, 0, 0);//

    GPIO_SetBit(GPIOB, PIN12);        //


6、SDRAM虽然是内置的,但是配置方法和外置是一样的,相关的端口除了M6、M18和M20外都不能用于其它功能。


7、DMA可以用于刷新显存,但是实测会导致闪屏,估计是对当前显存操作会导致显示短暂的中断。另外需要注意的是,调试的过程中对程序暂停,屏幕也会不正常,必须在几种颜色之间循环刷屏。应该是由于CPU停止刷屏导致的。NXP的MCU没有这个问题。这个问题会导致无法暂停查看当前运行处屏幕的状态。


8、通过修改LCD->SRCADDR = (uint32_t)LCD_Buffer;此处显存的起始地址可以实现屏幕瞬间刷新,避免从上往下刷屏的效果,这样就需要额外的SDRAM区域作为缓冲区。但是用DMA或者手动复制当前显存区域内容到缓冲区会导致黑屏,因此需要避免操作当前显存区域,只能分别刷写缓冲区和显存区的内容。


Home                                    Product                                        News                                   About                                        Contact
Tel:0755-84866816  13924645577
Tel:  0755-84828852   13924649321
Web:  www.glochip.com
Mail:kevin@glochip.com
Add: 深圳市龙岗区大运软件小镇1栋401
Mobile: 13924645577    13924649321 
       微信咨询
加密芯片  华芯微特   艾迪科泰    博雅科技    补丁科技    晶存科技   华大电子   妙存科技   三星半导体   海力士  镁光科技     南亚科技  铠侠半导体  金士顿   Skyhigh  Netsol

SRAM MRAM SDRAM DDR1 DDR2 DDR3 DDR4 DDR5 LPDDR3 LPDDR4 LPDDR4X LPDDR5 LPDDR5X NAND FLASH  NOR FLASH eMMC UFS eMCP uMCP