串口通信校验方式(even,odd,space,mark)UART数据波形分析

2023-05-16

1. even 每个字节传送整个过程中bit为1的个数是偶数个(校验位调整个数)

2. odd 每个字节穿送整个过程中bit为1的个数是奇数个(校验位调整个数)

3. noparity没有校验位

4. space 校验位总为0

5. mark 校验位总为1

UART数据波形分析

摘要:本文通过对异步串行数据格式的分析,阐述通过波形分析方法调试UART数据收发的原理和方法。

经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况。其实最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:

1.         是否有数据接收或发送;

2.         数据是否正确;

3.         波特率是否正确;

一、    串行数据的格式

异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位位,数据位可以是5678位,停止位可以是11.52位。

起始位是一个值为0的位,所以对于正逻辑的TTL电平,起始位是一位时间的低电平;停止位是值为1的位,所以对于正逻辑的TTL电平,停止位是高电平。对于负逻辑(RS-232电平)则相反。

例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时,它在信号线上的波形如图1(TTL电平)和图2(RS-232电平)所示。


  UART数据波形分析 - 阳光男孩 - 阳光男孩的博客
 

1 TTL电平的串行数据帧格式(55aah)

  

2 RS-232电平的串行数据帧格式(55aah)

二、    根据波形图计算波特率

如图3是图1在示波器中的显示示意,其中灰色线是示波器的时间分度线,此时假设是200ms/格。


UART数据波形分析 - 阳光男孩 - 阳光男孩的博客   

波特率计算示意图

可以看了,第一个字节的10(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:

10bit / 1.05ms X 1000 ≈ 9600 bit/s

如果上图中的时间轴是100ms/格,同样可以计算出波特率应是19200bit/s

当通讯不正常,又能观察到波形时,就可根据上述方法,从波形图计算一下波特率是否正确。

三、    根据波形图判断RS-485收发数据的正确与否

RS-485是一种半双工的串行通讯方式,485电平芯片所以要正确接收和发送数据,必需保证控制信号和数据的同步,否则要么发送数据丢失,要么接收数据可能丢失。

RS-485发送数据时的正确时序如图4所示。

UART数据波形分析 - 阳光男孩 - 阳光男孩的博客   

4 RS-485的正确发送数据时序

在图4中,发送控制信号的宽度基本与数据信号的宽度一致,所以能保证发送数据的正确和发送后及时转为接收。

和图分别是控制信号太短和控制信号太长的情况。


UART数据波形分析 - 阳光男孩 - 阳光男孩的博客   

5 RS-485控制信号太短时的时序


 

6 RS-485控制信号太短时的时序

在图5中,由于控制信号关闭过早,则第二个字节的后两位将发送错误;在图6中,由于控制信号关闭过迟,使485芯片在发送数据后,不能及时转到接收状态,此时总线若有数据过来,则本单元将不能正确接收。

总结:只要掌握上述波形分析方法,任何异步串行数据的接收和发送问题,基本都可以得到解决。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

串口通信校验方式(even,odd,space,mark)UART数据波形分析 的相关文章

  • UART,SPI,IIC,RS232通信时序和规则

    一 UART 1 串口通信方式 2 串口通信步骤 注意 xff1a 串口协议规定 xff0c 闲置时必须是高电平 校验位 xff1a 是使用奇偶校验 停止位必须高电平 一个0和多个0区分是靠掐时间 异步通信 xff1a 时钟各不一样 二 I
  • MCU-串口通信协议

    MCU 串口通信协议 一 介绍 串行通信就像单车道 所有数据得一个一个通行 并行就像多车道 一次可以通行多辆车 MCU常用到的串口通信模块主要有两种 UART和USART UART 全称是Universal Asynchronous Rec
  • Transaction rolled back because it has been marked as rollback-only 解决办法

    今天早上高高兴兴上班 居然收到一大堆报警信息 仔细看了一下具体内容 都在提示这个错误 Transaction rolled back because it has been marked as rollback only 我一看就觉得奇怪了
  • STM32CubeMX HAL库串口+DMA+IDLE空闲中断不定长度数据接收和发送

    本文开发环境 MCU型号 STM32F103ZET6 IDE环境 MDK 5 29 代码生成工具 STM32CubeMx 5 3 0 HAL库版本 STM32Cube FW F1 V1 8 0 STM32Cube MCU Package f
  • 如何防止打字时使用空格?

    我有一个文本字段用于输入一些序列号代码 我想设置此代码在有人使用 spase 时显示警报 这意味着不允许使用空格 只允许使用减号来分隔此代码 您有解决这个问题的想法吗 我可以使用jquery验证吗 the correct typing 13
  • 用点填充两个文本元素之间的空间[重复]

    这个问题在这里已经有答案了 我试图找出如何自动填充两个对象之间的空间 我有菜单项和价格 目标是这样的 汉堡 9 99牛排和 马铃薯 14 99通心粉和奶酪 6 99 菜单项和价格之间的间距应该相同 用户可以输入菜单项和价格 我需要填写任何空
  • 以字符串形式接收数字(uart)

    我正在尝试通过 uart 接收一个包装为字符串的数字 我发送数字 1000 所以我得到 4 个字节 空字符 但是 当我使用 atoi 将数组转换为数字并将整数与 1000 进行比较时 我并不总是得到正确的数字 这是我用于接收号码的中断处理函
  • 我的页面底部和右侧的空间

    这是页面 财产测试 uphero com 我已将问题范围缩小到 6 个蓝色框 顶部 3 个位于名为 Offers 的 div 下 下面的 3 个位于名为 Properties 的 div 下 如果我把它们拿出来 空间就会消失 但我真的很想把
  • 如何在正则表达式中定义空格(在 awk 中)?

    我想打印里面的文字 例如我有以下字符串 gfdg jkfgh jkfd fdgj fd ghjhgj gfggf kfdjfdgfhbg fhfghg jhgj jhfjhg dfgdf fgf fgfdg dfj jfdg jhfgjd
  • Android Admob 空间不足,无法展示广告

    使用中提供的代码AdMob 网站 这是我的 xml
  • 如何查找字符串中的空格?

    如何检查字符串是否包含空白字符 空格或 如果可以的话 请提供一个Java示例 例如 String test word 用于检查字符串是否包含空格 use a Matcher https docs oracle com javase 7 do
  • 在 R 中读取以多个空格作为分隔符的文本文件

    我有一个大数据集 由大约 94 列和 300 万行组成 该文件具有单个和多个空格作为列之间的分隔符 我需要在 R 中读取该文件中的一些列 为此 我尝试使用 read table 以及可以在下面的代码中看到的选项 代码粘贴在下面 Defini
  • 参数中包含空格的 Python 子进程调用在 Windows 上不起作用

    我正在运行一个 java 命令 该命令获取类路径和其他有空格的文件位置 Windows 似乎不喜欢它 我从 C Program Files Splunk 运行程序 其中有一个空格 这是我的命令 c1 os path join appdir
  • GATT 配置文件和 UART 服务

    我是开发通过蓝牙连接到外围设备的移动应用程序的新手 我搜索到 GATT 是用于蓝牙LE 通信的相关配置文件 但我们的客户建议我们使用 UART 服务 现在我很困惑 1 这两件事是如何关联的 2 我们是否必须选择其中之一 如果是的话 每一个的
  • 如何在R中从串口读取数据

    我想绘制来自串行端口的实时数据 我认为 R 将是完成这项工作的好工具 我在尝试从串行端口 COM4 读取数据时遇到了困难 我已经验证数据是通过 terra term 传入的 并在尝试 R 之前关闭会话 但我似乎无法在 R 中获取任何内容 我
  • 需要一种算法来像素化 n 维超球面

    我想将向量放入 n 维空间中 这可以通过对 n 维超球面的表面进行像素化来完成 有谁知道用 C 语言对超球面进行像素化有什么好的算法吗 我想要恒定的垃圾箱大小 我的空间仅由正整数组成 您需要您的垃圾箱完全规则吗 如果不是 则随机抛出点 并测
  • Java ProcessBuilder:引号内有空格

    我正在使用 ProcessBuilder 运行 FFMPEG 来转换和标记我的一些 MP3 文件 在 bat 文件中手动使用以下内容可以按预期工作 E Dokumente workspace MusicBot ffmpeg bin ffmp
  • 将图像添加到 gridpane javafx

    我正在使用数组列表添加目录中的图像列表 添加图像时 我的 ScrollPane 变得拥挤 如何保持图像之间的间距 这是我的代码 File file new File D SERVER Server Content Apps icons Fi
  • 删除 CSS 中的正文边距

    我是网络开发新手 在删除正文边距时遇到了问题 There s space between the very top of the browser and logo text And my code is here on jsbin http
  • 编辑类名中带有空格的元素的 css 样式

    我正在创建一个 tumblr 我必须编写一个外部 CSS 文件 但我在编辑 post 元素的 css 样式时遇到问题 这是它的结构 li class post quote other code li 问题是类名中有空格 我如何创建一个 CS

随机推荐

  • C++获取对应进程的cpu和内存使用情况(支持linux和windows)

    运维监控程序中经常需要根据一个进程号pid去监控实时的cpu和内存占用 xff0c 以下整理了一个C 43 43 实现的简单例子 xff0c 并封装为方便跨平台调用的函数 代码 span class token macro property
  • 基于C++ spdlog日志库的完善封装

    spdlog是一个C 43 43 编写的极速日志打印库 xff0c 支持异步写日志以及多种模式和格式化选项 以下基于spdlog库封装了一个简单易用的功能类 xff0c 采用的是header only方式 xff0c 便于项目集成 代码 p
  • C++11写的线程安全STL库

    用C 43 43 写的程序 xff0c 如果用到了自带的标准模板库STL xff0c 在多线程访问的时候如果不加锁很容易造成segment fault导致程序崩溃coredump xff0c 也就是说C 43 43 标准的STL不是线程安全
  • 使用cmake构建C++ imgui上手项目(支持Windows,Mac,Linux)

    优秀的即时渲染C 43 43 GUI开发框架imgui xff08 https github com ocornut imgui xff09 在很多场合能发挥非常棒的作用 但是由于官方源码仓库一直没有提供基于cmake构建和创建新项目的工具
  • 使用cmake构建C++ workflow上手项目(支持Windows,Linux)

    开源的C 43 43 后端开发框架workflow xff08 https github com sogou workflow xff09 已经在成熟的互联网公司得到非常稳定广泛的应用 xff0c 它结合了网络 异步 计算多个后端常用场景
  • 使用cmake构建C++ live555流媒体服务上手项目(支持Windows,Linux)

    开源的流媒体视频和音频RTSP开发框架live555 xff08 http www live555 com xff09 对于学习和构建音视频流媒体或者直播服务是很方便的 官方的源码包对各平台编译单独列出了对应的makefile xff0c
  • C++20新特性

    目录 新增关键字 keywords conceptrequiresconstinitconstevalco awaitco returnco yieldchar8 t 新增标识符 Identifies importmodule 模块 Mod
  • pytorch导出模型并使用onnxruntime C++部署加载模型推理

    机器学习的框架众多 xff0c 为了方便复用和统一后端模型部署推理 xff0c 业界主流都在采用onnx格式的模型 xff0c 支持pytorch xff0c tensorflow xff0c mxnet多种AI框架 为了提高部署推理的性能
  • cocos2dx实例开发之飞机大战

    曾经 xff0c 微信里面可以玩一个打飞机的小游戏 xff0c 很有趣 xff0c 后来又没有了 xff0c 这里基于原版素材写了一个高仿微信打飞机的小游戏 预览 工程结构 环境 Mac os Mojavexcode 7 0cocos2dx
  • 调试leetcode代码:使用playground来调试

    leetcode在线编辑界面 在使用LeetCode时 xff0c 想要在本地上调试代码 xff0c 提供main函数的方法 xff1a 在线代码编辑功能 1 在红圈处选择你想要使用的语言 2 在黄圈处编写代码 3 在蓝圈处可选编辑测试案例
  • 蓝牙5/4.2/4.1/4.0数据吞吐率

    先给出结论 xff1a 蓝牙4 0 4 1的吞吐率 为0 305Mbps xff1b 蓝牙4 2的吞吐率 为0 803Mbps xff1b 蓝牙5的吞吐率 为1 434Mbps xff08 前提 xff1a 使用2Mbps调制速率 xff1
  • BLE 协议栈组成介绍

    框图 xff1a 1 协议由Host层和Controller层组成 xff1b 2 Controller层 xff1a PHY xff1a 基带物理层 xff0c 相关概念 xff1a 频段 调制 射频信道 发射功率 xff1b LL xf
  • ATT 的功能

    GATT Profile xff0c 通用属性配置 xff1a 类比位做煤球的模子 xff0c 每个SIG组织成员都可以向SIG提交这个 模子 xff0c 如果审核通过了 xff0c 那么这个模子就成为全世界通用的了 xff0c 不用管这个
  • FR8016HA & MS1791 & PHY6222 & TLSR8251 & YC1171 & HS6621 & BK3432 & N32WB031 对比介绍

    富苪坤 FR8016HA 巨微 MS1791 奉加微 PHY6222 泰凌微 TLSR8251 易兆微 YC1171 昂瑞微 HS6621 博通 BK3432 国民技术 N32WB031 芯片简介 FR8016HA 是一款面向 SOC xf
  • AD7606分析讲解

    一 ad7606数据手册分析 引脚配置和功能描述 ADC7606的典型工作特性 FFT xff08 快速傅里叶变换 xff09 http azaleasays com 2008 10 17 fft and digital signal pr
  • 什么是航位推算(Dead Reckoning )

    只有同时接收三到四个GPS GNSS卫星的信号才能实现精确的GPS GNSS定位 当仅依靠GPS GNSS定位时 xff0c 可能会出现位置精度降低或丢失的情况 例如 xff0c 当车辆在无法接收GPS GNSS信号的区域 xff08 隧道
  • STM32F103系列引脚定义-功能图

    器件功能和配置 xff08 STM32F103XX增强型 xff09 系统结构 管脚图
  • 如何用keil5打开keil4的工程

    参考网友的方法 xff1a 1 到http www2 keil com mdk5 legacy 官网下载keil4的支持包 2 正常流程安装所下载的安装包 xff1b 3 安装完成后 xff0c 用keil5打开工程 xff08 keil4
  • NMEA-0183 协议简介

    NMEA 0183 是美国国家海洋电子协会 xff08 National Marine Electronics Association xff09 为海用电子设备制定的标准格式 目前业已成了 GPS 北斗导航设备统一的 RTCM xff08
  • 串口通信校验方式(even,odd,space,mark)UART数据波形分析

    1 even 每个字节传送整个过程中bit为1的个数是偶数个 xff08 校验位调整个数 xff09 2 odd 每个字节穿送整个过程中bit为1的个数是奇数个 xff08 校验位调整个数 xff09 3 noparity没有校验位 4 s