UM3758-108编/解码器在串行通信中的应用
摘要:介绍一种基于编/解码器的PC机与多单片机之间的串行通信方法,并对智能卡的设计进行了说明。该编/解码器通信方案,软好地解决了多机系统中作为上位机的工控机对各下位机的寻址问题。
关键词:编/解码器 双口RAM PC 串行通信 UM3758-108
在遥测、遥控领域中,常常使用工业PC机与单片机组成的多机系统完成测控任务。PC机因其丰富的软硬件资源和友好的人机界面而被用作上位机,而单片机则因其优越的性价比和灵活的功能配置而被用作下位机。上位 机和下位机之间通过串行数据总线(如CAN总线、RS485总线等)连接,具体结构如图1所示。在进行数据传输时,一般先由上位机发出地址帧对指定的下位机寻址,在得到确认以后向选中的下位机发送命令和参数,javascript:window.open(this.src);" style="cursor:pointer;"/>或者接收该下位机采集的数据。但在多机系统中,进行数据通信遇到的一个首要问题是如何区分总线的地址信息和其它的数据信息,这也是各类通信协议和通信规约中的一项重要内容。由于目前所使用的通信协议和通信规约比较复杂,因此在一个简单的主从式多机系统中,往往由开发人员自行定义一些简单的通信协议来解决上述问题。本文介绍一种基于编/解码器的通信方案,较好地解决了多机系统中作为上位机的工控机对各下位机的寻址问题。
1 编/解码芯片UM3758-108A
专用编/解码芯片UM3758-108A属大规模CMOS器件,其引脚排列如图2所示:A0~A9为三态编码地址输入;D0~D7为二态锁存式编码数据输入或输出;OSC引脚外接振荡电阻和电容,其值决定发送频率;VSS为电源地;T/R为编码发送与编码收选择引脚,接高电平时为编码发送,接低电平时为接收编码;IN为编码脉冲输入引脚(接收解码时);TX/RX外接驱动电路,为编码发送输出端,该引脚也可作为争码接收正确标志显示(RX输出低电平);VDD为电源正端(3~12V)。
单片UM3758-108A芯片是一个完整的接口电路,集编码发送和解码输出于一身。当T/R端接高电平时,地址码A0~A9和数据码D0~D7构成一个18位的数据帧,从TX/RX端循环不断地串行发送出去;当T/R端接低电平时,编码脉冲由IN端输入,如果接收的地址码连续两次与本地地址码一致,接收数据将按位传送到输出锁存器中,由D0~D7引脚输出。同时TX/RX引脚输出低电平,表示接收正确。
2 UM3758-108A在多机通信中的具体应用javascript:window.open(this.src);" style="cursor:pointer;"/>
使用编/解码器实现PC机与单片机的通信时,需要在PC机和单片机上分别配置编/解码器,以便完成数据信息的发送和接收。由于上位机不仅承担与下位机的通信任务,还要进行数据处理,并以表格或各种图形方式显示出来。如果让上位机直接控制编/解码芯片,通过并行口进行数据收发,在通信量较大的情况下,势必会占用上位机的大部分工作时间,导致整机性能下降。因此在通信量较大的情况下,应在上位机端设计一个智能I/O扩展卡,该卡可插到上位机底板的扩展槽上。为了上位机和扩屏卡之间达到更快的信息交换速度,可以采用共享存储器方式进行数据交换。传统的共用存储器硬件设计比较复杂,应用范围较小。本文采用Maxim公司生产的双端口存储器DS1609,大大简化了共用存储器硬件电路设计。如图3所示,DS1609为256字节双端口RAM,属大规模CMOS器件;具有两个独立的端口,各自拥有一套相应的数据/地址复用总线和控制总线;控制信号只有读、写和片选,尤其适合于和Intel公司的CPU相连;硬件电路设计非常简单。该器件允许两个端口独立地对存储器单元进行存取操作,且由于存储器内部特殊的单元电路设计,端口双方同时对同一个单元进行读操作时无需促裁逻辑;但当端以方同时对同一单元进行读/写或写/写操作时,仍会发生竞争。解决读/写冲突的一个简单办法是执行冗余的读周期,也可使用“邮箱”传送状态信息方式进行软件仲裁,这种方法需给每个端口分配一个字节,用以写入状态信息,以告知对本端正在进行的操作。对于写/写冲突,可给双方分配固定的单元空间,另外,再给每一组数据分配校验和字节,以确保正确的数据交换。图3中DS1609一侧与89C51 CPU相连,另一侧通过三态缓冲器与扩展总线相连。
图4为PC机与80C51单片机使用编/解码器实现通信的示意图。UM3758-108A的A0~A9是地址输入端,每位可有三种状态:高电平、低电平、开路。利用其不同的组合可产生3 10种不同的编码。二态时也有2 10种不同的编码。智能扩展卡需不断寻址各个下位机,所以利用锁存器将数据输出给编/解码器的地址端,以此可灵活地寻址各个下位机。为了简化起见,图4中省去了一个锁存器,将A8、A9直接悬空。UM3758-108A片内具有数据锁存能力,无需加锁存器,但需加双向缓冲器以收发数据。下位机端的编码地址用微型开关SW设置,也可用锁存器输出编码地址;但这样做需在下位机工作前,将编码地址由面板输入,和其它需要设定的参数一起保存在存储器(如EEPROM)中,然后再由锁存器输出。后者增加了下位机地址编码的灵活性,但也加重了编程负担。图4中,智能I/O扩展卡用74LS273作为扩展接口,以锁存要寻址的下位机地址,用74LS245收发数据。P1.0为发送数据选择端:P1.0为低电平时,接口处于接收状态;javascript:window.open(this.src);" style="cursor:pointer;"/>为高