找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2|回复: 0
打印 上一主题 下一主题
收起左侧

第10章 UART串口通信和指针基础10.1 10.2

[复制链接]
跳转到指定楼层
楼主
通信,按照传统的理解就是信息的传输与交换。对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。没有通信,单片机所实现的功能仅局限于单片机本身,就无法通过其它设备获得有用信息,也无法将自己产生的信息告诉其它设备。如果单片机通信没处理好的话,它和外围器件的合作程度就受到限制,最终整个系统也无法完成强大的功能,由此可见单片机通信技术的重要性。UARTUniversal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用于单片机和电脑之间以及单片机和单片机之间的通信。
本章除了介绍单片机的UART通信外, C语言的学习也逐步开始进入深水区。几乎每一C语言教材都会强调指针是C语言的灵魂。由此可见,能不能灵活应用指针是判断是否真正学会C语言的重要指标之一,本章将开始介绍指针相关的内容。
10.1 串行通信的初步认识
通信按照基本类型可以分为并行通信和串行通信。并行通信数据的各个位同时传送,可以实现字节为单位通信,通信线多占用资源多,成本高。前边用到的P0 = 0xFE;一次给P08I/O口赋值,同时进行信号输出,类似于有8个车道同时可以过去8辆车,这种形式就是并行的,习惯上还称P0P1P2P351单片机的4组并行总线。
串行通信是一条车道,一次只能一辆车通过。0xFE单字节要传输,假如低位在前高位在后,发送方式0-1-1-1-1-1-1-1-1,一位一位的发送出去,要发送8次才能发送完一个字节。
STC89C52有两个引脚是专门用来做UART串行通信的,一个是P3.0一个是P3.1,它们还分别有另外的名字叫做RXDTXD,由它们组成的通信接口就叫做串行接口,简称串口。两个单片机进行UART串口通信基本的演示图如图10-1所示。

10-1  单片机之间UART通信示意图
图中GND表示单片机系统电源的参考地,TXD是串行发送引脚,RXD是串行接收引脚。两个单片机之间要通信,首先电源基准得一样,所以要把两个单片机的GND相互连接起来,然后单片机1TXD引脚接到单片机2RXD引脚上,即此路为单片机1发送而单片机2接收的通道,单片机1RXD引脚接到单片机2TXD引脚上,即此路为单片机2发送而单片机1接收的通道。这个示意图就体现了两个单片机相互收发信息的过程。
当单片机1想给单片机2发送数据时,比如发送一个0xE4这个数据,用二进制形式表示就是0b11100100,在UART通信过程中,是低位先发,高位后发的原则,那么就让TXD首先拉低电平,持续一段时间,发送一位0,然后继续拉低,再持续一段时间,又发送了一位0,然后拉高电平,持续一段时间,发了一位1……一直到把8位二进制数字0b11100100全部发送完毕。这里就涉及到了一个问题,就是持续的这“一段时间”到底是多久?由此便引入了通信中的一个重要概念——波特率,也叫做比特率。
波特率就是发送二进制数据位的速率,习惯上用baud表示,即发送一位二进制数据的持续时间=1/baud在通信之前,单片机1和单片机2首先要明确的约定好它们之间的通信波特率大小,并且必须保持一致,收发双方才能正常实现通信。
约定好速度后,还要考虑第二个问题,数据什么时候是起始,什么时候是结束呢?不管是提前接收还是延迟接收,数据都会接收错误。在UART通信的时候,一个字节是8位,规定当没有通信发生时,线路保持高电平,当要发送数据之前,先发一位0表示起始位,然后发送8位数据位,数据位是先低后高,数据位发完后再发一位1表示停止位。这样本来要发送8位数据,实际一共发送10位,多出来的两位一位起始位,一位停止位。而接收方原本一直保持的高电平,一旦检测到一位低电平,就知道要开始准备接收数据了,接收8位数据位后,然后检测到停止位,再准备下一个数据的接收如图10-2所示。

10-2  串口数据发送示意图
10-2串口数据发送示意图,实际上是一个时域示意图,就是信号随着时间变化的对应关系。比如在单片机的发送引脚上,左边的是先发生的,右边的是后发生的,数据位的切换时间就是波特率分之一秒。
10.2 USB转串口通信
早期的电脑,尤其是台式机通常有一个9针的串行接口,叫做RS232串口。随着技术的发展,工业上还有RS232串口通信的大量使用,但是商业技术的应用上,已经慢慢的使用USBUART技术取代了RS232串口
在电路上添加一个USB转串口芯片,就可以实现USB通信协议和标准UART串行通信协议的转换,Kinst51开发板上使用的是CH340这个芯片,如图10-3所示。

10-3  USB转串口电路
10-3中,CH340电路比较简单,根据数据手册,把电源、晶振接好后,1脚和2脚的DPDM分别接USB口的2个数据引脚,6脚和7脚接到了单片机的RXDTXD上去。
CH3406脚位置加了4148二极管,是STC89C52RC这个单片机下载程序的特殊需求。这个单片机下载程序需要冷启动,即软件上先点下载后给电路上电,上电的瞬间单片机通过串口检测是否需要下载程序。虽然单片机的VCC是由开关控制,但是由于CH3406脚是输出引脚,如果此处没有二极管的话,开关没有打开之前,由于6脚默认是高电平,电流会从CH3406脚灌入单片机的P3.0引脚,给后级的电容进行充电,造成后级有一定幅度的电压。这个电压值虽然只有两三伏左右,但是可能会影响到正常的冷启动。加了二极管后,可以消除这种不良影响,此外也不影响通信。串口通信时,CH3406脚输出高电平时,单片机的RXD也是高电平;当CH340输出低电平时,单片机的RXD为二极管的压降值约0.7V,依然会被单片机识别成为低电平。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表