当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]采用μPD78045F实现异步串行UART功能的方法

本文给出在μPD78045F上采用软件模拟方式,使用2个I/O口线和一个8位定时器实现异步串行UART功能的方法。本方法占用资源少,设置和使用简单方便,帧格式可自由改变。

  设计思路

  每一个UART都应具备如下功能:

  异步串行发送和接收的基本单位是帧,通常每帧包括以下部分:

  本设计中,发送采用主动查询方式,可使用任一输出端口,本文中将P12.1设置为输出口,作为TxD;由于异步通讯中接收是被动的和随机的,因此只能采用中断方式,P0.1是外部中断INTP1的外部引脚,设计中使用它作为RxD,设置为下降沿触发方式,可及时检测到起始位的逻辑0电平,进入中断处理程序进行数据接收。

  波特率发生器使用8位定时器TM1,产生指定波特率下的1个发送/接收位时序长度,即“位定时”。UART的并行数据到串行数据的转换、每帧数据格式的生成、发送和接收功能都由软件来控制完成。在指定波特率下,位定时为1,000,000ms / 波特率,硬件系统采用fx=4.9152 MHz的主晶振,软件设置定时器计数时钟为4分频,即:fx/4=1.2288 MHz ,达到指定波特率位定时常数为:1228800 / 波特率 。常用的波特率对应的位定时常数列在表1中。

  


  以下设置通讯参数为9600波特率,1位起始位,6位数据位,发送顺序从MSB到LSB,偶校验,2位停止位。

  

 

  

 

  图1 发送过程流程图

  

 

  图2 接收过程流程图

  软件流程

  发送

  发送过程采用主动查询方式完成,为保证每个发送位的时长相同,整个过程关闭中断。首先,设定定时器定时一位时长,启动定时器,关闭中断,开始一帧的发送;然后,在发送一位时长的低电平(起始位)后,按最高位在先的顺序依次发送6个数据位,同时计算偶校验位,并在数据位后发送;最后,发送2位时长高电平作为停止位,结束一帧的发送。关闭定时器,开放中断,发送过程结束。发送流程见图1。

  接收

  接收过程是在中断处理程序中完成的。中断是由下降沿触发的,进入中断的时刻是处在接收起始位的时段。为了保证接收准确,在检测到起始位后,不能在每一位时长的开始而应在其中间进行采样。进入中断程序后,首先通过设定定时器,等待一位半时长,跳过整个起始位和半时长的首个数据位,然后开始按最高位在先的协议接收六个时长的数据位,每接收一位进行串并转换和校验位计算;随后接收校验位并与计算机结果比较,确定是否接收正确。出于简化程序,校验位接收完毕后,没有读取停止位。最后关闭定时器,结束接收过程,中断返回。

  在μPD78045F的中断系统中,高优先级中断的响应时间最长32个CPU时钟,这些时延应在程序中进行补偿,尤其在高速率通讯时位定时时长很短,补偿尤为重要。补偿的方法是从位定时中减去最长时延32个时钟。在9600波特率、定时器 4分频计数情况下,应减去 32/4=8个定时器计数。接收中断处理流程见图2。

  结语

  本文介绍的软件UART实现方法,已在项目中实际应用,达到功能要求,工作稳定可靠。从以上方案可以看出,本方法的最高波特率可达38400,每一帧的格式可灵活改变,其中数据位长度和发送顺序均没有限制,可根据需要发送数十位的数据位。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek新推出BS67F2432具备触控按键、高精准度HIRC与LCD驱动器Flash MCU。主要特色为内建高精准度4MHz HIRC振荡电路、8路触控按键及最大支持4COM×15SEG LCD驱动器。适用于触控接...

关键字: MCU LCD驱动器 定时器

串行通信是一种通信方式,数据在通信线上按位进行传输。每位数据占据固定的时间长度,使用少数几条通信线路就可以完成系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

关键字: 串行通信 UART

虽然 USB 几乎完全取代那些旧电缆和连接器,但 UART 绝对不会成为过去。您会发现许多 DIY 电子项目都使用 UART。

关键字: UART 串口通信 USB

UART(通用异步收发器),这是用于全双工串行通信的最常见协议。它是设计用于执行异步通信的单个LSI(大规模集成)芯片。该设备将数据从一个系统发送到另一系统。

关键字: 数据通信协议 UART 异步收发器

Holtek持续扩展Touch A/D Flash MCU产品,新增系列成员BS86C12CA,延续优良抗干扰特性,提供丰富的定时器资源并支持LXT振荡器。引脚与BS86C08C及BS86D12C相容,具高性价比,适合需...

关键字: MCU LXT振荡器 定时器

采用MCU(微控制器单元)模块实现定时器的设计是通过利用MCU内部的定时器/计数器资源来实现的。定时器是MCU中的一个重要功能模块,它可以在特定的时间间隔内执行特定的操作,如产生中断、更新定时器值、触发其他设备等。

关键字: mcu模块 定时器

UART将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: UART 通信协议

单片机的外设是指与单片机核心处理部分相连的附加硬件模块,它们能够扩展单片机的功能和能力。这些外设包括各种模块和接口,用于处理特定的任务或实现特定的功能。

关键字: 单片机 定时器

北京2023年9月21日 /美通社/ -- 去年年底,ChatGPT诞生,凭借强大、精准的自然语言理解和生成能力,令全球用户为之一震。 自此,各行各业纷纷投身大模型研发竞赛,掀起新一轮技术创新热潮。金融行业更是如此。如...

关键字: 模型 GPU PD 多模

(全球TMT2023年9月8日讯)第24届中国国际光电博览会将于2023年9月6日-8日在深圳举行。三安集成出席,与行业同仁分享最新动态。在同期举办的2023 CIOE&YOLE国际论坛上,三安受邀在光收发器&...

关键字: 光电 集成 VCSEL PD
关闭
关闭