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

测试设备: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或者手动复制当前显存区域内容到缓冲区会导致黑屏,因此需要避免操作当前显存区域,只能分别刷写缓冲区和显存区的内容。

 

  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值