如何点亮奋斗STM32配套4.3寸TFT显示屏
- 格式:pdf
- 大小:66.05 KB
- 文档页数:2
Stm32的TFT LCD显示器控制学习笔记学习stm32,TFT LCD显示屏控制是很重要的一章,本人在初步学习STM32遇到了很多困难,所以把学习中积累的部分感觉重要的知识点罗列出来。
目前常用的TFT液晶内部驱动芯片是ILI9320,ILI9325系列,内部原理基本一致,我用的是ILI9320。
用stm32驱动液晶,实际上就是驱动ILI9320芯片。
点亮TFT LCD的具体步骤有:(1)stm32与ILI9320芯片管脚的初始化。
void LCD_Init(void); /*初始化LCD,也就是初始化LCD控制器ILI9320芯片与stm32控制器的管脚连接配置*/其中包括CS:TFTLCD片选信号,WR:向TFTLCD写入信号,RD:从TFTLCD读取信号,DB(15--0):16位双向数据线,RST:硬复位TFTLCD,RS:命令/数据标志(0 读写命令;1 读写数据),TFT模块有个控制器,名为ILI9320,该控制器自带显存,其显存总大小为172820,模块数据线与显存的对应关系位565方式SGRAM (Synchronous Graphics Random-Access Memory),同步图形随机存储器,是一种专为显卡设计的显存、一种图形读写能力较强的显存,由SDRAM改良而成。
SGRAM 读写数据时不是一一读取,而是以“块”(Block)为单位,从而减少了内存整体读写的次数,提高了图形控制器的效率。
同SDRAM一样,SGRAM也分普通SGRAM与DDR SGRAM 两种。
R0,这个命令有两个功能,如果对它写,则最低位位OSC,用于开启或关闭振荡器,而如果对它读,返回控制器型号。
我们知道了控制器型号,可以针对不同型号的控制器,进行不同对的初始化。
R3,入口模式命令。
重点关注I/D0,I/D1,AM这三个位,因为这3个位控制了屏幕的显示方向。
AM:控制GRAM更新方向,当AM=0的时候,地址以行方向更新,当为1的时候,地址以列方向更新。
4.3寸TFT显示器 SM.04TL/C使用手册出版状态:标准产品版本: V1.0上海新时达电气股份有限公司版权所有,保留一切权利在没有得到本公司许可时,任何单位和个人不得擅自摘抄、复制本书(软件等)的一部分或全部,不得以任何形式(包括资料和出版物)进行传播。
版权所有,侵权必究。
内容如有改动,恕不另行通知。
Copyright© by Shanghai STEP Electric Co., Ltd.All rights reservedThe information in this document is subject to change without notice . No partof this document may in any form or by any means(electronic,mechanical,micro-coping,photocopying,recording or otherwise)be reproduced,stored in a retrival system or transmitted without prior writtenpermission from Shanghai STEP Electric Corporation一、外形图片及尺寸图1 4.3寸TFT显示器外形图(竖显和横显)图2 4.3寸TFT显示器尺寸(mm)二、功能特点1、适用于新时达串行通讯系统;2、采用4.3寸TFT作为显示界面,真彩色显示(16位色),分辨率为480×272;3、能够显示电梯楼层、运行方向和背景图片;4、显示内容均存储在显示器内,可通过USB端口对其进行更新;5、即可做横显,也可以做竖显,通过拨码开关设置;6、显示界面尺寸:97mm×55mm。
三、端口定义图3 SM.04TL/C端子端子定义如下表所示:端子号端子定义插座型号插头型号JP1 电源与通讯 S4B-XH-A XHP-4JP2 上召按钮接口CH2510-4AW CH2510-4YJP3 下召按钮接口JP4 锁梯JP1为电源和通讯线接口,其接线示意图如图4所示:图4 电源和通讯接线示意图JP2、JP3和JP4的1脚和2脚接按钮灯,3脚和4脚接按钮的输入,如图5所示:图5 按钮接线示意图拨码开关说明如下:序号位号功能SW1.1 拨到“ON”,进入楼层设置状态,用于设置当前楼层,按上召按钮楼层值增加,按下召按钮楼层值减少,设置完毕后将其拨到“OFF”状态。
现在随着TFT屏的价格快速滑落,原来旧有的单色屏已经远远跟不上了发展的需要,加上触摸屏的成本也不是很高,因而无论在成本还是技术发展的优势上面,TFT屏发展已经获得了平分秋色的实力。
但是在传统意义上面来说,使用TFT 屏控制必然考虑到arm体现,因而,性价比较高的STM32就走上了台前。
我们现在使用的是一款STM32F103RBT6的芯片。
这个芯片具有很好的性价比:ARM Cortex-M3内核,128kB Flash,20KB RAM,最高工作时钟72MHz,64脚。
我们选用的是2.8寸的TFT屏,TFT屏的控制芯片是:ILI9325;其触摸屏控制芯片为ADS7843。
我们首先看到的是TFT屏和该芯片的接口,其接口定义如下:2.8寸彩色TFT屏模块接脚定义脚位功能描述脚位功能描述01脚3V3电源正17脚DB14数据线02脚GND电源负18脚DB15数据线03脚DB00数据线19脚CS屏片选,低有效04脚DB01数据线20脚RS寄存器选择05脚DB02数据线21脚WR写使能,低有效06脚DB03数据线22脚RD读使能,低有效07脚DB04数据线23脚RESET复位,低有效08脚DB05数据线24脚BACK_LIGHT背光控制,高有效09脚DB06数据线25脚MISO SPI主入从出10脚DB07数据线26脚INT触摸中断输出11脚DB08数据线27脚MOSI SPI主出从入12脚DB09数据线28脚BUSY触摸芯片忙检测13脚DB10数据线29脚SCLK SPI时钟14脚DB11数据线30脚SDA I2C数据线15脚DB12数据线31脚T_CS触摸芯片片选16脚DB13数据线32脚SCL I2C时钟线现在,我们使用IAR编译,然后通过JLINK下载一个程序进去,然后分析一下程序。
使用IAR的环境就不一一叙述了。
下面是ILI9325的控制程序的部分子程序以供参考。
详细程序见附件。
/****************************************************************函数名:Lcd配置函数功能:配置所有和Lcd相关的GPIO和时钟引脚分配为:PB8--PB15——16Bit数据总线低8位PC0--PC7——16Bit数据总线高8位PC8 ——Lcd_csPC9 ——Lcd_rs*PC10——Lcd_wrPC11——Lcd_rd*PC12——Lcd_rstPC13——Lcd_blaklight背光靠场效应管驱动背光模块*****************************************************************/void Lcd_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;/*开启相应时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC, ENABLE);/*所有Lcd引脚配置为推挽输出*//*16位数据低8位*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13| GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);/*16位数据高8位*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO _Pin_6|GPIO_Pin_7;GPIO_Init(GPIOC, &GPIO_InitStructure);/*控制脚*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;GPIO_Init(GPIOC, &GPIO_InitStructure);/*背光控制*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13;GPIO_Init(GPIOC, &GPIO_InitStructure);}void DataToWrite(u16 data){u16 temp;temp = GPIO_ReadOutputData(GPIOB);GPIO_Write(GPIOB, (data<<8)|(temp&0x00ff));temp = GPIO_ReadOutputData(GPIOC);GPIO_Write(GPIOC, (data>>8)|(temp&0xff00));}/******************************************************************** *********名称:u16 CheckController(void)*功能:返回控制器代码*入口参数:无*出口参数:控制器型号*说明:调用后返回兼容型号的控制器型号*调用方法:code=CheckController();********************************************************************* *******/u16 CheckController(void){u16 tmp=0,tmp1=0,tmp2=0;GPIO_InitTypeDef GPIO_InitStructure;DataToWrite(0xffff);//数据线全高Set_Rst;Set_nWr;Set_Cs;Set_Rs;Set_nRd;Set_Rst;Delay_nms(1);Clr_Rst;Delay_nms(1);Set_Rst;Delay_nms(1);LCD_WR_REG(0x0000,0x0001); //start oscillationDelay_nms(1);GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13| GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);/*16位数据高8位*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO _Pin_6|GPIO_Pin_7;GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_ResetBits(GPIOC,GPIO_Pin_8);GPIO_SetBits(GPIOC,GPIO_Pin_9);GPIO_ResetBits(GPIOC,GPIO_Pin_11);tmp1 = GPIO_ReadInputData(GPIOB);tmp2 = GPIO_ReadInputData(GPIOC);tmp = (tmp1>>8) | (tmp2<<8);GPIO_SetBits(GPIOC,GPIO_Pin_11);GPIO_SetBits(GPIOC,GPIO_Pin_8);/*16位数据低8位*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13| GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);/*16位数据高8位*/GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO _Pin_6|GPIO_Pin_7;GPIO_Init(GPIOC, &GPIO_InitStructure);return tmp;}/**********************************************函数名:Lcd初始化函数功能:初始化Lcd入口参数:无返回值:无***********************************************/void Lcd_Initialize(void){u16 i;Lcd_Light_ON;DataToWrite(0xffff);//数据线全高Set_Rst;Set_nWr;Set_Cs;Set_Rs;Set_nRd;Set_Rst;Delay_nms(1);Clr_Rst;Delay_nms(1);Set_Rst;Delay_nms(1);/*#ifdef ILI9325LCD_WR_REG(0x00e3,0x3008);LCD_WR_REG(0x00e7,0x0010);LCD_WR_REG(0x00ef,0x1231); //Set the internal vcore voltageLCD_WR_REG(0x0001,0x0100); //When SS = 0, the shift direction of outputs is from S1 to S720#endif //When SS = 1, the shift direction of outputs is from S720 to S1.#ifdef ILI9320LCD_WR_REG(0x00e5,0x8000);LCD_WR_REG(0x0000,0x0001);LCD_WR_REG(0x0001,0x0100);//SDelay_nms(10);#endifLCD_WR_REG(0x0002,0x0700);//Line inversion#if ID_AM==000LCD_WR_REG(0x0003,0x0000);//屏幕旋转控制TFM=0,TRI=0,SWAP=1,16 bits system interface swap RGB to BRG,此处ORG和HWM为0#elif ID_AM==001LCD_WR_REG(0x0003,0x0008);#elif ID_AM==010LCD_WR_REG(0x0003,0x0010);。
STM32单片机对TFTLCD的驱动设计STM32单片机对TFTLCD(TFT液晶屏)的驱动设计是一种基于STM32单片机的液晶显示技术。
TFTLCD是一种高分辨率、高色彩鲜艳的显示技术,常用于嵌入式设备的显示界面。
在设计STM32单片机对TFTLCD的驱动时,需要考虑到单片机的硬件资源和软件设计。
一、硬件设计:1.接口设计:根据TFTLCD的规格书,确定TFTLCD的接口类型(如SPI、RGB等),然后根据接口类型选择合适的引脚来连接TFTLCD与STM32单片机。
2.时钟设计:TFTLCD需要一个稳定的时钟信号来提供时序控制,可以使用STM32单片机的定时器来生成时钟信号。
3.电源设计:TFTLCD需要一定的电压供应,可以通过外部的电源模块提供合适的电压给TFTLCD。
二、软件设计:1.初始化:在驱动设计的开始阶段,需要初始化TFTLCD的相关参数,如分辨率、颜色格式等。
2.数据传输:根据TFTLCD的接口类型,使用合适的通信协议进行数据传输。
如果是SPI接口,可以使用STM32的SPI外设来传输数据;如果是RGB接口,可以通过GPIO口来控制数据线的高低电平。
3.显示控制:通过向TFTLCD发送相应的控制指令,来实现对显示内容的控制,如清屏、画点、画线、显示图像等。
4.刷新机制:TFTLCD的驱动需要实现刷新机制,即在TFTLCD的刷新周期内,不断向TFTLCD发送新的数据。
可以使用双缓冲机制,先将数据写入一个缓冲区,再将缓冲区的数据一次性发送给TFTLCD,以提高刷新效率。
在STM32单片机对TFTLCD的驱动设计中,需要根据具体的TFTLCD型号和规格书来进行具体的硬件和软件设计。
每个TFTLCD的驱动设计都是独特的,需要根据具体的需求和要求来进行设计。
同时,也需要根据单片机的性能和资源来进行合理的设计,以确保驱动的效率和稳定性。
总结来说,STM32单片机对TFTLCD的驱动设计需要同时考虑硬件和软件的设计。
STM32直接驱动RGB接口的TFT数字彩屏设计摘要:随着LCD 显示技术的迅速发展,LCD 显示屏得到了广泛的应用。
一般来说,对于RGB 总线接口的数字屏都需要有控制器才能正常显示,但是本文利用STM32 处理器设计出了一种能直接挂载RGB 接口数字屏的方法。
实际应用验证了该CPU 有足够的时间来处理用户程序,一般中低端的CPU 很难做到这一点。
本方案能成功应用在电脑横机的人际界面显示中,主要得益于STM32 的强大功能:DMA 传输以及高级定时器等的应用。
本方案降低了产品的硬件成本。
关键词:TFT;DMA;FSMC;定时器;STM32F103VCT6;电脑横机引言随着工业技术的不断发展,人机界面的开发及应用空前火热,为了具有比较友好的人机界面,TFT 数字彩屏被广泛的应用,但是TFT 彩屏通常都不带有控制器,所以现在驱动彩屏的方案大致有2 种:①采用ARM9 或者更高级别的平台,芯片上带有TFT 控制器,可以直接挂接TFT 数字屏。
②采用低端CPU 处理器平台,外加TFT 控制器模块,再挂接TFT 数字屏。
对于方案①来说,系统的复杂度会莫名地增加,再加上该类的平台中主MCU 多为BGA 封装,对于需求很多小量多样化产品的客户来说,较难以接受这样的方案;而②方案平白无故添加了一个LCD 控制器。
这两种方案无论哪一种都增加了硬件成本,本文提出了一种由STM32 的FSMC 总线直接挂载RGB 接口屏的方案,直接由一片CPU(STM32F103VC)来完成TFT 屏的显示而且不会占用全部的CPU 时间,从而节约了产品的成本。
1 总体方案与硬件整体架构现在,TFT 屏的价格与传统的单色液晶模块的价格几乎相当,甚至比一些尺寸差不多的单色屏还要便宜;而从客户和厂商的角度来看,很多设备/仪器/小型工业装备的制造商也纷纷寻求彩色TFT 的设计方案,以提升产品的竞争力和显示效果。
基于以上原因,笔者以STM32 处理器的FSMC 接口挂载RGB 接口数字屏。
AN3241应用笔记QVGA TFT-LCD直接驱动使用STM32F10xx FSMC外设前言本应用笔记讲解的低成本解决方案可使用任何未配备片上LCD控制器的STM32F10xxx微控制器,直接驱动QVGA TFT-LCD。
强大的STM32F10xxx器件具有嵌入式的FSMC(灵活的静态存储控制器),它可与片上DMA控制器共同使用,实现对TFT-LCD的直接驱动。
此低成本解决方案为数字相框、独立信息显示器、静态广告板等应用的理想选择。
本应用笔记说明了怎样将STM32F10xx用作LCD控制器,驱动一个与FSMC接口的QVGA3.5" TFT面板。
此解决方案实现的优化意味着仅需1% CPU负荷即可显示静态图片。
固件的演示已在320x240像素分辨率的CT05350DW0000T QVGA 3.5" LCD模块上开发并测试。
2014年11月Doc ID 17695 Rev 11/21目录AN3241目录1STM32 QVGA TFT-LCD直接驱动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1STM32 QVGA TFT-LCD直接驱动原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . 32STM32 QVGA TFT-LCD驱动实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1QVGA TFT-LCD信号与STM32F10xx FSMC接口 . . . . . . . . . . . . . . . . . . 62.2图片格式与分辨率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3图片源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4STM32 QVGA LCD-TFT直接驱动流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4.1显示模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5TFT-LCD背光控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3硬件参考设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134固件包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16项目. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.1固件安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.2如何配置QVGA TFT-LCD参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5结论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6修订历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202/21Doc ID 17695 Rev 11 STM32 QVGA TFT-LCD直接驱动STM32微控制器具有一个嵌入式的灵活静态存储控制器(FSMC),可连接NAND、NOR、SRAM、PSRAM等外部存储器接口。
STM32 直接驱动RGB 接口的TFT 数字彩
随着工业技术的不断发展,人机界面的开发及应用空前火热,为了具有比较友好的人机界面,TFT 数字彩屏被广泛的应用,但是TFT 彩屏通常都
不带有控制器,所以现在驱动彩屏的方案大致有2 种:
①采用ARM9 或者更高级别的平台,芯片上带有TFT 控制器,可以
直接挂接TFT 数字屏。
②采用低端CPU 处理器平台,外加TFT 控制器模块,再挂接TFT 数
字屏。
对于方案①来说,系统的复杂度会莫名地增加,再加上该类的平台中主MCU 多为BGA 封装,对于需求很多小量多样化产品的客户来说,较难以
接受这样的方案;而②方案平白无故添加了一个LCD 控制器。
这两种方案无论哪一种都增加了硬件成本,本文提出了一种由STM32 的FSMC 总线直接
挂载RGB 接口屏的方案,直接由一片CPU(STM32F103VC)来完成TFT 屏的。
奋斗STM32开发板光盘资料指南 奋斗STM32开发板光盘资料指南奋斗STM32开发板光盘包含了奋斗嵌入式开发工作室在STM32的开发成果、文档以及外围设备的资料。
目录说明如下:JLINK V8目录:包含了适用于STM32以及其他类型ARM的JTAG仿真器JLINK V8的驱动程序以及固件修复指南和固件文件。
奋斗开发板教程目录:包含了奋斗开发板的例程手册、视频教程和入门手册等。
来自网络的STM32教程目录:包含了来自网络的对于MDK开发环境以及STM32外设的视频教学文件。
奋斗STM32开发板例程目录:7寸屏显示例程:包含了基于群创7寸屏方案的奋斗STM32显示例程奋斗STM32开发板MINI+2.4寸屏例程:包含了奋斗STM32开发板MINI的所有基础例程及针对2.4寸屏模块的显示例程(包括基于ucos ucgui的例程) 奋斗STM32开发板V3+2.4寸屏例程:包含了奋斗STM32开发板V3的所有基础例程及针对2.4寸屏模块的显示例程(包括基于ucos ucgui的例程) 奋斗STM32开发板MINI+3寸屏例程:包含了奋斗STM32开发板MINI的所有基础例程及针对3寸屏模块的显示例程(包括基于ucos ucgui的例程) 奋斗STM32开发板V3+3寸屏例程:包含了奋斗STM32开发板V3的所有基础例程及针对3寸屏模块的显示例程(包括基于ucos ucgui的例程)奋斗STM32开发板MINI+4.3寸屏例程:包含了奋斗STM32开发板MINI的所有基础例程及针对4.3寸屏模块的显示例程(包括基于ucos ucgui的例程) 奋斗STM32开发板V3+4.3寸屏例程:包含了奋斗STM32开发板V3的所有基础例程及针对4.3寸屏模块的显示例程(包括基于ucos ucgui的例程) 奋斗TINY开发板例程:包含了奋斗STM32开发板TINY的所有例程奋斗STM32开发板文档目录:包含了所有有关奋斗STM32开发板板及奋斗板模块及外设的文档。