CPLD在DSP与液晶及键盘接口设计中的应用

2021-09-22 06:13姚国珍尚秋峰
电子技术与软件工程 2021年15期
关键词:数据总线数据线液晶

姚国珍 尚秋峰

(华北电力大学(保定) 河北省保定市 071003)

数字信号处理器(Digital Signal Processing, DSP)是一种适合完成实时数字信号处理算法的微处理器,广泛应用在通信、家用电器、军事和医疗等领域。美国TI公司的TMS320C5509A为C5000系列中的一款低功耗16位定点DSP,在信号分析、数字通信、图形图像处理等方面应用较普遍[1]。在DSP构成的微处理器系统中,通常采用液晶和键盘作为人机交互工具,可实现参数或命令的输入及处理结果的显示输出等功能。

在微处理器系统中,进行液晶和键盘扩展时,通常采用输入输出端口(General-Purpose Input/Output,GPIO)实现。由于C5000系列DSP主要针对便携消费电子产品而设计,所以单独的GPIO较少。很多可以用作GPIO的引脚是和片上外设功能复用的,当其作为片上外设功能引脚时,就不能作为GPIO来使用[2]。所以,进行液晶和键盘扩展时,不能采用GPIO的方法进行扩展,否则会用影响片上外设的使用。

针对上述问题,本文采用复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)设计了点阵式液晶和矩阵键盘与TMS320C5509A的接口方法。利用本文的设计方法,通过DSP的外部总线即可实现DSP对液晶和键盘的控制,不占用GPIO资源,从而可以提高整个DSP系统设计的冗余度。

1 接口框图

DSP与液晶和键盘的接口框图如图1所示。DSP通过外部数据总线、地址总线及控制信号与CPLD相连,其中D7-D0为低8位数据总线,AWE为异步写使能信号,ARE为异步读使能信号,CE2为空间片选信号;为了减少电路布线压力,地址总线只用了其中一部分,包括A13-A11及A3-A0。液晶采用了128x64点阵式显示器,其接口有RS(指令/数据选择信号)、RW(读写选择信号),EN(使能信号),DB7-DB7(数据线)。键盘采用了4x4矩阵键盘,其中DK3-DK0对应矩阵键盘的“行”,DK7-DK4对应矩阵键盘的“列”。

图1:接口原理框图

2 CPLD程序设计

2.1 液晶部分

对液晶进行驱动时,需要产生两组信号,一组是控制信号RS、RW、EN和RST,另一组是用于传输命令或显示数据的总线信号DB7-DB0。上述两组信号都由DSP的数据线产生,图2给出了两组信号的CPLD图形化编程方法。四个控制信号RST、RS、RW和EN通过锁存器74273锁存数据线的低四位D3-D0产生,74273的锁存信号CLK由地址总线A13-A11和A3-A1、写信号AWE以及空间片选信号CE3译码产生,如图2(a)所示。地址信号A1和A12经过非门,并与其余地址信号、AWE和CE3进行“或非”运算后得到CLK信号,所以当A1和A12为逻辑“1”,其余信号为逻辑“0”时,则CLK为逻辑“1”,产生一个上升沿变化,可将数据总线D3-D0的状态锁存到74273的输出端。当CE3为逻辑“0”时,访问的是DSP的字地址为0x600000开始的空间,所以A1和A12位为逻辑“1”、其余位为逻辑“0”时,对应的地址为0x600801,即当DSP向地址0x600801进行写数据时,即可将D3-D0的状态锁存到74273的输出端,从而产生液晶的控制信号。限于CPLD引脚数量的限制,未将DSP的全部地址信号引入CPLD,只引入了A13-A11及A3-A1。所以,产生液晶控制信号的地址并不是唯一的,即只要满足A1和A12位为逻辑“1”、A13、A11、A3、A2位为逻辑“0”时都满足要求,0x600801只是多个地址中的一个,所以如果DSP系统中还扩展了其它外设及存储器,应注意避免地址冲突情况的发生。

液晶的数据信号由DSP的数据线D7-D0产生。由于DSP的数据线还要驱动键盘、存储器等其它器件,在不驱动液晶时,需要液晶与DSP的数据线进行隔离,所以,产生液晶数据信号时,除了要用74273进行锁存外,还采用了74244完成总线隔离,如图2(b)所示。74244的选通信号由一片74273通过锁存DSP数据线的D0位产生,74273的锁存信号的产生方式与图2(a)中74273的锁存信号产生方式相同,对应的地址为0x600800。74244的输入端为74273锁存的DSP的数据线D7-D0,此74273的锁存信号对应的地址为0x600802。

图2:液晶驱动信号产生

综上,对液晶进行控制需要访问3个地址,相当于在CPLD中定义了3个寄存器,寄存器地址分别是0x600800、0x600801和0x600802,根据寄存器的功能,分别称三个寄存器为数据选通寄存器、控制寄存器和数据寄存器,分别用GR、CR和DR表示。

2.2 键盘部分

键盘模块采用了4x4的矩阵键盘,通过行列扫描方式工作[3],如图3所示。键盘共包括8个引脚DK7-DK0,其中DK3-DK0对应矩阵键盘的“行”,DK7-DK4对应矩阵键盘的“列”。键盘工作时,首先依次向行引脚写入扫描数据1110、1101、1011和0111,然后读取列引脚的状态,通过行列数据即可确定是哪个按键按下。图4给出了CPLD的图形化编程方法,由图3可知,写行数据时,通过74273将DSP数据线的D7-D4锁存到矩阵键盘的DK7-DK4引脚上,对应的地址为0x600803;读列数据时,通过74244将DK3-DK0的状态读取到DSP的数据线D3-D0上,对应的地址为0x600804。

图3:键盘引脚图

图4:键盘驱动信号产生

3 驱动程序设计

3.1 液晶部分

用C语言进行编程时,需要根据液晶的各个引脚的时序要求,使CPLD的输出引脚产生相应的信号。图5给出了对液晶进行写操作时的时序图,由图5可知,进行写操作时,首先要使RS和R/W信号有效,当向液晶写要显示的内容时,RS为高电平,当向液晶写控制命令时,RS为低电平;由于是对液晶进行写操作,所以R/W为低电平。然后,使能信号E变为高电平,数据总线上出现写入液晶的数据,持续一段时间后,使能信号E再变为低电平,完成一次写操作。

图5:液晶写操作时序图

根据液晶写操作的时序图,图6给出了在DSP上编程时的流程图。首先向GR写入0x00,此时DSP的地址总线上出现0x600800,数据总线上出现0x00,D0位为“0”,按照图2(b)所示逻辑,74244将被选通。然后向CR写入0x03(或0x01),使E=0、R/W=0、RS=1(或0),向DR写入显示数据或命令。再通过依次向CR写入0x0b(或0x09)和0x03(或0x01)使信号E产生一段高电平信号,将显示数据或命令写入到液晶中,为了使高电平信号持续时间满足时序要求,需要在此处加入一段时间的延时。最后向GR写入0x01,使D0位变为“1”,将数据总线断开,完成一次液晶的写操作。

图6:液晶写操作流程图

向液晶进行写操作的C语言程序如图7所示,其中void LCD_writeData (unsigned int content)和void LCD_writeCommand (unsigned int content)分别是向液晶写数据和写命令的函数,函数的参数unsigned int content为写入的字节,函数的前面,采用宏定义的方式了定义了三个寄存器名称。

图7

3.2 键盘部分

对键盘进行编程时,首先写入行数据,然后读取列数据,并根据行列数据判断是否有键按下。如果有键按下,则等待一段时间,再次判断是否有键按下,以防止出现抖动导致的误判。当判断确实有键按下后,则可根据写入的行数据和读取的列数据判断是哪个按键按下,扫描键盘的流程图如图8所示。

图8:键盘扫描程序流程图

下面给出了用C语言编程实现的键盘扫描程序,扫描过程由一个for循环完成,每循环一次完成键盘一行的扫描。当判断出按下的键后,利用printf函数输出该键对应的符号,实际应用时,可将printf函数替换为按键对应的子函数或功能代码。如图9所示。

图9

4 总结

本文针对C5000系列DSP的GPIO较少的问题,采用CPLD设计了TMS320VC5509A与液晶和键盘的接口电路,详细给出了CPLD图形化编程实现方法和DSP的C语言编程的实现方法。该方法采用TMS320C5509A的数据总线和地址总线访问液晶和键盘,避免了占用过多的GPIO的问题。本文的设计方法不仅可应用在DSP系统中,在其它具有外部总线的微处理器构成的系统中同样适用。

猜你喜欢
数据总线数据线液晶
不可压液晶方程组的Serrin解
《液晶与显示》征稿简则
第三方编织数据线材质更抗拉、更耐用
智能电网调度控制系统中的数据总线技术研究
数据线接口超声波焊接设备设计
液晶与显示2015年第30卷第1期 目录
液晶与显示2014年第29卷第2期 目录
途安车数据总线诊断接口故障