显示控制器S6B0724的接口技术
引言
s6b0724[1]是samsung公司1999年推出的一款大规模的显示控制驱动芯片,用于控制和驱动点阵式液晶屏。这款显示控制芯片将控制电路、ram和驱动电路集成在单一芯片中,使其在系统成本方面具有优势。sep3203是由东南大学国家asic工程中心设计的一款基于arm7tdmi内核的16/32位嵌入式微处理器。虽然sep3203自带lcd控制器,但是其信号适用于不带ram的灰度或彩色液晶屏,不支持在工控系统中常使用的带ram的黑白液晶显示屏,所以工控系统应用中需要通过外接显示控制器来实现液晶显示。下面介绍s6b0724显示控制器在以sep3203无核心的工控系统中的应用。
1 系统介绍
1.1 设计要求
系统要求通过总线挂接的方式实现64×192黑白点阵的显示。该点阵屏的规格较特殊,但在电话终端和小型收款机等工控系统中经常使用。常见的几款中小规模显示控制器[2,3]所控制的点阵范围都比其小(65×132,132×176)。需要用2片s6b0724控制该液晶屏,同时要求只使用1个片选信号来实现对2片s6b0724的控制;
1.2 系统构成
系统主要由sep3203处理器、电平转换芯片74lvxc4245和74hct541,以及2片s6b0724显示控制器组成。如图1所示。

sep3203是一款16/32位嵌入式微处理器[4],由东南大学国家asic工程中心设计,采用业界标准的arm7tdmi内核,amba总线结构。sep3203处理器内嵌20kb零等待的静态存储器(sram),提供sdram控制器;可支持nor
flash、nand flash启动;可扩展支持各种sram接口的设备。提供可自由控制的gpio口,同时具有多种控制器接口。
s6b0724是一款显示控制驱动芯片,最大支持65×132的点阵显示,同时提供主从式结构的扩展;内部带有ram,可以支持屏幕自刷新;有65个common输出,165个segment输出。它的mpu接口可支持8080和6800两种时序模式。模式的选择通过配置外部引脚来实现。
由于单片s6b0724只支持65×132点阵的显示,而设计要求实现64×192点阵的显示,因此在图1中使用了2片s6b0724。另外,由于s6b0724使用5v信号,vih的最小值为4v(0.8vdd),而sep3203的总线采用的是3v信号(通常的嵌入式cpu使用的都是3v总线),所以sep3203无法直接驱动s6b0724,需要作电平转换。因此图1中在sep3203与s6b0724之间增加了电平转换芯片,以实现3v信号与5v信号的双向转换。
电平转换芯片选用的是74lvxc4245[5]和74hct541[6]。这两款芯片都是普通的逻辑芯片,很多公司都生产。74lvxc4245是双向电平转换芯片,3v和5v电路电源供电;可以支持3v到5v的双向电平转换,但需要有信号电平转换方向。74hct541是单向的缓冲芯片,采用5v电源,可以将输入的3v信号转换成5v信号后输出。
2 硬件设计
2.1 总线接口的分析
s6b0724可与各种mpu相连,具体连接方式取决于mpu所使用的总线类型。其提供两种mpu的信号接口协议:一种是6800系列mpu接口协议,如图2所示;另一种是8080系列mpu接口协议,如图3所示。将两种接口协议与sep3203的接口协议对比,可见sep3203的接口协议属于8080接口协议,因此采用8080的接口实现s6b0724与sep3203的连接。sep3203的接口协议如图4所示。




根据8080接口协议,s6b0724与mpu接口信号的定义如表1所列。s6b0724的d0-d7信号应与sep3203的data0-data7信号连接;s6b0724的rd、wr、cs信号应分别与sep3203的oe、we、cs信号连接。rs是访问控制寄存器与ram的选择信号--rs为低时访问s6b0724的控制寄存器,rs为高时访问s6b0724中的ram。其作用相当于地址信号,因此与sep3203的地址线连接。rst是s6b0724的复位信号,可由sep3203的gpio产生。
2.2 双s6b0724控制器接口设计
由于要支持64×192的点阵显示,所以在该设计中需要使用2片s6b0724(以s6b0724_a和s6b0724_b来表示)。图1中s6b0724_a控制液晶屏的64×132个点,s6b0724_b控制剩下的64×60个点。由于总线设备较多,只有1个片选信号能用于对2片s6b0724芯片的操作;同时s6b0724与sep3203的总线也需要作电平转换,因此在该接口设计中利用了电平转换芯片实现了该功能,并没有再增加额外的逻辑芯片。
分析s6b0724与mpu的接口信号,发现其中rd、wr、rst、cs、rs信号只需单向传输(从mpu传向s6b0724),只有d0-d7信号需要双向传输。图5中,使用74hct541实现3v信号到5v信号的单向电平转换,74lvxc4245实现3v信号与5v信号的双向电平转换。
图3中cs1b、cs2、cs信号是同时变化的(cs1b信号为低,cs2信号为高时s6b0724被选中)。由于在实际使用中cs2信号是固定接高电平,所以cs1b信号就是文中s6b0724芯片的cs信号。图4中sep3203总线的地址信号和片选信号也是同时变化的,因此考虑使用地址信号来代替片选信号。但如果直接用地址信号来代替片选信号会导致总线对其他设备操作时也选中s6b0724,即两个总线设备被同时选中,从而产生错误。在该设计中,利用电平转换芯片的特性解决了这一问题。如图5所示,使用了addr3、addr4作为s6b0724的片选信号(lcd_csa、lcd_csb)。addr2作为选择对s6b0724寄存器或ram操作的信号(lcd_rs)。sep3203的片选信号lcd_ncsf连接74hct541的使能端oe。当lcd_ncsf信号为低时74hct541被使能,oe、we、addr3、addr4、addr2信号被转换成相应的5v信号(lcd_/rd、lcd_/wr、lcd_csa、lcd_csb、lcd_rs)输出到s6b0724;当lcd_ncsf信号为高时74hct541停止工作,此时74hct541输出高阻态,为避免噪声干扰,输出端信号lcd_/rd、lcd_/wr、lcd_csa、lcd_csb、lcd_rs应被上拉至5v。在sep3203的片选lcd_ncsf无效(高电平)时,由于信号lcd_csa,lcd_csb被拉高,所以此时2片s6b0724控制器都未被选中,任何操作对其都是无效的,从而避免了在总线对其他设备操作时可能对s6b0724产生的误操作。

数据信号的电平转换类似于控制信号的电平转换。74lvxc4245是双向电平转换芯片,图5中的lcd_dir信号由sep3203的gpio产生,用于控制74lvxc4245电平转换方向的信号。当lcd_dir为低时,信号由b端传向a端,即由总线传向s6b0724(写操作);当lcd_dir为高时,信号由a端传向b端,即由s6b0724传向总线(读操作)。信号lcd_d0-lcd_d7也需要上拉,防止当74lvxc4245的输出为高阻时,外部噪声在其输出端产生错误信号。
值得一提的是,s6b0724显示控制器在pcb板上的位置靠近液晶屏,与sep3203之间的距离很大。在pcb布局时,需要注意电平转换芯片的位置,因为其不但有电平转换的作用,而且还能缓冲总线信号,使总线和s6b0724显示控制器隔离,避免总线过长。电平转换芯片的布置应该尽量靠近总线,减小总线的长度,从而避免产生由总线过长造成的信号延时及噪声干扰问题。
虽然rst信号也是单向传输的,但rst信号的电平转换电路却是单独设计的。如果使用74hct541完成电平转换,会有两个问题:(1)当lcd_ncsf失效时74hct541不工作,此时lcd_reset信号无法传递到rst端,rst端始终是高电平(被上拉至5v),因此s6b0724无法被复位;(2)在74hct541工作时,因为lcd_ncsf的脉冲宽度等于总线周期(最大值约为几百ms),所以输出的rst信号的最大脉冲宽度也等于总线周期;而s6b0724要求的sct信号最小脉冲宽度是1μs,所以用74hct541无法产生正确的rst信号,此时s6b072同样无法被复位。在图5中,该信号的电平转电路是由晶体管和电阻构成的。
3 驱动程序
该部分软件主要依照s6b0724的初始化流程、命令参数列表及其他资料[7]编写的。s6b0724的访问地址只有两个:一个是寄存器地址(通过写入不同的命令字来实现对s6b0724的控制);另一个是ram端口(显示数据由此写入)。
首先需要根据s6b0724的接口设计计算其各端口的访问地址。sep3203的片选信号lcd_ncsf所对应的基址是0x34000000。图5中的s6b0724_a、s6b0724_b的寄存器访问地址分别是0x340000100、0x34000020;ram的访问地址分别是0x34000018、0x34000028。特别是在该接口设计允许sp3203同时访问s6b0724_a和s6b0724_b,寄存器的访问地址为0x34000000,ram的访问地址为0x34000008。在实际使用中,可以利用这个特点对两个控制同时初始化,提高软件效率。

s6b0724的初始化流程如图6所示。先冷复位s6b0724,然后将74lvxc4245的电平转换方向设置为从总线向数据线。通过写s6b0724的控制寄存器对s6b0724软复位,然后选择所用的显示方式和扫描方向,再选择背光亮度;通过写寄存器的方式打开s6b0724内部的电压反转器,等待10ms后再打开电压生成器。延迟10ms后,打开电压跟随器,等所有电压都稳定后(约等待10ms)再设定液晶屏的工作电压,最后开始显示。图像的显示通过函数void write_all lcd(void)来实现。其功能是将所要显示的点阵数据送入2片s6b0724。
初始化程序如下:
4 结论
该设计已在以sep3203为核心的嵌入式系统中被实际应用。采用s6b0724显示控制器后,解决了sep3203微处理器在工控应用中使用液晶屏的问题。使用1个片选信号实现了对2个显示控制器的控制。2个以上显示控制器的控制也可通过类似方法实现。该设计可以在金融收费系统、税务管理系统、电话终端等众多系统中应用。
评论