位置:51电子网 » 技术资料 » 通信网络

SP2538专用串行通信口芯片和Intel8251的两种串行通信口扩展方法

发布时间:2008/9/23 0:00:00 访问次数:1050

  串行口的扩展方法

  常用的标准51单片机内部仅含有一个可编程的全双工串行通信接口,具有uart的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。当以此类型单片机构成分布式多级应用系统时,器件本身的串口资源就不够用了。笔者在实际开发中,查阅了有关资料,总结出如下两种常用而有效的串行通道扩展方法。

  2.1 基于sp2538的扩展方法

  sp2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于uart串口通信的外围智能模块及器件较多,而单片机或dsp原有的uart串口又过少的问题而推出的。利用该器件可将现有单片机或dsp的单串口扩展至5个全双工串口。使用方法简单、高效。

  在应用sp2538扩展串行通道时,母串口波特率k1=2880*fosc_in,单位是mhz,且fosc_in小于20.0mhz, 在sp2538输入时钟fosc_in =20.0mhz时母串口可自适应上位机的56000bps和57600bps两种标准波特率输入。子串口波特率k2=480*fosc_in。

  母串口和所有子串口都是ttl电平接口,可直接匹配其他单片机或ttl数字电路,如需连接pc机则必须增加电平转换芯片如max202 、max232 等。sp2538具有内置的上电复位电路和可关闭的看门狗监控电路。上位机写命令字0x10可实现喂狗,写命令字0x15关闭看门狗,初次上电后看门狗处于激活状态或写命令字0x20激活看门狗监控功能。上位机可通过芯片复位指令0x35在任何时候让芯片进行指令复位,也可通过芯片睡眠指令0x55在任何时候让芯片进入微功耗睡眠模式以降低系统功耗。初次上电后芯片不会自行进入睡眠模式,但只能由上位机通过母串口任意发送一个字节数据将其唤醒,其他子串口不具备这一功能。

  图(1)是at89c52单片机与sp2538的电路连接,图中,at89c52的全双工串口与sp2538的母串口5相连,该串口同时也作为命令/数据口。sp2538的adri0、adri1、adri2分别与at89c52的p2.3、p2.4、p2.5口相连,可用于选择发送数据是选择相应的串口0~4;adro0、adro1、adro2与p2.0、p2.1、p2.2相连,用于判断接收的数据来自哪一个串口。 sp2538的时钟频率选为20.0mhz,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。

  下面是与上述硬件电路相关的接口程序,该程序用a51汇编语言编制,程序仅说明了中断方式下对子串口0(tx0、rx0)的操作,其它子串口类似。

  tblock data 20h

  rblock data 30h

  length data 14h

  …

  txr_rev_send: clr es

  jbc ri,receive

  clr ti

  mov a,@r0

  clr p2.0 ; 写数据到"sbuf"前必须先置欲发送子串口的地址

  clr p2.1

  clr p2.2

  mov sbuf,a

  djnz r2,next

  sjmp $

  next: inc r0

  reti

  receive: mov a,p2

  and a,#31h ;判断是否为子串口0

  jnz else

  mov a,sbuf

  mov @r1,a

  inc r1

  reti

  图(1) at89c52与sp2538的电路连接

  2.2 基于intel8251的串行口扩展方法

  上面基于sp2538的串口扩展方法可以说是一种串行的扩展方法,这里基于intel8251的扩展方法则是一种并行的方法。intel8251是一种通用的同步/异步发送器(usart),它的工作方式可以通过编程设置。能够以同步或异步串行通信方式工作,能自动完成帧格式。

  intel8251具有独立的接收/发送器。在异步方式下,用于产生8251内部时序的时钟clk输入至少应为发送或接收时钟的4.5倍。接收/发送(rxc/txc)时钟应为波特率的1倍、16倍或64倍(由8251的工作方式字设定)。

  图(2)是用intel8251扩展一个串行通道的电路原理,图中,11.0592mhz晶振经ale6分频后于 、组合,产生1.8432mhz的时钟频率,分别作为8251与8253的时钟输入,若设定8251通信波特率为9600bps,波特率因子为16,则需要 153.6khz的接收/发送时钟频率,该频率可由8253的out0产生。

  下面的a51程序段说明了如何设置8253使其产生153.6khz的方波,以及如何用8251收/发数据:

  ;设置8253的程序段:

  mov a,#36h ; 计数器0输出方波控制字

  mov dptr,#0ffffh ; 指向控制字寄存器

  movx @dptr,a

  mov dptr,#0fffch ; 指向0计数器地址

  mov a,#0dh

  movx @dptr,a

  mov a,#0

  movx dptr,a

  setb p1.0

  ;操作8251的程序段:

  …

  start: mov dptr,#7fffh ;8251控制、命令口地址

  mov a,#5eh ;一个

  串行口的扩展方法

  常用的标准51单片机内部仅含有一个可编程的全双工串行通信接口,具有uart的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。当以此类型单片机构成分布式多级应用系统时,器件本身的串口资源就不够用了。笔者在实际开发中,查阅了有关资料,总结出如下两种常用而有效的串行通道扩展方法。

  2.1 基于sp2538的扩展方法

  sp2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于uart串口通信的外围智能模块及器件较多,而单片机或dsp原有的uart串口又过少的问题而推出的。利用该器件可将现有单片机或dsp的单串口扩展至5个全双工串口。使用方法简单、高效。

  在应用sp2538扩展串行通道时,母串口波特率k1=2880*fosc_in,单位是mhz,且fosc_in小于20.0mhz, 在sp2538输入时钟fosc_in =20.0mhz时母串口可自适应上位机的56000bps和57600bps两种标准波特率输入。子串口波特率k2=480*fosc_in。

  母串口和所有子串口都是ttl电平接口,可直接匹配其他单片机或ttl数字电路,如需连接pc机则必须增加电平转换芯片如max202 、max232 等。sp2538具有内置的上电复位电路和可关闭的看门狗监控电路。上位机写命令字0x10可实现喂狗,写命令字0x15关闭看门狗,初次上电后看门狗处于激活状态或写命令字0x20激活看门狗监控功能。上位机可通过芯片复位指令0x35在任何时候让芯片进行指令复位,也可通过芯片睡眠指令0x55在任何时候让芯片进入微功耗睡眠模式以降低系统功耗。初次上电后芯片不会自行进入睡眠模式,但只能由上位机通过母串口任意发送一个字节数据将其唤醒,其他子串口不具备这一功能。

  图(1)是at89c52单片机与sp2538的电路连接,图中,at89c52的全双工串口与sp2538的母串口5相连,该串口同时也作为命令/数据口。sp2538的adri0、adri1、adri2分别与at89c52的p2.3、p2.4、p2.5口相连,可用于选择发送数据是选择相应的串口0~4;adro0、adro1、adro2与p2.0、p2.1、p2.2相连,用于判断接收的数据来自哪一个串口。 sp2538的时钟频率选为20.0mhz,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。

  下面是与上述硬件电路相关的接口程序,该程序用a51汇编语言编制,程序仅说明了中断方式下对子串口0(tx0、rx0)的操作,其它子串口类似。

  tblock data 20h

  rblock data 30h

  length data 14h

  …

  txr_rev_send: clr es

  jbc ri,receive

  clr ti

  mov a,@r0

  clr p2.0 ; 写数据到"sbuf"前必须先置欲发送子串口的地址

  clr p2.1

  clr p2.2

  mov sbuf,a

  djnz r2,next

  sjmp $

  next: inc r0

  reti

  receive: mov a,p2

  and a,#31h ;判断是否为子串口0

  jnz else

  mov a,sbuf

  mov @r1,a

  inc r1

  reti

  图(1) at89c52与sp2538的电路连接

  2.2 基于intel8251的串行口扩展方法

  上面基于sp2538的串口扩展方法可以说是一种串行的扩展方法,这里基于intel8251的扩展方法则是一种并行的方法。intel8251是一种通用的同步/异步发送器(usart),它的工作方式可以通过编程设置。能够以同步或异步串行通信方式工作,能自动完成帧格式。

  intel8251具有独立的接收/发送器。在异步方式下,用于产生8251内部时序的时钟clk输入至少应为发送或接收时钟的4.5倍。接收/发送(rxc/txc)时钟应为波特率的1倍、16倍或64倍(由8251的工作方式字设定)。

  图(2)是用intel8251扩展一个串行通道的电路原理,图中,11.0592mhz晶振经ale6分频后于 、组合,产生1.8432mhz的时钟频率,分别作为8251与8253的时钟输入,若设定8251通信波特率为9600bps,波特率因子为16,则需要 153.6khz的接收/发送时钟频率,该频率可由8253的out0产生。

  下面的a51程序段说明了如何设置8253使其产生153.6khz的方波,以及如何用8251收/发数据:

  ;设置8253的程序段:

  mov a,#36h ; 计数器0输出方波控制字

  mov dptr,#0ffffh ; 指向控制字寄存器

  movx @dptr,a

  mov dptr,#0fffch ; 指向0计数器地址

  mov a,#0dh

  movx @dptr,a

  mov a,#0

  movx dptr,a

  setb p1.0

  ;操作8251的程序段:

  …

  start: mov dptr,#7fffh ;8251控制、命令口地址

  mov a,#5eh ;一个

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!