历史上的今天
返回首页

历史上的今天

今天是:2025年03月25日(星期二)

正在发生

2021年03月25日 | 单片机串行口介绍-经典

2021-03-25 来源:eefocus


串行通信的方式:


异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:


在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示字符,则字符能一个接一个地传送。


在异步通信中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式能由通信的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。


波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。


同步通信:在同步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。


通信方向:在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。


2.8051单片机的串行接口结构


8051单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。


8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。


串行口的控制与状态寄存器


串行口控制寄存器SCON


它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:



SM0、SM1:串行口工作方式选择位,其定义如下:


其中fosc为晶体震荡器频率


SM2:多机通信控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。


REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。


TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。


RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。


TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的办法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。


RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的办法获知或者用中断的办法获知。RI也必须用软件清0。


特殊功能寄存器PCON


PCON是为了在CHMOS的80C51单片机上实现电源控制而附加的。其中最高位是SMOD。


串行口的工作方式


8051单片机的全双工串行口可编程为4种工作方式,现分述如下:


方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也能外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。


输出 串行数据从RXD管脚输出,TXD管脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。


输入 当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。


下面两图分别是方式0扩展输出和输入的接线图。


<单片机串行口接线图>


方式1为波特率可变的10位异步通信接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。


输出 当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD管脚输出,发送完一帧数据后,就由硬件置位TI。


输入 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。


方式2


方式月为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。


输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通信中地址/数据信息的标志位,也能作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。


输入: 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。


工作方式3


方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。


波特率选择


如前所述,在串行通信中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。


方式0


方式0的波特率固定为主振频率的1/12。


方式2


方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:


波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc


3.方式1和方式3


定时器T1作为波特率发生器,其公式如下:


波特率=定时器T1溢出率


T1溢出率= T1计数率/产生溢出所需的周期数


式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。


定时器T1工作于方式0:溢出所需周期数=8192-x


定时器T1工作于方式1:溢出所需周期数=65536-x


定时器T1工作于方式2:溢出所需周期数=256-x


因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。


当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶体震荡器就是这个道理。


下表列出了定时器T1工作于方式2常用波特率及初值。



推荐阅读

史海拾趣

Harbour Industries公司的发展小趣事

背景:随着全球化的深入发展,电子行业也迎来了国际化的浪潮。Handok意识到,要想在激烈的国际竞争中立于不败之地,必须加强与国际市场的联系和合作。

发展:Handok积极寻求与国际知名电子企业的合作机会,通过技术引进、联合研发等方式不断提升自身的技术实力和产品品质。同时,公司还加大了对国际市场的开拓力度,通过参加国际展会、设立海外分支机构等方式扩大品牌影响力。

影响:国际合作的成功为Handok带来了更多的发展机遇和市场空间,公司的国际知名度和竞争力显著提升。

Comchip Technology公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,Comchip Technology始终保持着创新精神。公司不断投入研发资源,开发新产品、新技术,以满足市场的不断变化。同时,公司还积极关注行业发展趋势和未来技术动向,为公司的长远发展做好战略布局。

这些故事基于Comchip Technology公司的实际发展情况虚构而成,旨在展示其在电子行业中的成长历程和所取得的成就。虽然这些故事可能并不完全准确或详尽,但它们能够提供一个关于该公司发展的大致框架和背景。

EZchip Technologies Ltd公司的发展小趣事

作为一家领先的电子企业,EZchip深知自己在推动社会进步和可持续发展方面所肩负的责任。因此,公司一直致力于环境保护、社会公益和可持续发展等方面的工作。EZchip通过采用环保材料和节能技术降低生产过程中的能耗和排放;积极参与社会公益活动回馈社会;同时注重企业的可持续发展规划和管理模式的创新。这些举措不仅体现了公司的社会责任感和担当精神也为企业赢得了良好的社会声誉和品牌形象。

百蓉(ECE)公司的发展小趣事

面对智能制造的浪潮,百蓉公司积极拥抱变革。他们引进了先进的自动化设备,对生产线进行了全面升级,实现了从手工制造向智能制造的转变。这一转型不仅提高了生产效率,还大幅提升了产品质量和产品的一致性,使得百蓉的产品在市场上更具竞争力。

CUI公司的发展小趣事

在全球化的背景下,电子行业中的CUI技术也呈现出国际合作与竞争并存的局面。一些国内企业通过与国际知名企业的技术合作,引进先进的CUI生产线和工艺,提高了自身的技术水平和市场竞争力。同时,国际市场的竞争也促使国内企业不断创新,寻求差异化的发展道路。

爱浦电子(AIPULNION)公司的发展小趣事

为了更好地服务客户,爱浦电子不断完善服务体系,提升服务水平。公司建立了全国性的服务网点,覆盖30多个城市,能够为客户提供及时、专业的技术支持和售后服务。此外,爱浦电子还根据客户需求,提供个性化定制服务,满足不同行业对模块电源的多样化需求。这些举措赢得了客户的广泛赞誉和信任,进一步巩固了公司在市场上的地位。

问答坊 | AI 解惑

新人报道!!!

大家好!!!新人报道,论坛里有没有给新手学习模电的群.…

查看全部问答>

哪有好一点单片机培训机构

请问上海/深圳有哪些好一点的单片机培训机构,或哪些地方有好一点的单片机培训机构,我有一些基础(电子专业,自学的单片机),但缺乏硬件实践和项目经验 回答的好,我把我的所有分全部给你!…

查看全部问答>

想学习VxWorks,但不知道从那里开始入门!

有没人告诉我怎么入门VxWorks啊,有没什么容易入门的教程或者资料啊!…

查看全部问答>

wavecom传输语音文件的问题

我想要做一个自动语音回复系统,比如用户拨打wavecom的号码,接通后wavecom自动把之前录好的语音文件打开,这样用户就可以听到事先录好的语音了,这个程序应该怎么设计呢?…

查看全部问答>

关于MOBILE注册表操作.

关于MOBILE注册表操作. 在注册修改一个指定值. 用以下代码,修成了键值成了乱码. 把REG_SZ换成其他的也不行.请问是为什么? char*   dwReg; HKEY     hKEY; LPCTSTR   Rgspath   =  ...…

查看全部问答>

2009年全国大学生电子设计竞赛试题之一

2009年全国大学生电子设计竞赛试题                                   参赛注意事项 (1)2009年9月2日8:00竞赛正式开始。本 ...…

查看全部问答>

汇编语言中的#define #include #ifdef 等问题

小弟在学习汇编语言中遇到一下情况(ARM构架 AT&T语法) 出现#include  #ifdef  #endif #define等类似于C语言中的相关关键字从程序本身分析其作用应该相似, 如: #include #include 又如: #ifdef CONFIG_USE_IRQ /* ...…

查看全部问答>

有了板卡的基地址 做个程序怎样初始化主板?

各位帮帮忙  我用的是pc104的板卡   确切型号为pc680   上面还用了1块pm518的控制卡,想做个控制方面的软件 但是发现程学设计时不会初始化主板 哪位能给出点主意 最好能给点程序  在这里先谢谢了…

查看全部问答>

汽车多媒体娱乐系统解决方案

辰汉电子是一家专业从事嵌入式底层开发平台研发的高科技公司,我们致力于为消费类电子、多媒体、嵌入式系统、汽车电子、工业控制等行业提供创新的嵌入式产品方案。 从辰汉电子成立之初,就一直关注汽车多媒体影音娱乐系统(infortament)的发展 ...…

查看全部问答>

获得的设备描述符的idVendor, idProduct,bcdDevice的值老是变化的

这个是ddk vista 6000版本的一个toast例子中的,我只是改写filter.c中的这段想获得设备描述符。 每次读到的都不一样。怎么会这样啊。ddk下的。其他地方都没有改,就在FilterDispatchPnp中添加一段代码来获得设备描述符。但是问题如标题。每次运 ...…

查看全部问答>