STM8 UART 接收器

2020-07-01来源: eefocus关键字:STM8  UART  接收器

STM8 UART 接受器

UART可以接收8位或9位的数据字。如果M位置1,字长为9位,其中MSB存放在寄存器UART_CR1的R8位。


字符接收
在UART接收期间,数据的最低有效位首先从RX脚移进。在此模式里,UART_DR寄存器有一个缓冲器(TDR),位于内部总线和接收移位寄存器之间。


配置步骤:
1.编程UART_CR1的M位来定义字长。
2.在UART_CR3中编程停止位的位数。
3.按下列顺序编写波特率寄存器选择要求的波特率。
a) UART_BRR2
b) UART_BRR1


4.将UART_CR2的REN置1。这将激活接收器,使它开始寻找起始位。
当一字符被接收到时

  • RXNE位被置位。它表明移位寄存的内容被转移到RDR。

  • 如RIEN位被设置,则产生中断。

  • 在接收期间如果检测到帧错误,噪音或溢出错误,错误标志将被置起。

  • 由软件读UART_DR寄存器完成对RXNE位清除。RXNE标志也可以通过对它写0来清除。
    RXNE位必须在下一字符接收结束前被清零,以避免溢出错误。
    注意:在接收数据时,RE位不应该被复位。如果RE位在接收时被清零,当前接收的字节会丢失。

断开符号
当STM8接收到一个断开帧时,UART像处理帧错误一样处理它。


空闲符号
当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果ILIEN位被置1将产生一个中断。


过载错误
如果RXNE还没有被复位,又接收到一个字符,则发生溢出错误。数据只有当RXNE位被清零后才能从移位寄存器转移到RDR寄存器。


当溢出错误产生时:

  • OR位被置位。

  • RDR内容将不会丢失。读UART_DR寄存器仍能得到先前的数据。

  • 移位寄存器中以前的内容将被覆盖。随后接收到的数据都将丢失。

  • 如果RIEN位被置1,则产生中断。

  • 顺序执行对UART_SR和UART_DR寄存器的读操作,可复位OR位

噪音错误
使用过采样技术(同步模式除外),通过区别有效输入数据和噪音来进行数据恢复。

STM8_检测噪声的数据采样图
(图103:STM8检测噪声的数据采样图)


注意:采样频率是波特率的16倍。

STM8_检测噪声的数据采样表
(表47:STM8检测噪声的数据采样表)


当在接收帧中检测到噪音时:

  • NF在RXNE位的上升沿被置1。

  • 无效数据从移位寄存器移送到UART_DR寄存器。
    NF这个位和RXNE位同时置1,后者会引发中断。顺序执行对UART_SR和UART_DR寄存器的读操作,可复位NF位。

帧错误
当以下情况发生时检测到帧错误:
由有大有在的时和于没同步上或量噪音的原因,停止位没预期间上接收识别出来。


误当帧错被检测到时:

  • 1位被硬件置FE

  • 无效数据从移位寄存器传送到UART_DR寄存器。

  • 在单字节通信时,没有中断产生。然而,这个位和RXNE位同时置1,后者将引发中断 。
    顺序执行对UART_SR和UART_DR寄存器的读操作,可复位FE位。

间止位接收期的可配置的停

被接收的停止位的个数可以通过控制寄存器3的控制位来配置。在正常模式时,可以是1或2个,IrDA模式里是1个,在智能卡模式里是1.5个。

  • 1个停止位:对1个停止位的采样在第8,第9和第10采样点上进行。

  • 1.5个停止位(仅智能卡模式):对1.5个停止位的采样是在第16,第17和第18采样点进行的。
    能卡会在采样时拉低数据线,以此表示出现了帧错误。FE在1.5个停接收到NACK信号的智 位结束时和RXNE一起被置1。

  • 2个停止位:对2个停止位的采样是在第一停止位的第8,第9和第10个采样点完成的。如果第一个停止位期间检测到一个帧错误,帧错误标志将被置1。第二个停止位不再检查帧错误。在第一个停止位结束时RXNE标志将被置1。

关键字:STM8  UART  接收器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501793.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8 多处理器通信
下一篇:STM8 UART 发送器

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8学习笔记---普通IO口模拟串口功能
串口在产品应用中很常见,但是单片机的默认带的串口往往比较少,有时候就会出现串口不够用,所以就想着能不能用普通IO口模拟串口来实现串口的功能。要模拟串口首先要清楚串口数据传输过程中的原理。常用的串口格式为 1位起始位,8位数据位,无校验位,1位结束位。起始位为低电平,结束位为高电平。数据0为低电平,数据1为高电平。所以最简单的串口传输一个字节总共有10个电平变化,每个电平的宽度由波特率决定的。具体的串口数据分析,可以参考这篇文章:STM8学习笔记---通过示波器分析串口数据。下面看一个通过波特率如何计算每个位的电平宽度。发送一个字节,以stm8中9600bit/s的波特率计算的过程为例(1秒钟传输9600位)。可以计算出传输1位所需
发表于 2020-06-07
STM8学习笔记---普通IO口模拟串口功能
IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
同一个工程文件,选择103F3可以编译通过,但是选择103K3便提示空间不足百思不得其解,查阅大量资料无果。最后在IAR工程里面找到了配置文件 打开003f3的配置文件和003K3配置文件进行对比,其余都一样,唯独程序空间003K3是从地址0X9000开始,少了1K,不知道为何要这样设置,明明两个芯片空间大小和结构一模一样。将003K3的配置文件地址改成0x8000开始,重新编译,一切正常。编译通过,程序空间总共占用5419b。问题:这样操作后将程序下载到电路板上不知道会不会出错,有待验证。个人猜测应该没问题,是IAR的错误。
发表于 2020-06-07
IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
STM8的烧写
最近一次烧写STM8遇到以下问题1.Error : Cannot communicate with the tool.Wrong tool selection or check tool power supply or check that a previous session is closed.Error : < PROGRAM MEMORY programming failed.和stlink的链接出问题,有两种情况:a.仿真器未连接b.驱动没装好2.Error : Cannot communicate with the device !Check the SWIM cable connection and check
发表于 2020-06-07
STM8读取AD值偶尔跳变出错的问题
在调试STM8S103K3T6的AD功能时,发现当温度快速变化时(吹风机模拟),读取到的AD值会偶尔出现跳变,出现的位置相对固定;AD时钟设为2Mhz,每100ms采集一次,单次单路采集,通道无切换,用示波器看供电电压和AD口电压都没有毛刺等跳变,可以排除外部器件的问题;后来查看手册发现问题,DRH/DRL数据的左对齐和右对齐方式,对应不同的读取顺序我使用的右对齐,把程序改成先读DRL,再读DRH,问题解决
发表于 2020-06-06
STM8读取AD值偶尔跳变出错的问题
基于使用STM8单片机I2C方式实现读写操作
STM8硬件I2C知识STM8S的I2C模块不仅可以接收和发送数据,还可以在接收时将数据从串行转换成并行数据,在发送时将数据从并行转换成串行数据。可以开启或禁止中断。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。允许连接到标准(最高100kHz)或快速(最高400kHz)的I2C总线。1.I2C的4种模式● 从设备发送模式● 从设备接收模式● 主设备发送模式● 主设备接收模式2.I2C的主要特点● 并行总线/I2C总线协议转换器● 多主机功能:该模块既可做主设备也可做从设备●I2C主设备功能─ 产生起始和停止信号●I2C从设备功能─ 可编程的I2C 地址检测─ 停止位检测● 产生和检测7位/10位地址和广播呼叫
发表于 2020-05-23
基于使用STM8单片机I2C方式实现读写操作
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved