SP2328串口扩展专用芯片及其与单片机的接口电路
发布时间:2008/6/3 0:00:00 访问次数:566
关键词: 单片机; 多串口通信
在设计由多个单片机组成的数据采集电路时,一般要用多个串口在各个单片机之间进行数据通信。为了解决单片机扩展多个串口的问题,以前大多采用多片at89c2051来实现多串口通信。每个at89c2051用并口与上位机连接,再通过at89c2051的串口与下位机串口连接。这种电路设计,单片机编程比较复杂,整个电路的调试也比较麻烦,可靠性不是很高。一种新开发的sp2328串口扩展芯片很好的解决了上述问题。
sp2328是成都视普科技公司的串行口扩展专用芯片,能将普通单片机(如:at89c2051、at89c51等)的一个串口(uart)扩展为三个串口。它主要解决了大多数8位、16位以及32位单片机uart串口太少的问题,扩大了单片机的使用范围。同时,sp2328串行口扩展专用芯片也很好地解决了许多在使用双串口的单片机时,串口复杂的配置问题,能大大缩短开发周期,降低开发成本以及生产成本。
图1 dip和soic封装(左) 图2 ssop封装(右)
sp2328的功能特性
sp2328有四个uart串口,其中包括一个母串口和三个子串口。母串口和所有子串口都为全双工工作模式,所有串口允许同时接收、发送串行数据。串口0~串口2为子串口,每个子串口的工作速率为75bps~4800bps。串口3为母串口,它的数据传输速率是子串口的4倍。串口3接收到串行数据后,sp2328芯片根据收到的地址信号,把数据通过相应的子串口发送出去。子串口收到串行数据后,把数据通过串口3发送出去,同时给出相应的子串口地址。串口0~串口2的波特率的设置很简单,不需要用软件设置,只要改变输入时钟的频率即可。波特率按以下公式计算:
k=2400*f(osc)/8.0(bps)
其中f(osc)<=16.0mhz
sp2328的直流工作电压为2.4v~5.5v,典型电流为3.7ma,带有节电模式。
图1和图2是sp2328芯片的管脚排列图。
adri0、adri1 为串口3接收下行数据时的串口地址线,“00”、“01”、“10”分别对应:串口0、串口1、串口2的地址;“11”为串口3的地址。当上位机要向某一个子串口连接的下位机发送数据时,首先要将adri0、adri1置成响应的地址状态,再将数据发送到串口3即可。
adro0、adro1 为串口3发送上行数据时的串口地址线,“00”、“01”、“10”分别对应:串口0、串口1、串口2的地址。当上位机的串口接收到串口3送来的数据时,立刻读取地址线adro0、adro1的状态,根据地址线adro0、adro1的状态即可判断出接收到的数据是由哪个串口上传的。
图3 sp2328与单片机的接口电路
sp2328与单片机的接口举例
图3是单片机数据采集电路中sp2328与单片机的接口电路。at89c51的串口与sp2328的串口3连接,p1.0、p1.1、p1.2、p1.3分别连接adri0、adri1、adro0、adro1,作为设置和读取子串口的地址用。三个子串口分别连到三个下位机的串口。串口0、串口1、串口2的波特率为:
k=(2400*16)/8=4800(bps)
串口3的波特率:
k3=4*k=4*4800=19200(bps)
at89c51串口的波特率也必须设置成19200bps。
由于sp2328通电后自动进入工作状态,不需要用程序设置,所以编写串口程序比较简单方便。
需要注意的问题
?在选择晶振频率时,要严格使单片机串口的波特率与sp2328的波特率相一致,晶振频率要稳定,否则容易使sp2328芯片接收到的数据和发送出去的数据都是错误的。
?由于母串口3的速度是其它子串口的4倍,即子串口发送一个字节的时间母串口可以发送4个字节,所以如果串口3向子串口发送一个字节后,串口3没有向其他子串口发送另外的4个字节,而立即再向原子串口发送数据,子串口的数据将溢出。因此,必须在它们之间加上4个以上的字节用于延时(母串口向其他另外的子串口发送数据,相当于延时一个字节)。
?上位机收到母串口上行的数据后要及时读取上行数据的地址信息(上行数据的地址信息可以在上行数据的停止位结束后保持6bit的时间长度)。使上位机能准确收到子串口的串行数据。
?上位机向母串口发送数据前,先要向sp2328发送子串口的地址信号。
结语
采用sp2328芯片扩展单片机串口,为单片机的多串口通信提供了一个很好的解决方案。它与使用双串口单片机和使用多片at89c2051扩展串口等方案相比,编程简单、可靠性高、成本低。■
参考文献
1 余永权.《flash单片机原理及应用》 .北京:电子工业出版社. 1997,10
2 sp2328数据应用手册.成都视普科技有限公司
关键词: 单片机; 多串口通信
在设计由多个单片机组成的数据采集电路时,一般要用多个串口在各个单片机之间进行数据通信。为了解决单片机扩展多个串口的问题,以前大多采用多片at89c2051来实现多串口通信。每个at89c2051用并口与上位机连接,再通过at89c2051的串口与下位机串口连接。这种电路设计,单片机编程比较复杂,整个电路的调试也比较麻烦,可靠性不是很高。一种新开发的sp2328串口扩展芯片很好的解决了上述问题。
sp2328是成都视普科技公司的串行口扩展专用芯片,能将普通单片机(如:at89c2051、at89c51等)的一个串口(uart)扩展为三个串口。它主要解决了大多数8位、16位以及32位单片机uart串口太少的问题,扩大了单片机的使用范围。同时,sp2328串行口扩展专用芯片也很好地解决了许多在使用双串口的单片机时,串口复杂的配置问题,能大大缩短开发周期,降低开发成本以及生产成本。
图1 dip和soic封装(左) 图2 ssop封装(右)
sp2328的功能特性
sp2328有四个uart串口,其中包括一个母串口和三个子串口。母串口和所有子串口都为全双工工作模式,所有串口允许同时接收、发送串行数据。串口0~串口2为子串口,每个子串口的工作速率为75bps~4800bps。串口3为母串口,它的数据传输速率是子串口的4倍。串口3接收到串行数据后,sp2328芯片根据收到的地址信号,把数据通过相应的子串口发送出去。子串口收到串行数据后,把数据通过串口3发送出去,同时给出相应的子串口地址。串口0~串口2的波特率的设置很简单,不需要用软件设置,只要改变输入时钟的频率即可。波特率按以下公式计算:
k=2400*f(osc)/8.0(bps)
其中f(osc)<=16.0mhz
sp2328的直流工作电压为2.4v~5.5v,典型电流为3.7ma,带有节电模式。
图1和图2是sp2328芯片的管脚排列图。
adri0、adri1 为串口3接收下行数据时的串口地址线,“00”、“01”、“10”分别对应:串口0、串口1、串口2的地址;“11”为串口3的地址。当上位机要向某一个子串口连接的下位机发送数据时,首先要将adri0、adri1置成响应的地址状态,再将数据发送到串口3即可。
adro0、adro1 为串口3发送上行数据时的串口地址线,“00”、“01”、“10”分别对应:串口0、串口1、串口2的地址。当上位机的串口接收到串口3送来的数据时,立刻读取地址线adro0、adro1的状态,根据地址线adro0、adro1的状态即可判断出接收到的数据是由哪个串口上传的。
图3 sp2328与单片机的接口电路
sp2328与单片机的接口举例
图3是单片机数据采集电路中sp2328与单片机的接口电路。at89c51的串口与sp2328的串口3连接,p1.0、p1.1、p1.2、p1.3分别连接adri0、adri1、adro0、adro1,作为设置和读取子串口的地址用。三个子串口分别连到三个下位机的串口。串口0、串口1、串口2的波特率为:
k=(2400*16)/8=4800(bps)
串口3的波特率:
k3=4*k=4*4800=19200(bps)
at89c51串口的波特率也必须设置成19200bps。
由于sp2328通电后自动进入工作状态,不需要用程序设置,所以编写串口程序比较简单方便。
需要注意的问题
?在选择晶振频率时,要严格使单片机串口的波特率与sp2328的波特率相一致,晶振频率要稳定,否则容易使sp2328芯片接收到的数据和发送出去的数据都是错误的。
?由于母串口3的速度是其它子串口的4倍,即子串口发送一个字节的时间母串口可以发送4个字节,所以如果串口3向子串口发送一个字节后,串口3没有向其他子串口发送另外的4个字节,而立即再向原子串口发送数据,子串口的数据将溢出。因此,必须在它们之间加上4个以上的字节用于延时(母串口向其他另外的子串口发送数据,相当于延时一个字节)。
?上位机收到母串口上行的数据后要及时读取上行数据的地址信息(上行数据的地址信息可以在上行数据的停止位结束后保持6bit的时间长度)。使上位机能准确收到子串口的串行数据。
?上位机向母串口发送数据前,先要向sp2328发送子串口的地址信号。
结语
采用sp2328芯片扩展单片机串口,为单片机的多串口通信提供了一个很好的解决方案。它与使用双串口单片机和使用多片at89c2051扩展串口等方案相比,编程简单、可靠性高、成本低。■
参考文献
1 余永权.《flash单片机原理及应用》 .北京:电子工业出版社. 1997,10
2 sp2328数据应用手册.成都视普科技有限公司
上一篇:NS推出Boomer扬声器驱动器
上一篇:IR与RS-232的匹配技术