基于SEP3203为核心的工控系统
址信号来代替片选信号。但如果直接用地址信号来代替片选信号会导致总线对其他设备操作时也选中S680724,即两个总线设备被同时选中,从而产生错误。在该设计中,利用电平转换芯片的特性解决了这一问题。如图5所示,使用了ADDR3、ADDR4作为S680724的片选信号(LCD_CSA、LCD_CSB)。ADDR2作为选择对S680724寄存器或RAM操作的信号(LCD)_RS)。SEP3203的片选信号ICDnCSF连接74HCT541的使能端()E。当LCD_nCSF信号为低时74HCT54l被使能,OE、WE、ADDR3、ADDR4、ADDR2信号被转换成相应的5V信号(LCD/RD、LCD_/WR、LCD_CSA、LCD_CSB、LCD_RS)输出到S680724;当LCD_nCSF信号为高时74HCT541停止工作,此时74HCT54l输出高阻态,为避免噪声干扰,输出端信号LCD_/RD、LCD_/WR、LCD_CSA、LCD_CSB、LCD_RS应被上拉至5 V。在SEP3203的片选LCD_nCSF无效(高电平)时,由于信号LCD_CSA、LCD_CSB被拉高,所以此时2片S680724控制器都未被选中,任何操作对其都是无效的,从而避免了在总线对其他设备操作时可能对S680724产生的误操作。 数据信号的电平转换类似于控制信号的电平转换。74LVXC4245是双向电平转换芯片,图5中的LCD_DIR信号由SEP3203的GPIO产生,用于控制74LVXC4245电平转换方向的信号。当LCD_DIR为低时,信号由B端传向A端,即由总线传向S680724(写操作);当LCD_DIR为高时,信号由A端传向B端,即由S680724传向总线(读操作)。信号LCD_DO~LCD_D7也需要上拉,防止当74LVXC4245的输出为高阻时,外部噪声在其输出端产生错误信号。 值得一提的是,S680724显示控制器在PCB板上的位置靠近液晶屏,与SEP3203之间的距离很大。在PCB布局时,需要注意电平转换芯片的位置。因为其不但有电平转换的作用,而且还能缓冲总线信号,使总线和S680724显示控制器隔离,避免总线过长。电平转换芯片的布置应该尽量靠近总线,减小总线的长度,从而避免产生由总线过长造成的信号延时及噪声干扰问题。 虽然RST信号也是单向传输的,但RST信号的电平转换电路却是单独设计的。如果使用74HCT541完成电平转换,会有两个问题:①当LCD_nCSF失效时74HCT541不工作,此时LCD__RESET信号无法传递到RST端,RST端始终是高电平(被上拉至5 V),因此S689724无法被复位;②在74HCT541工作时,因为LCD_nCSF的脉冲宽度等于总线周期(最大值约为几百ms).所以输出的RST信号的最大脉冲宽度也等于总线周期;而S680724要求的RST信号最小脉冲宽度是1μs,所以用74HCT541无法产生正确的RST信号,此时S68072同样无法被复位。在图5中,该信号的电平转换电路是由晶体管和电阻构成的。 3 驱动程序 该部分软件主要是依照S680724的初始化流程、命令参数列表及其他资料编写的。S680724的访问 地址只有两个:一个是寄存器地址(通过写入不同的命令字来实现对S680724的控制);另一个是RAM端口(显示数据由此写入)。 首先需要根据S6B0724的接口设计计算其各端口的访问地址。SEP3203的片选信号LCD_nCSF所对应的基址是0x34000000。图5中S680724_A、S680724_B的寄存器访问地址分别是0x340000100、0x34000020;RAM的访问地址分别是0x34000018、0x34000028。特别是在该接口设计允许SEP3203同时访问S680724_A和S680724_B,寄存器的访问地址为0x34000000,RAM的访问地址为0x34000008。在实际使用中。可以利用这个特点对两个控制同时初始化,提高软件效率。 S680724的初始化流程如图6所示。先冷复位S680724,然后将74LVXC4245的电平转换方向设置为从总线向数据线。通过写S680724的控制寄存器对S680724软复位,然后选择所用的显示方式和扫描方向,再选择背光亮度;通过写寄 存器的方式打开S680724内部的电压反转器,等待10 ms后再打开电压生成器。延迟10 ms后,打开电压跟随器,等所有电压都稳定后(约等待10 ms)再设定液晶屏的工作电压,最后开始显示。图像的显示通过函数void Write_alILCD(void)来实现。其功能是将所要显示的点阵数据送入2片S680724。 初始化程序如下: void GPC)_init(void){ RESET_LCD(); //冷复位 *(RP)PORTB_SEL l=(18); //设定74LVXC4245的电平转换方向 *(RP)PORTB_DATA 8L=~(18); *(RP)PORTB_DIR=~(18); *(RPl6)ADDR_LCD_CMD=INTER_RESET; //2片S6B0724B同时软复位 1NIT_LCD(); //初始化S680724B *(RPl6)ADDR_LCD_CMD=DISPLAY_ON; //初始化完毕开始显示 Clear_LCD(); //清屏 } 4结论 该设计已在以SEP3203为核心的嵌入式系统中被实际应用。采用S680724显示控制器后,解决了SEP3203微处理器在工控应用中使用液晶屏的问题。使用1个片选信号实现了对2个显示控制器的控制。2个以上
- 伪彩LCD驱动SSD1770的接口设计(10-22)
- 基于SEP3203处理器的BSP的实现探讨(05-21)
- 基于SEP3203拉力试验机嵌入式测控系统设计(03-30)
- 嵌入式Linux技术在工业控制网络中的应用(10-30)
- 浅析我国工控系统安全防护的三大问题及对策(12-13)
- 工业网络系统病毒故障对策案例(09-01)