RS-232多串口扩展器件SP2538及其应用

2007-03-09 19:03:27来源: 互联网
摘要:SP2538是采用低功耗CMOS工艺生产的专用串行口(RS232)扩展芯片,它可将单片机或DSP等原有的单UART串口扩展至5个全双工UART口,从而解决了此类器件串口太少的问题。文中介绍了SP2538的性能特点,引脚功能及应用方法,并以单片机为例给出了多串口扩展的硬件电路及相应的通信程序。 关键词:RS-232;串口扩展;单片机;SP2538 1 概述 SP2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于UART串口通信的外围智能模块及器件较多,而单片机或DSP原有的UART串口又过少的问题而推出的。利用该器件可将现有单片机或DSP的单串口扩展至5个全双工串口。与其它具有多串口的单片机或串口扩展方案相比,采用SP2538实现的多串口扩展方案,具有扩展串口数量多、对扩展单片机的软硬件资源占用少、使用方法简单、待扩展串口可实现较高的波特率、成本低廉、性价比高等优点。同时,它还具有如下特点: ●可将单UART串口扩展为5个UART串口; ●工作速率范围宽,5个子串口可产生2400bps~9600bps之间的任意波特率; ●可全双工工作,母串口和所有子串口都支持全双工UART传输模式; ●工作电源电压范围宽:3.3V~5.5V; ●典型工作电流为4.6mA(子串口速率为9600bps、VCC为3.3V时); ●资源占用少,除占用上位机原有串行口中断外,不占用任何中断资源; ●具有节电模式,进入节电模式后,其典型静态电流约8μA; ●上位机发送数据可自动唤醒; ●输出误差小,所有子串口的输出波特率误差均小于0.08%; ●误码率低于10-9(所有串行口数据输入波特率误差小于等于%26;#177;2%); ●接收范围宽,波特率误差小于2.5%时,子串口即可完全正确接收;母串口的接收范围更宽,并可自适应56000bps和57600bps两种标准波特率(fosc—in 为20.0MHz时); ● 可用上位机进行监控,并具有上电复位和看门狗监控输出,适用于没有看门狗或需要更多重监控的高可靠上位机程序监控系统。 2 引脚功能 SP2538具有双列直插DIP及双列贴片SOIC两种封装形式。后缀为SP2538xxH的复位时输出高电平而后缀为SP2538xxL的复位时输出低电平,可分别适用高、低电平复位的单片机。图1给出了DIP封装高电平复位SP2538DPH的外形及引脚排列图,各引脚的功能说明列于表1。 表1 SP2538引脚说明 引脚名称 引脚编号 引脚类型 引 脚 描 述 TX5~TX0 1、3、5、7、9、14 Output 串口5~串口0数据发送(连接上位机RX口) RX5~RX0 2、4、6、8、10、13 Input 串口5~串口0数据接收(连接上位机TX口) VCC1 11 - - - 电源1(逻辑电路电源) +RST 12 Output 复位控制输出(适用于高电平复位的MCU) VCC2 15 - - - 电源2(时钟电路电源) GND 16 - - - 电源地 OSCI 17 Input 时钟输入(用于波特率发生器等) OSCO 18 Output 时钟输出 ADRI0~ADRI2 19~21 Input 母串口(RX5)数据接收地址0~2 ADRO0~ADRO2 22~24 Output 母串口(RX5)数据发送地址0~2 3 应用说明 3.1 母串口收发数据过程与时序 (1)上位机接收来自母串口的数据 上位机从母串口接收到一个字节数据后,会立即读取SP2538的输出地址ADRO2~ADRO0(编码方式为:8-4-2-1码),然后根据输出地址的编码即可判断接收到的数据来自哪个子串口,上位机接收来自母串口的数据时序如图2所示。 (2)上位机向母串口发送数据 发送数据时,上位机首先通过串口写入欲发送数据的子串口号,即先由上位机的串口发送数据地址ADRI2~ADRI0(编码方式:8-4-2-1码),然后将欲发送的数据由上位机串口发出。需要注意的是:母串口的波特率是子串口的6倍,即上位机在连续向母串口发送6个字节的时间内,子串口才能发送完一个字节。上位机向母串口发送数据的时序如图3所示。表2列出了SP2538的操作时限要求。 表2 SP2538操作时限 时限内容 说 明 最 小 值 典 型 值 最 大 值 Tpwr-up 上电复位延时 150ms … … Treset 芯片指令复位时间 … … 50μs Twdt-rst 看门狗溢出复位脉冲宽度 80ms … … Taddr-in 数据接收地址保持时间 10ns … … Twake-up 芯片唤醒延时 … … 9ms Taddr-hold 数据发送地址保持时间 (2/fosc-in)ms … … Twdt-over 看门狗溢出周期 800ms … … 3.2 其它说明 母串口和所有子串口内部均具有独立的数据发送缓冲存储器(FIFO Buffer)和接收缓冲存储器(FIFO Buffer),所有的RS232串行口都支持全双工异步传输模式,即所有串行口都可以同时独立接收和发送数据,且不会丢失任何数据。 母串口波特率由K1=2880 fosc-in计算,其单位为MHz,且fosc—in小于20.0Hz。在SP2538输入时钟fosc—in为20.0MHz时,母串口可自动适应上位机的56000bps和57600bps两种标准波特率输入,即fosc—in为20.0MHz时,上位机的RS232波特率可以设置成56000bps或57600bps。子串口波特率为:K2=480 fosc—in 。 母串口和所有子串口都是TTL电平接口,可直接与单片机或TTL数字电路接口,若需连接PC机,则必须增加电平转换芯片,如MAX202,ICL232等。 SP2538具有内置的上电复位电路和可关闭的看门狗监控电路,用于监控上位机程序是否正常运行,同时也可以简化上位机复位电路的设计。上位机写命令字“0x10”可实现喂狗,而写命令字“0x15”则可关闭看门狗(初次上电后,看门狗处于激活状态),写命令字“0x20”可激活看门狗监控功能。 上位机可通过芯片复位指令(命令字为“0x35”)在任何时候对芯片进行指令复位(复位时间Treset小于50μs)。 图2和图3 上位机可通过芯片睡眠指令(命令字为“0x55”)使芯片在任何时候进入微功耗睡眠模式,以降低系统功耗。初次上电后,芯片不会自行进入睡眠模式。应当注意的是,只能由上位机发送任意一个字节数据将其唤醒,而其它所有子串口均不能将其唤醒。 未使用的输入端口(如:RX0、RX1、RX2…等)必须连接到VCC,未使用的输出端口(如:TX0、TX1、TX2…、ADRO0、ADRO1…等)必须悬空。 4 应用实例 SP2538的应用领域包括数据采集、工业控制、仪器仪表、智能家电、医疗设备、税控加油机、商业POS机、家庭安防控制、车辆监控和调度、GPS卫星定位与导航、有线及无线数据传输、基于PC机的多串口卡、水、电、气表抄表系统、室外多媒体电子广告以及其它对通信稳定性、成本和开发周期要求比较严格的各种应用和工业MODEM阵列等方面。 4.1 应用电路 利用SP2538可将仅有一个UART串口的单片机扩展为具有5个UART串口的单片机。图4以常用的AT89C52单片机为例给出了相应的串口扩展电路。图中,AT89C52的全双工串口与SP2538的母串口5相连。该串口5同时也作为命令/数据口。SP2538的ADRI0、ADRI1、ADRI2分别与AT89C52的P2.3、P2.4、P2.5口相连,可用于选择发送数据时的相应串口0~4,ADRO0、ADRO1、ADRO2与AT89C52的P2.0、P2.1、P2.2口线相连,可用于判别接收的数据来自串口0~4的哪一个。SP2538的时钟频率可选为20MHz,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。 4.2 应用程序 下面是与上述硬件电路相关的接口程序,该程序用C51语言编制,程序分为上位机发送、接收中断服务程序和主程序两部分。 uchar idata uart0_t_but[8]; uchar idata send_buf[8]; uchar idata uart0_r_but uchar idata uart0_send_num uchar idata uart_port_num,send_byte_num,uart_point-er bit bdata write success,uart_busy; bit bdata uart0_receive sbit ADRI_0=P2^0; sbit ADRI_1=P2^1; sbit ADRI_2=P2^2; sbit ADRO_0=P2^3; sbit ADRO_1=P2^4; sbit ADRO_2=P2^5; serial()interrupt4 using3{ //上位机RS232接收、发送中断入口 if(RI){ RI=0; Switch(P2&0x07){ case uart0_r_buf=SBUF uart0_receive=1 break; } else { TI=0; switch(uart_pointer){ case uart_pointer++; if(uart0_send_num){ ADRO_0=0; ADRO_1=0; ADRO_2=0; Uart0_send_num--; SBUF=uart0_t_buf[uart0_send_num] uart_busy=1 break; } elseif(uart1_send_num|uart2_send_num|uart3_send_num|uart4_send_num) { ADRO_0=0 ADRO_1=0 ADRO_2=0 SBUF=0x00 uart_busy=1 break; } else {uart_busy=0;break;} } 注: case1:… case2:… case3:… case4:… 除地址不同外其余同case0。 Void uart_send(unchar uart_port_num,uchar send_byte num){ uchar i switch(uart_port_num)“ case for(i=0;i<send_byte_num;i++){ uart0_t_buff[i]=send_buf[i]; } uart0_send_num=send_byte_num; write_success=1; if(uart_busy==0){ T1=1; uart_pointer=0; break; } else{break;} } 注: case1:… case2:… case3:… case4:… 除地址不同外其余同case0。 main(){ TMOD=0x20; THI=0xff; TCON=0x40; SCON=0x50; PCON=0x80; //波特率加倍 IE=0x90; PI=0; while(1)“ send_buf[0]=0x31; write_success=0; if(!uart0_send_num){ uart_send(0,4) } } } 5 结束语 近年来,以单片机为核心构成的具有UART接口的智能仪器仪表及智能模块不断涌现,此类产品可方便地与单片机构成分布式系统。另一方面,系统中的单片机也要与上位计算机之间进行通信,从而构成二级分布式系统。SP2538的出现为此类多串口应用领域提供了一个良好的解决方案。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/others/200703/10345.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved