SP2338串口扩展芯片在汽车行驶记录仪中的应用
发布时间:2008/5/27 0:00:00 访问次数:646
    
    
    林颖
    
    摘要:8051系列单片机通常只有一到两个串口,在以单片机为核心的应用中,许多系统迫切需要三个或三个以上的串口,如何解决这个问题是许多科研工作者所关心的。本文介绍一种新型的单片机串口扩展芯片的功能特性及在汽车行驶记录仪中的应用。
    关键词:sp2338,多串口通信,汽车行驶记录仪
    
    在由单片机组成的汽车行驶记录仪中,为了适应不同用户的需要,该记录仪需要配置串口打印、与上位机通信串口以及与gps通信接口等三个以上(含三个)串口,直接利用单片机的功能无法满足这一需要。利用一片sp2338则可以很好地解决这个问题。
    1、sp2338简介
    sp2338串口扩展芯片能将普通的51系列单片机的一个串口扩展为三个独立的全双工串口,并且三个串口的波特率达到了9600bps。sp2338采用通用的协议1个起始位,8个数据位,1个停止位),同时,该芯片在与单片机相连时接口也非常简单。
    sp2338共有四个串口,一个母串口,三个子串口,它们都是全双工的串行通信口,允许同时接收和发送数据。母串口与需要扩展的51单片机的串口相连,子串口与其他串口设备相连,这样就实现了只有一个串口的单片机可与三个串口设备相连。sp2338有两根发送地址线,两根接收地址线,用以选择发送串口和接收串口,见图1。
    
    
    
    当单片机要向串口设备发送数据时,其工作过程是:
    1)先向sp2338的串口地址线adri0、adri1送地址信号(adri0、adri1=00子串口0,adri0、adri1=01子串口1,adro0、adro1=10子串口2);再向与自已相连的母串口的通信线上送数据;
    2)sp2338的母串口收到单片机串口送来的数据后就根据adri0和adri1的状态,把数据送往相应的子串口;
    3)该子串口再把数据送往相连的串口设备。
    当串口设备向单片机发送数据时,其工作过程是:
    1)sp2338的某个子串口从串口设备接收到数据时,送给母串口;
    2)sp2338的母串口把该数据再送给单片机串口,同时在adro0和adro1线上送出子串口的地址;
    3)单片机根据sp2338接收地址线adro0、adro1上的信号判定出由哪个串口设备发出的。
    由于sp2338的每个串口都有自己的发送缓冲区和接收缓冲区,因此扩展后的三个串口就可以完全独立地同时通信,就好像单片机同时拥有三个串口似的,若一个单片机有两个串口,那么配上两片sp2338就可以扩展到6个串口。
    sp2338每个子串口的波特率都可以达到9600bps,sp2338工作时需要配一个晶振,该晶振fosc的频率与母串口的波特率有如下关系:
    k母=1920*fosc,
    与子串口波特率的关系如下:
    k子=480*fosc,
    因此,如果子串口采用9600波特率,根据以上公式,fosc=20mhz。而母串口的波特率必须达到388400bps。这样与sp2338的母串口相连的单片机串口的波特率达到388400bps,若单片机采用非11。0592m的工作晶振,则波特率会有偏差,不过,sp2338允许波特率误差为2。5%。在我研制的汽车行驶记录仪中,系统采用的是24mhz的工作晶振,用定时器2作波特率发生器,并设:rcap2h=0xff,rcap2l=0xec,可以正常通信。
    由于某些单片机采用其他规格的晶振工作,达不到这么高的波特率,想把母串口的波特率降下来,则不仅仅是把单片机的波特率降下来,还要根据上面的公式,重新计算fosc,把sp2338的工作晶振也换成合适的才行。
    2、sp2338在汽车行驶记录仪中应用
    
    1)图2是硬件连接逻辑图
    由于sp2338是单片机串口与其他串口设备的转接者,因此相对于单片机来说,sp2338是tx3与单片机的rxdm相连,sp2338的rx3要与单片机的txdm相连。
    
    
    
&nb
    
    
    林颖
    
    摘要:8051系列单片机通常只有一到两个串口,在以单片机为核心的应用中,许多系统迫切需要三个或三个以上的串口,如何解决这个问题是许多科研工作者所关心的。本文介绍一种新型的单片机串口扩展芯片的功能特性及在汽车行驶记录仪中的应用。
    关键词:sp2338,多串口通信,汽车行驶记录仪
    
    在由单片机组成的汽车行驶记录仪中,为了适应不同用户的需要,该记录仪需要配置串口打印、与上位机通信串口以及与gps通信接口等三个以上(含三个)串口,直接利用单片机的功能无法满足这一需要。利用一片sp2338则可以很好地解决这个问题。
    1、sp2338简介
    sp2338串口扩展芯片能将普通的51系列单片机的一个串口扩展为三个独立的全双工串口,并且三个串口的波特率达到了9600bps。sp2338采用通用的协议1个起始位,8个数据位,1个停止位),同时,该芯片在与单片机相连时接口也非常简单。
    sp2338共有四个串口,一个母串口,三个子串口,它们都是全双工的串行通信口,允许同时接收和发送数据。母串口与需要扩展的51单片机的串口相连,子串口与其他串口设备相连,这样就实现了只有一个串口的单片机可与三个串口设备相连。sp2338有两根发送地址线,两根接收地址线,用以选择发送串口和接收串口,见图1。
    
    
    
    当单片机要向串口设备发送数据时,其工作过程是:
    1)先向sp2338的串口地址线adri0、adri1送地址信号(adri0、adri1=00子串口0,adri0、adri1=01子串口1,adro0、adro1=10子串口2);再向与自已相连的母串口的通信线上送数据;
    2)sp2338的母串口收到单片机串口送来的数据后就根据adri0和adri1的状态,把数据送往相应的子串口;
    3)该子串口再把数据送往相连的串口设备。
    当串口设备向单片机发送数据时,其工作过程是:
    1)sp2338的某个子串口从串口设备接收到数据时,送给母串口;
    2)sp2338的母串口把该数据再送给单片机串口,同时在adro0和adro1线上送出子串口的地址;
    3)单片机根据sp2338接收地址线adro0、adro1上的信号判定出由哪个串口设备发出的。
    由于sp2338的每个串口都有自己的发送缓冲区和接收缓冲区,因此扩展后的三个串口就可以完全独立地同时通信,就好像单片机同时拥有三个串口似的,若一个单片机有两个串口,那么配上两片sp2338就可以扩展到6个串口。
    sp2338每个子串口的波特率都可以达到9600bps,sp2338工作时需要配一个晶振,该晶振fosc的频率与母串口的波特率有如下关系:
    k母=1920*fosc,
    与子串口波特率的关系如下:
    k子=480*fosc,
    因此,如果子串口采用9600波特率,根据以上公式,fosc=20mhz。而母串口的波特率必须达到388400bps。这样与sp2338的母串口相连的单片机串口的波特率达到388400bps,若单片机采用非11。0592m的工作晶振,则波特率会有偏差,不过,sp2338允许波特率误差为2。5%。在我研制的汽车行驶记录仪中,系统采用的是24mhz的工作晶振,用定时器2作波特率发生器,并设:rcap2h=0xff,rcap2l=0xec,可以正常通信。
    由于某些单片机采用其他规格的晶振工作,达不到这么高的波特率,想把母串口的波特率降下来,则不仅仅是把单片机的波特率降下来,还要根据上面的公式,重新计算fosc,把sp2338的工作晶振也换成合适的才行。
    2、sp2338在汽车行驶记录仪中应用
    
    1)图2是硬件连接逻辑图
    由于sp2338是单片机串口与其他串口设备的转接者,因此相对于单片机来说,sp2338是tx3与单片机的rxdm相连,sp2338的rx3要与单片机的txdm相连。
    
    
    
&nb