串行通信接口扩展技术.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串行通信接口扩展技术

单片机串行通信接口扩展技术 Serial Communications Interface Expanding Technology 清华大学Motorola单片机与DSP应用开发研究中心 蒋俊峰 摘 要:本文介绍了分时共用和I/O口模拟这两种串行通信接口扩展技术。利用此技术可解决调试和实际应用过程 中,单片机串行通信接口不够或者没有串行通信接口的问题。 关键词:串行通信接口,分时共用,I/O口模拟 前言 单片机的串行通信接口提供了与外设通信极大的方便性,虽然大多数单片机都具有硬件SCI(Serial Communications Interface),但也有一些产品没有SCI,如Motorola的MC68HC908JL3等,对于这些产品的用户来说这是一个缺憾。而且,一般八位单片机只有一个SCI,但在很多实际应用,需要更多的串行通信接口。例如在基于Modem的远程控制系统中,单片机与PC机通信的同时,还需要与Modem芯片进行通信;而在多机系统中,单片机需要与其他主机通信,另外也需要与本机控制台通信。所以利用单片机自身的资源进行串行通信接口的扩展很有意义。 笔者在开发的过程中,总结了一些串行通信接口的扩展技术:分时共用,I/O口模拟。前者利用MCU自身的硬件SCI,通过控制逻辑分时共享使用同一串行通信接口,后者在不增加硬件的条件下,充分利用MCU自身的资源利用I/O口模拟串行通信接口。 串行通信接口原理 单片机的SCI是一个通用异步接收器/发送器UART(Universal Asynchronous Receiver /Transmiter)类型的异步通信接口,通过串行通信协议(如RS-232协议)同主机系统通信。 在一般应用中,MCU简单地把数据写入数据寄存器即可实现一个字符的串行发送,SCI系统完成发送数据的所有细节工作,包括附加起始位和停止位以符合串行格式。SCI的接收器自动探测一个字节的起始位,并通过采样接收数据。接收串行数据并变换成并行数据的所有工作均由SCI完成,不需要MCU的干预。接收到数据后,MCU简单地从数据接收寄存器读取数据即可。 SCI使用标准不归零(NRZ)格式(一个起始位,8个或9个数据位和一个停止位),最常用的格式数据位是8位的,如图1所示。 NRZ数据格式的基本特点如下: 高电平为逻辑1,低电平为逻辑0; 发送/接收数据空闲时TXD、RXD线为高电平; 发送/接收数据串的第一位是起始位(逻辑0); 数据的最低位LSB首先被发送/接收; 数据串的最后一位(第10位或第11位)是停止位(逻辑1)。 分时共用技术 分时共用串行通信接口技术利用MCU自身的硬件SCI,通过控制逻辑分时共享使用同一串行通信接口。控制逻辑分时共用串行通信接口的原理图如图2所示。 图2中U1为74HC32(或门),U2为74HC04(非门),U3为74HC08(与门)。RXD、TXD为从MCU直接引出的SCI接收引脚和发送引脚,PTC0为MCU的I/O口,在此定义为输出,用于控制逻辑片选。当PTC0为高电平时,U1的2引脚和13引脚输入为高,3引脚和11引脚输出恒为高,即TXD1输出恒为高,RXD1输入被屏蔽;而U1的5引脚和10引脚输入为低,6引脚输出为TXD的电平,8引脚输出为RXD2的电平,此时TXD2的输出和RXD2的输入与MCU的TXD和RXD相一致。相反,当PTC0为低电平时,TXD2输出恒为高,RXD2输入被屏蔽,TXD1的输出和RXD1的输入与MCU的TXD和RXD相一致。10K的上来电阻R1确保在初始状态下,即使PTC0未初始化的情况下,PTC0的电平为高,即初始状态下TXD2和RXD2有效。 通过这种逻辑控制方式,在PTC0的控制下,TXD1、RXD1和TXD2、RXD2可以轮流使用MCU的串行通信接口,达到分时共享的目的。这种方式可应用于两个串行通信无需同时进行的场合。 I/O口模拟技术 I/O口模拟串行通信接口技术在不增加硬件的条件下,充分利用MCU自身的资源利用I/O口模拟串行通信接口,即利用I/O口做一个软件串口。软串口的发送和接收时序和硬件SCI一样,空闲状态为高电平,起始位为低电平,数据最低位LSB在前,依次到最高位MSB,最后是停止位,停止位为高电平,具体时序见图1。 这里给出利用MC68HC908GP32的两个普通的I/O引脚PTD4和PTD5实现的软件串口。在MCU总线时钟为2.4576MHz的条件下,波特率为4800,一个起始位,8个数据位,无校验位,一个停止位。程序用C语言编写,编译环境为Hiware C编译器。程序清单如下。 宏定义 #define exit_critical asm sei //关中断 #define enter_criti

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档