UART多串口扩展器SP2338DP及其应用_通信网络论文
关键词:uart 串口扩展 单片机
1 概述
当前,以单片机为核心构成的智能化测控系统及电子产品不断涌现,为了满足数字化及智能化要求,许多外围电路功能模块、部件、器件及传感器也具备了uart串口通信功能。而现阶段的8位、16位、32位单片机却大部分仅提供一个uart串口,这样就很难满足系统中一方面要与具有uart功能的串口部件通信,另一方面又要与上位机通信的要求。利用sp2338dp多串口扩展器,可很好地解决此问题。
2 工作特性
sp2338dp是采用低功耗cmos工艺设计的uart多串口扩展芯片。该器件可将一个高波特率的uart串口扩展为3个较高波特率的uart串口,从而为系统需要多个串口时提供了很好的解决方案。该器件的主要特性如下:
*可将1个uart串口扩展为3个uart串口。
*全双工异步工作:4个uart串口都为全双工异步工作模式。
*高工作速度:1200~9600b/s(可由晶振频率设定任意非标准波特率)。
*波特率设置简单:不需软件设置,只需更改输入时钟频率即可。
*波特率误差小:每个串口的数据输出波特率误差小于0.25%。
*接收波特率范围宽:要求每个串口数据波特率小于2.5%即可。
*数据传输误码率极低:小于10 -9(接收的数据波特率误差小于2%时)。
*具有节电模式:进入节电模式后典型静态电流为0.5μa。
*可自动唤醒:任意串口的接收端有数据出现时自动唤醒。
*宽工作电源电压:2.4~5.5v。
*低工作电流:典型工作电流为4.4ma。
3 封装及引脚说明
该器件具有dip、soic和ssop多种封装形式。下面以dip封装形式为例,给出元件的封装及引脚排列,如图1所示。引脚功能及说明见表1。
表1 sp2338 dip引脚功能
名 称 | 编 号 | 类 型 | 描 述 |
adri0 | 18 | i | 串口3接收数据地址线0 |
adri1 | 17 | i | 串口3接收数据地址线1 |
adro0 | 1 | o | 串口3发送数据地址线0 |
adro1 | 2 | o | 串口3发送数据地址线1 |
rx0 | 8 | i | 串口0数据接收 |
tx0 | 9 | o | 串口0数据发送 |
rx1 | 11 | i | 串口1数据接收 |
tx1 | 10 | o | 串口1数据发送 |
rx2 | 13 | i | 串口2数据接收 |
tx2 | 12 | o | 串口2数据发送 |
rx3 | 6 | i | 串口3数据接收 |
tx3 | 7 | o | 串口3数据发送 |
osci | 16 | i | 时钟输入 |
osco | 15 | o | 时钟输出 |
vcc | 3,4,14 | - | 正电源 |
gnd | 5 | - | 地 |
4 应用说明
sp2338dp在使用时应遵循以下原则:
①sp2338dp适用于串行数据为8位的应用领域(如数据位7为位,可选用sp2337dp器件);
②串口0~2为较高波特率的串口(子串口)。
③串口3为高波特率串口(母串口),它的数据传输速率是子串口的4倍。如输入时钟频率foscin为10mhz,则串口3的波特率为19 200bps,串口0~2的波特率为19 200bps/4=4800 bps;如果需要在串口0~2上获得波特率k,则需按以下公式改变时钟频率即可。
k=4800×foscin/10(bps)
其中foscin≤20mhz
④adri1、adr10为下行地址线,adri1、adri0=00、01、10时,分别对应子串口0、1、2、adr1、adr0=11时,为串口3的地址;同时,它也是sp2338dp的命令/数据口地址。
⑤adro1、adro0为上行数据的串口地址线,adro1、adro0=00、01、10时,分别对应子串口0、1、2。当上位机uart接收到由串口3发送来的数据时,立即读取地址线adro1和adro0的状态。根据adro1和adro0的状态即可判断出数据是由哪个串口发送来的。
⑥芯片唤醒条件为:向串口0~串口3的任意一个数据接收端口写入1个字节数据。由于sp2338dp的唤醒时间为25ms左右,故用于芯片唤醒的数据将不能被正确接收,因此应采用下面的芯片唤醒流程;先发送1个字节数据,用于唤醒芯片,延时25ms后再发送有效的数据。
⑦为了快速可靠地传输批量数据,可以采用下面的方法,实现数据快速可靠的接收、发送。
如上位机只需要向一个串口发送数据,则可向该串口发送完1个字节数据后再向地址11(串口3的地址)连续发送4个字节“0x00”。其后向需要发送数据的串口发送1个字节数据,再向串口3发送4个字节“0x00”,按此方式循环发送即可。
如果此位同需向两个串口分别发送两个数据块,则可分别向两个相应的子串口发送1个字节的数据后再向串口3发送4个字节的“0x00”,然后分别将两个数据块的下一个字节发送到两个子串口上。
如果上位机有3个数据块需要分别向3个子串口发送,则可先向3个子串口分别发送1个字节的有效数据后再向串口3发送2个字节的“0x00”,然后循环向3个子串口发送有效的数据。
注意:写入串口3用于延时的数据只能是“0x00”,写入其它数据将产生可预料的结果。
⑧sp233dp数据发送工作过程如下:如果上位机需要将数据“0x28”由串口2发送出去,则需先将adri1置为“1”,adri0置为“0”,再将数据“0x28”通过上位机的uart口发送到串口3即可。
⑨sp2338dp可执行的命令仅有两种,即复位和睡眠命令。当上位机通过串口3(地址为“11”)写入数据“0x35”或“0xb5”时,则芯片执行软件复位,复位时间约为21.75ms;当写入的数据为“0x55”或“0xd5”时,芯片将进入睡眠状态。
图2 利用sp2338dp扩展的3串口电路
5 典型应用电路
利用sp2338dp可将仅具有一个uart串口的单片机扩展为具有3个uart串口的单片机。下面以常用的at89c52单片机为例,给出相应的串口扩展电路,如图2所示。
图2中at89c52的全双工串口与sp2338dp的串口3相连。串口3同时也做为命令/数据口。adri1和adri0与at89c52的p3.3、p3.2口线相连,用于发送数据时相应串口0~2的选择。adro1和adro0与at89c52的p3.4、p3.5口线相连,用于判断接收的数据来自串口0~2的哪一个。sp2338dp的时钟频率选为20mhz,此时串口3的波特率为19 200bps,串口0~2的波特率为9600bps。网络补充版(//www.dpj.com.cn)中,给出与上述电路配套的通信程序,程序采用c51编制。
结语
sp2338多串口扩展器可广泛应用于工业控制、数据采集、仪器仪表、智能家电、计算机rs232口扩展、有线及无线数据传输等领域。由该器件构成的多串口电路具有硬件成本低、性价比高、工作速度高、波特率设置简单等特点,因而选择该器件是多串口应用系统的良好解决方案。