当前位置:文档之家› 51系列单片机的串口扩展方案

51系列单片机的串口扩展方案

[ 2] 赵 梓 森 . 光 纤 通 信 工 程 ( 第 二 版 ) [ M] . 北 京 : 人 民 邮 电 出 版 社 , 1994. ( 责任编辑: 卓 光)
来实现多串口扩展的模型。
关键词: 多串口;串口通信; 串口扩展
中图分类号: TP27
文献标识码: A
文章编号: 1672- 7800( 2008) 05- 0135- 02
串行接口设备凭借其控制灵活、接口简单、占 用 系 统 资源 少等优点, 被广泛应用于工业控制、家庭安防、GPS卫星定位导 航以及水、电、气表的抄表等领域。在这些嵌入式系统中, 可能 会有很多从设备都通过串行接口与主机进行通信, 这使得开发 人 员 常 常 面 临 系 统 中 主 机 串 行 通 信 接 口 不 足 的 问 题 。针 对 此 问 题, 本文介绍了几种常见的解决方法。
MOV TXD, C LCALL DEL833 RET ;********从PC 机接收数据子程序******** OUTPUT: JB RXD, ¥ ; 判断是否有起始位出现 LCALL DEL833 MOV R3, #8 OUT: MOV C, RXD RRC A LCALL DEL833 DJNZ R3,OUT ; 接收8 位数据 JNB RXD ,¥ ; 判断是否有停止位出现 RET
·136·
软件导刊
2008 年
收过程中需要检测起始位, 这可以使用查询方式, 或者, 在端口 具 有 中 断 功 能 的 主 机 中 也 可 以 使 用 端 口 的 中 断 进 行 处 理 。接 收 和发送过程中, 对定时的处理既可以使用查询方式也可以使用 定时器中断方式。为了确保数据的正确性, 在接收过程中可以 在检测异步传输的起始信号处加上一些防干扰处理, 在接收每 个位时可以采用多次采样。
( 1) 自动帧错误检测。自动帧错误检测指的是在数据传输的 过程中, 如果由于噪音等随机干扰造成接收方接收不到正确的 停止位, W77E58能够自动检测出并设置标志FE( FE_1) , 此标志 被定位在SCON.7(SCON1.7), 用户可以访问, 并且必须软件清除。
( 2) 多机通讯自动地址识别。在标准的8051系列单片机中, 当进行多机通讯时, 发送9位数据, 最后一位只当作地址/数据 识别位, 但是并不能区分准确地址, 准确地址须靠软件识别, 而 在W77E58中, 增加了地址特殊寄存器SADDR和地址屏蔽特殊 寄存 器SADEN, 只 有SADEN中 的 某 一 位 为1, 计算 实 际 地 址 时 相对应的SADDR的位才有效, 若SADEN中 某 一 位 是0 , 则进 行 实 际 地 址 计 算 时 忽 略 对 应 的 SADDR中 的 位 。 例 如 :
2 软件模拟法
软件模拟法可根据串行通讯的传送格式, 利用定时器和主 机的I/O口来模拟串行通讯的时序, 以达到扩展串口的目的。接
作者简介: 鲍梦( 1979 ̄) , 女, 江西南昌人, 江西蓝天学院助教, 研究方向为软件工程; 刘智萍( 1979 ̄) , 女, 江西南昌人 , 江西 蓝 天学 院 助教 , 研究 方 向为软件工程。
1 基于SP2338的串行口扩展
SP2338是采 用 低 功 耗CMOS 工 艺设 计 的 通 用 异 步 串 行 口 扩展芯片, 它可轻松地将主机原有的1个串行口扩展成3 个全 新 的 全 双 工 串 行 口 。SP2338适 用 于1个 起 始 位 、8个 数 据 位 、1个 停止位的多串口系统, 也就是说其帧格式是不可编程的。主机 通 过 改 变ADRI1, ADRI0地 址 线 状 态 的 方 式 选 择3个 子 串 口 中 的任意1个, 3个子串口的地址分别为00, 01, 10。地址11用于执 行SP2338 芯片本身的复位指令0x35 或0xB5、睡眠指令0x55或 0xD5、延时指令0x00。向RX0 ̄RX3中的任意1个接收端口 写 任 意 数 据 即 可 将 SP2338 唤 醒 , 但 由 于 SP2338 的 唤 醒 时 间 需 要 25ms左右, 故用于芯片唤醒的数据将不会被主机接收。因此, 可以先发送1个字节数据用于唤醒芯片, 延时25ms后即可进行 正常的数据传输。
当单片机要向串口设备发送数据时, 其工作过程是: ( 1) 先向SP2338的串口地址线ADRI0、ADRI1送地址信号
(A DRI0、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的每个串口都有自己 的 发 送 缓冲 区 和 接 收 缓 冲区, 因此扩展后的3个串口就可以完全独立地同时通信, 就好 像单片机同时拥有3个串口似的, 若1个单片机有2个串口, 那么 配 上 2片SP2338就 可 以 扩 展 到 6个 串 口 。 SP2338每 个 子 串 口 的 波 特 率 都 可 以 达 到9600bps, SP2338 工作时需要配1个晶振, 该晶振Fosc的频率与母串口的波特率 有如下关系: K母=1920*Fosc, 与子串口波特率的关系如下: K子=480*Fosc, 因此 , 如 果 子 串 口 采用9600波 特 率 , 根 据 以 上 公 式 , Fosc= 20MHz, 而母串口的波特率必须达到388400bps。这样与SP2338 的母串口相连的单片机串口的波特率达到388400bps, 若单片 机 采 用 非11.0592M的 工 作 晶 振 , 则 波 特 率 会 有 偏 差 , 不 过 , SP2338允 许 波 特 率 误 差 为 2.5% 未使用的输入端口, 如RX0、RX1、RX2等必须连接到VCC; 未使用的输出端口, 如TX0、TX1、TX2等 必 须 悬 空 ; 未使 用 的 ADRI0、ADRI1必 须 连 接 到 GND。
3 使用双串口单片机
W77E58是 与 MCS51系 列 单 片 机 兼 容 的 可 多 次 编 程 的 快 速 微处理 器, 内部集成有2个增强型的 全双工串行口, 其串口增 强 性 特 征 在 于 特 有 的 地 址 自 动 识 别 和 帧 出 错 诊 断 功 能 。值 得 注 意的是, 串行口1只能使用定时器1作为其波特率发生器; 而串 行口0既可以使用定时器0, 也可以使用定时器1。若使用时2串 口通信波特率相同, 则可以同时使用定时器1, 从而减少占用1 个定时器0。
SADDR:10100100 SADEN:11111010 实 际 地 址 :10101X1X 在进行多机通讯时, 只有接收到的地址帧和根据SADDR, SADEN计算出的地址完全相同时, 从机才会置位中断标志, 这 完全由硬件自动完成, 而不是像标准8051系列那样必须靠软件 完成。
参考文献:
[ 1] 李 之 棠.单 片 机 通 信 技 术 与 工 程 实 践 [ M] .北 京 : 人 民 邮 电 出 版 社, 2005.
例: 软件设计中, 89C51 单片机的P1.0 和P1.1 口分别模拟 串行通信的发送和接收, 其接口程序主要由INPUT 发送 子程 序和OUTPUT接收子程序组成。通信速率1200 bit /s, 帧格式为 N.8.1。发送时, 先发送一个起始位( 低电平) , 接着按低位在先 的顺序发送8 位数据, 最后发送停止位。接收时, 先判断P1.1 接 收端口是否有起始低电平出现, 如有则按低位在先的顺序接收 8 位数, 最后判断P1.1 口是否有停止 高 电 平 出 现 , 如有 则 完 成 一个数据接收, 否则继续等待。模拟串行通信程序清单如下:
TXD EQU P1.0 RXD EQU P1.1; 定义89C51 P1.0 为发送端, P1.1 为接收端 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV A, #30H MOV R5, #N SETB RXD ; P1.0 置高 TX: LCALL INPUT; 调用 发 送 子 程 序 , 将寄 存 器A 中 内 容 发给PC 机; SETB TXD ; P1.1 置高 MOV R0,#40H RX: LCALL OUTPUT ; 调用 接 收 子 程 序 , 将接 收 的N 个 数 据 存 放 在 以 40H开 始 的 地 址 中 MOV @R0,A INC R0 DJNZ R5, RX ; N 个数据接收结 束 , 则等 待 , 否 则 转RX 继 续接收 AJMP ¥ ;**************延时833μs 子程序***** DEL833: MOV R7, #205 MS11: DJNZ R7, MS11 RET ; ********************************** ;******** 89C51发送数据给PC 机子程序**** INPUT: CLR C MOV TXD,C ;发送起始位 LCALL DEL833 ; 延时 MOV R3, #8 REP: RRC A MOV TXD, C LCALL DEL833 DJNZ R3,REP ;发送8 位数据 SETB C ;发送停止位
第7卷 第5期 2008年 5 月
软件导刊 Software Guide
Vol.7 No.5 May 2008
51系列单片机的串口扩展方案
鲍 梦, 刘智萍
( 江西蓝天学院瑶湖校区公教部计算机教研室, 江西 南昌 330098)
相关主题