这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 上一修订版 两侧同时换到之后的修订记录 | ||
tft_lcd触摸屏实验 [2019/12/13 09:15] zgf |
tft_lcd触摸屏实验 [2020/01/14 17:04] zgf |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ***银杏科技有限公司/Gingko Technology Co.,Ltd.** | + | | **银杏科技有限公司旗下技术文档发布平台** |||| |
- | ***技术支持论坛:http://www.eeschool.org** | + | |技术支持电话|**0379-69926675-801**||| |
- | ***旗舰店:http://icore.taobao.com** | + | |技术支持邮件|Gingko@vip.163.com||| |
- | ***技术支持邮件:GINGKO@vip.163.com** | + | |技术论坛|http://www.eeschool.org||| |
- | ***电话:0379-69926675** | + | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ |
- | ***更新日期:12/13/2019** | + | | V1.0 | 2019-12-25 | gingko | 初次建立 | |
- | ***版本号:v1.1** | + | |
- | ***更新说明:更新了图片格式** | + | |
===== TFT_LCD触摸屏实验 ===== | ===== TFT_LCD触摸屏实验 ===== | ||
行 15: | 行 14: | ||
=== 二、实验设备及平台 ==== | === 二、实验设备及平台 ==== | ||
- | -iCore3 双核心板( FPGA型号为EP4CE10F17)。 | + | -iCore3 双核心板( FPGA型号为EP4CE10F17)。[[https://item.taobao.com/item.htm?id=524229438677|点击购买]] |
- | -转接板和40P的FPC连接线 | + | -转接板和40P的FPC连接线。 |
- | -iCore3(7寸TFT_LCD)液晶显示模块 | + | -iCore3(7寸TFT_LCD)液晶显示模块。[[https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-251734908.20.1a34750bPZ3UBu&id=560722486083|点击购买]] |
- | -Blaster(或相同功能的)仿真器和USB线缆 | + | -Blaster(或相同功能的)仿真器。[[https://item.taobao.com/item.htm?id=554869837940|点击购买]] |
- | -Micro USB线缆 | + | -Micro USB线缆和USB线缆。 |
- | -QuartusII开发软件(本实验中使用的是13.1版本) | + | -QuartusII开发软件(本实验中使用的是13.1版本)。\\ |
- | {{ :icore3:图31-1_硬件连接实物图.jpg?600 |:图31-1硬件连接实物图}} | + | {{ :icore3:图31-1_硬件连接实物图.jpg?direct&700 |图31-1硬件连接实物图}} |
**注意事项1:** 注意FPC转接板和核心板之间引脚要对齐(如图31-1中**①**处所示,转接板和核心板边缘要对齐)。 | **注意事项1:** 注意FPC转接板和核心板之间引脚要对齐(如图31-1中**①**处所示,转接板和核心板边缘要对齐)。 | ||
行 35: | 行 34: | ||
*下图是AD转换芯片ads7843的典型应用电路,从图中也可以看出触摸屏作为等效电阻网络,通过四线连接到ads7843芯片的X+、X-、Y+、Y- 等引脚。经AD芯片转换后发送给FP GA或者ARM处理,从而判断触摸点的位置。 | *下图是AD转换芯片ads7843的典型应用电路,从图中也可以看出触摸屏作为等效电阻网络,通过四线连接到ads7843芯片的X+、X-、Y+、Y- 等引脚。经AD芯片转换后发送给FP GA或者ARM处理,从而判断触摸点的位置。 | ||
- | {{ :icore3:图31-2_ads7843基础应用电路.png?800 |图31-2 ads7843基础应用电路}} | + | {{ :icore3:图31-2_ads7843基础应用电路.png?direct |图31-2 ads7843基础应用电路}} |
== 2、ads7843触摸屏AD芯片的配置 == | == 2、ads7843触摸屏AD芯片的配置 == | ||
*本次实验所用触摸屏模块的AD芯片ads7843,具有同步串行接口,内置12位取样模数转换器,最高转换速率可达125KHz。由ads7843的原理图可以看到,AD芯片和FPGA之间是通过串行接口传送数据和指令的。其串行接口由DIN,DOUT,CS,DCLK 四个信号线构成。其中,DCLK提供串行传输时钟信号,DIN和DOUT则用与FPGA和AD芯片间指令数据的传输。CS作为选通信号,置低位有效。 | *本次实验所用触摸屏模块的AD芯片ads7843,具有同步串行接口,内置12位取样模数转换器,最高转换速率可达125KHz。由ads7843的原理图可以看到,AD芯片和FPGA之间是通过串行接口传送数据和指令的。其串行接口由DIN,DOUT,CS,DCLK 四个信号线构成。其中,DCLK提供串行传输时钟信号,DIN和DOUT则用与FPGA和AD芯片间指令数据的传输。CS作为选通信号,置低位有效。 | ||
- | {{ :icore3:图31-3_触摸屏模块ad转换电路原理图.png?600 |图31-3 触摸屏模块ad转换电路原理图}} | + | {{ :icore3:图31-3_触摸屏模块ad转换电路原理图.png?direct |图31-3 触摸屏模块ad转换电路原理图}} |
== 3、触摸动作识别 == | == 3、触摸动作识别 == | ||
*通过前面对触摸屏原理的学习,如果想识别到触摸动作,那么就要对ADS7843传送到FPGA的数据进行断,是否为触摸屏无触碰状态下的数值。 | *通过前面对触摸屏原理的学习,如果想识别到触摸动作,那么就要对ADS7843传送到FPGA的数据进行断,是否为触摸屏无触碰状态下的数值。 | ||
*图31-4是理想状态下识别的电压和输出编码之间对应关系,理论上触摸屏的输入坐标识别精度可达有效位宽的1/4096,对应的输出编码从3’h000到3’hfff。通过对其输出编码进行处理,判断是否为无触碰状态下的值,从而判断触摸动作有无发生。 | *图31-4是理想状态下识别的电压和输出编码之间对应关系,理论上触摸屏的输入坐标识别精度可达有效位宽的1/4096,对应的输出编码从3’h000到3’hfff。通过对其输出编码进行处理,判断是否为无触碰状态下的值,从而判断触摸动作有无发生。 | ||
- | {{ :icore3:图31-4_理想状态下ads7843输入电压和输出编码之间的对应关系图.png?400 |图31-4 理想状态下ads7843输入电压和输出编码之间的对应关系图}} | + | {{ :icore3:图31-4_理想状态下ads7843输入电压和输出编码之间的对应关系图.png?direct |图31-4 理想状态下ads7843输入电压和输出编码之间的对应关系图}} |
=== 四、代码讲解 ==== | === 四、代码讲解 ==== | ||
*本次实验主要内容包括TFT_LCD的显示驱动,触摸屏的配置和驱动,TFT_LCD屏显示内容的控制及触摸动作的识别。由于TFT驱动和色彩显示部分前面实验已经做过讲解,这里主要讲一下触摸屏的驱动和触摸动作的识别部分。 | *本次实验主要内容包括TFT_LCD的显示驱动,触摸屏的配置和驱动,TFT_LCD屏显示内容的控制及触摸动作的识别。由于TFT驱动和色彩显示部分前面实验已经做过讲解,这里主要讲一下触摸屏的驱动和触摸动作的识别部分。 | ||
行 64: | 行 63: | ||
*这里DIN_x和DIN_y对应的指令值在ADS7843的手册中可以查到,是要配置到AD转换芯片的寄存器的值。DIN_x和DIN_y是X方向和Y方向转换时需要分别输入到AD寄存器的值。S位表示数据传输起始,必须置1。A2、A1、A0组合进行通道X或通道Y的选择。MODE是精度选择位,这里我们用的是12位输出,MODE位置0。SER/DFR表示参考电压的输入模式,这里选择的是0,即差动输入模式,PD1和PD0是省电模式的选择,00代表在两次AD转换之间掉电。如此,明白DIN_x和DIN_y被赋的值所代表的含义了吧? | *这里DIN_x和DIN_y对应的指令值在ADS7843的手册中可以查到,是要配置到AD转换芯片的寄存器的值。DIN_x和DIN_y是X方向和Y方向转换时需要分别输入到AD寄存器的值。S位表示数据传输起始,必须置1。A2、A1、A0组合进行通道X或通道Y的选择。MODE是精度选择位,这里我们用的是12位输出,MODE位置0。SER/DFR表示参考电压的输入模式,这里选择的是0,即差动输入模式,PD1和PD0是省电模式的选择,00代表在两次AD转换之间掉电。如此,明白DIN_x和DIN_y被赋的值所代表的含义了吧? | ||
| | ||
- | {{ :icore3:图31-5_ads7843控制存储器1.png?600 |图31-5 ads7843控制寄存器1}}\\ | + | {{ :icore3:图31-5_ads7843控制存储器1.png?direct |图31-5 ads7843控制寄存器1}}\\ |
- | {{ :icore3:图31-5_ads7843控制寄存器2.png?600 |图31-5 ads7843控制寄存器2}} | + | {{ :icore3:图31-5_ads7843控制寄存器2.png?direct |图31-5 ads7843控制寄存器2}} |
*其次是DCLK,这部分代码是通过对30MHz时钟进行计数,分频产生100KHz时钟信号,即DCLK,用于串行通信。这里我们先看一下ADS7843的串行通信时序图,如下: | *其次是DCLK,这部分代码是通过对30MHz时钟进行计数,分频产生100KHz时钟信号,即DCLK,用于串行通信。这里我们先看一下ADS7843的串行通信时序图,如下: | ||
- | {{ :icore3:图31-6_ads7843串行通讯时序图.png?800 |图31-6 ads7843串行通讯时序图}} | + | {{ :icore3:图31-6_ads7843串行通讯时序图.png?direct |图31-6 ads7843串行通讯时序图}} |
*从图中可以看到,DIN和DOUT的电平在DCLK的上升沿是需要保持稳定的,而且输入和输出AD芯片的数据都是先高位后地位的。前面我们有讲到,DCLK是以30MHz时钟为基础分频产生的,先来看一下这段代码: | *从图中可以看到,DIN和DOUT的电平在DCLK的上升沿是需要保持稳定的,而且输入和输出AD芯片的数据都是先高位后地位的。前面我们有讲到,DCLK是以30MHz时钟为基础分频产生的,先来看一下这段代码: | ||
<code verilog> | <code verilog> | ||
行 232: | 行 231: | ||
*程序调试编译完成后下载到我们的开发套件上,可以看到,铅笔碰触屏幕的时候,TFT_LCD液晶屏颜色刷新为红色,当没有碰触的时候,TFT_LCD液晶屏刷新成绿色。 | *程序调试编译完成后下载到我们的开发套件上,可以看到,铅笔碰触屏幕的时候,TFT_LCD液晶屏颜色刷新为红色,当没有碰触的时候,TFT_LCD液晶屏刷新成绿色。 | ||
- | {{:icore3:图31-7_7寸液晶屏触摸效果展示1_副本.jpg?200|图31-7 7寸液晶屏触摸效果展示1}}{{:icore3:图31-7_7寸液晶屏触摸效果展示2_副本.jpg?200|图31-7 7寸液晶屏触摸效果展示2}} | + | {{:icore3:图31-7_7寸液晶屏触摸效果展示1_副本.jpg?direct&200|图31-7 7寸液晶屏触摸效果展示1}}{{:icore3:图31-7_7寸液晶屏触摸效果展示2_副本.jpg?direct&200|图31-7 7寸液晶屏触摸效果展示2}} |
=== 六、拓展实验 === | === 六、拓展实验 === | ||
-将屏幕区域均分四块,实现触碰不同区域,切换不同颜色。 | -将屏幕区域均分四块,实现触碰不同区域,切换不同颜色。 | ||