
WB-7寸模块说明书(RA8875) 电阻屏 ![]() ![]() 电容屏 ![]() ![]() ※支持电容屏和电阻屏可选 ※背光可调控(PWM) ※四个定位孔,方便安装定位 ※提供丰富的参考资料,应用例程 ※按工业级、EMC等标准设计,稳定抗干扰性强 【技术参数】※分辨率:800 x 480(Pixel) ※接口方式:16位8080并列式MCU接口 ※LCD控制芯片:RA8875 ※电容触控芯片:GT910 ※电阻触控芯片:XPT2046 ※工作电压:3.3V(背光单独5V供电) ※工作电流:500mA ※工作温度:-20℃ ~ +70℃ ※外形尺寸:185mm x106mm 【接口说明】
拿到模块后,先给模块供两组电压——5v和3.3v(5v的GND可以不接);当背光可以正常亮起的时候,就可以接16根数据线和5根控制线,所以,你的MCU至少要有21个IO;接好线后,就可以通过修改我们提供的参考程序来让液晶屏显示。 如果你的控制板刚好是STM32系列的,而且也带FSMC,那么只需简单修改下IO,应该都可以正常驱动,其他控制板可以按照我们提供的初始化流程来初始化RA8875。 这里以我们旺宝电子的红龙103开发板为例,讲解下如何移植; ![]() LCD的CS是PG12,是FSMC_NE4功能,因为我们LCD和NOR Flash在同一CS,所以用到了SN74LVC1G139来选择是操作LCD还是NOR Flash。 PF0则是地址最低位FSMC_A0,PD4是FSMC_NOE输出使能端,PD5是FSMC_NWE写使能端,D0~D15则是对应FSMC的16位数据线。 如果对FSMC不熟悉,请查看STM32技术参考手册,学习FSMC,通过程序说明怎么通过FSMC实现数据的读写操作,片选端接的是FSMC_NE4; 外部内存块分组地址+地址。也就是说,在块1的分组4的第0位:每一个块分组占用64MB,就是:0x4000000*3+0=0xC000000。 ![]() 则FSMC的操作起始地址是0x60000000+0x0C000000= 0x6C000000 在RS端接的是FSMC_A0,则可以通过地址的最低位来控制数据和命令的发送,我们在程序中定义了两个宏来区分数据和命令的发送 #defineRA8875_REG *(__IO uint16_t *) 0x6C000002 #defineRA8875_RAM *(__IO uint16_t *) 0x6C000000 因为数据总线是16位的,所以是两字节对齐,也就是第2位来控制,当第2位为1时,实现的是指令传输,当A0为0时,实现的是数据传输。 RA8875存取周期 ![]() 初始化完成后,通过调用RA8875_Clear(RED);来验证我们的移植是否正确,若液晶没有显示颜色,可以通过读取RA8875_Init()中初始化的寄存器是否都正确的初始化了,大部分情况下,都是因为IO没有对应上或接线错误引起的。 如果你的板卡没有FSMC,那么接下来的改动就比较大了。下面我们以旺宝电子的金龙107开发板为例,讲解如何用普通IO来驱动我们的7寸屏。 要驱动7寸屏,有几个重要的基础函数, RA8875_WriteCmd(uint8_t RegAddr) RA8875_WriteData(uint8_t RegValue) uint16_t RA8875_ReadData16(void) 第一个函数是写命令 /**************************************************************** ** Function name: voidRA8875_WriteCmd(uint8_t RegAddr) ** Descriptions: 写RA8875指令寄存器 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ***************************************************************/ static void RA8875_WriteCmd(uint8_t RegAddr) { LCD_CS(0); //拉低片选段CS LCD_RD(1); //读失能 LCD_RS(1); //写入的是命令 LCD_WR(0); //拉低写入的引脚,准备写入 GPIO_Write(LCD_DATA_GPIO, RegAddr); //写入命令 RA8875_Delaly200us(); LCD_WR(1); //拉高写入的引脚,写入命令 LCD_CS(1); //拉高片选段CS } 第二个是写数据 /******************************************************************* ** Function name: void RA8875_WriteData(uint8_t RegValue) ** Descriptions: 写RA8875数据 ** input parameters: RegValue: 寄存器值 ** output parameters: 无 ** Returned value: 无 ******************************************************************/ static void RA8875_WriteData(uint8_tRegValue) { LCD_CS(0); //拉低片选段CS LCD_RD(1); //读失能 LCD_RS(0); //写入的是数据 LCD_WR(0); //拉低写入的引脚,准备写入 GPIO_Write(LCD_DATA_GPIO,RegValue);//写入数据 RA8875_Delaly200us(); LCD_WR(1); //拉高写入的引脚,写入数据 LCD_CS(1); //拉高片选段CS } 第三个是读数据 /******************************************************************** ** Function name: uint16_tRA8875_ReadData16(void) ** Descriptions: 读RA8875显存,16bit RGB ** input parameters: 无 ** output parameters: 无 ** Returned value: 读取的数据 ********************************************************************/ static uint16_t RA8875_ReadData16(void) { //IO应设为输入模式,此处省略 LCD_CS(0); //拉低片选段CS LCD_RD(0); //拉低读取的引脚,准备读取数据 LCD_RS(0); //读取的是数据 LCD_WR(1); RA8875_Delaly1ms(); t=GPIO_ReadInputData(LCD_DATA_GPIO); //读取数据 //设为输出,此处省略 } 按上面的时序写好后,就可以封装几个函数来初始化8875的寄存器了 /**************************************************************** ** Function name: voidRA8875_WriteReg(uint8_t RegAddr, uint8_t RegValue) ** Descriptions: 写RA8875寄存器 ** input parameters: RegAddr:寄存器地址 RegValue:要写入的数据 ** output parameters: 无 ** Returned value: 无 *****************************************************************/ static void RA8875_WriteReg(uint8_t RegAddr, uint8_t RegValue) { RA8875_WriteCmd(RegAddr); RA8875_WriteData(RegValue); } /****************************************************************** ** Function name: uint8_tRA8875_ReadReg(uint8_t RegAddr) ** Descriptions: 读RA8875寄存器 ** input parameters: RegAddr:寄存器地址 ** output parameters: 无 ** Returned value: 读取的寄存器值 ********************************************************************/ static uint8_t RA8875_ReadReg(uint8_t RegAddr) { uint8_t value; RA8875_WriteCmd(RegAddr); //设置寄存器地址 value = (uint8_t)RA8875_ReadData16(); // 读取寄存器值 return value; } 初始化8875 /******************************************************************* ** Function name: voidRA8875_InitHard(void) ** Descriptions: 初始化RA8875驱动芯片 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 |
请到jp进行了解:http://openmcu.taobao.com
迎新年,免费学习开发板啦!