串口协议发送数据格式详细分析
并串行;
异步同步;(时钟)
单工;(单线,任何时刻单方向)
半双工;(单线,同一时刻只能单方向)
全双工;(有接收和发送线)
串口(并串转换)
协议层:数据格式,传输速率。
物理层:接口类型,电平标准。
(难)波特率计算:波特率(1S传输位个数,一个则是1/9600=104us)
总结:物理层(差分两个线相加决定逻辑,P为高则是高逻辑;232电平和逻辑相反,TTL则相同)
如果单片机串行通讯出了问题,最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:
1、是否有数据接收或发送;
2、数据是否正确;
3、波特率是否正确;
一、串行数据的格式
异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5、6、7、8位,停止位可以是1、1.5、2位。
起始位是一个值为0的位,所以对于正逻辑的TTL电平,起始位是一位时间的低电平;停止位是值为1的位,所以对于正逻辑的TTL电平,停止位是高电平。线路路空闲或者数据传输结束,对于正逻辑的TTL电平,线路总是1。对于负逻辑(如RS-232电平)则相反。
例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时,它在信号线上的波形如图1(TTL电平)和图2(RS-232电平)所示。 (先传第一个字节55,再传第二个字节aa,每个字节都是从低位向高位逐位传输)
图1 TTL电平的串行数据帧格式(55aah)
图2 RS-232电平的串行数据帧格式(55aah)
再如:
图3
1.该图是TTL电平同相位的逻辑
2.波特率设置时 38400
3.串口发送的是 0x55
4.串口设置为8N1
二、根据波形图计算波特率
如图4是图1在示波器中的显示示意,其中灰色线是示波器的时间分度线,此时假设是200us/格。
图4 波特率计算示意图
可以看了,第一个字节的10位(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:
10bit / 1.05ms X 1000 ≈ 9600 bit/s
如果上图中的时间轴是100us/格,同样可以计算出波特率应是19200bit/s。
当通讯不正常,又能观察到波形时,就可根据上述方法,从波形图计算一下波特率是否正确。
三、根据波形图判断RS-485收发数据的正确与否
RS-485是一种半双工的串行通讯方式(RS-422为全双工),485电平芯片所以要正确接收和发送数据,必需保证控制信号和数据的同步,否则要么发送数据丢失,要么接收数据可能丢失。
RS-485发送数据时的正确时序如图5所示。
图5 RS-485的正确发送数据时序
在图5中,发送控制信号的宽度基本与数据信号的宽度一致,所以能保证发送数据的正确和发送后及时转为接收。
图6 和图7 分别是控制信号太短和控制信号太长的情况。
图6 RS-485控制信号太短时的时序
图7 RS-485控制信号太短时的时序
在图6中,由于控制信号关闭过早,则第二个字节的后两位将发送错误;在图7中,由于控制信号关闭过迟,使485芯片在发送数据后,不能及时转到接收状态,此时总线若有数据过来,则本单元将不能正确接收。
掌握了上述波形分析方法,任何异步串行数据的接收和发送问题,基本都可以得到解决。
串口协议发送数据格式详细分析相关推荐
- MODBUS TCP协议实例数据帧详细分析
MODBUS TCP协议实例数据帧详细分析 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 3.ADU详细结构 3.1. 0x01:读线圈 3.2. 0x02:读 ...
- webrtc 视频的采集,编码,发送流程详细分析(希望对底层深入了解的朋友有所帮助)
---------------------------------------------------------------------------------------------------- ...
- android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...
01 写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是 ...
- 一起来用Websocket(二):Websocket协议详细分析
一起来用Websocket(二):Websocket协议详细分析 前言 本节主要翻译一下websocket的协议.其中,socket通信开发,最重要的就是协议了.通信软件(QQ.MSN).杀毒软件(3 ...
- 乐鑫esp8266学习rtos3.0笔记第11篇:详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- TFTP协议详细分析
TFTP协议详细分析 1. 目的 TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的.此协议设计的时候是进行小文件传输的.因此它不具备 ...
- 野火串口助手协议发送文件通讯协议——XMODEM协议——YMODEM协议
野火串口助手协议发送文件通讯协议 修订历史 日期 版本 更新内容 2020/6/22 0.0.1 首次发布 XMODEM协议 上位机是现实了XModem-CRC16和XModem-1K; XModem ...
- ModbusTCP协议报文详细分析
ModbusTCP协议分析 ModbusTCP与ModbusUDP的报文格式是一样的,它们之间的区别其实就是TCP与UDP的区别,因此下面就针对ModbusTCP的协议进行分析,ModbusTCP与M ...
- http 协议的交互过程详细分析。
http 协议的交互过程详细分析. 以wget <file> wireshark 抓包分析. 在<netinet/ip.h> 中,有如下定义 struct iphdr { ...
- esp8266 蓝牙耳机_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...
01写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是一 ...
最新文章
- Nat. Mach. Intell. | 人工智能的透明度和可重复性
- centos快速安装npm-2.15.8
- Centos7更新阿里yum源
- Feed43自定义 RSS 订阅源
- 线性代数知识汇总(转载)
- JAVA生成并导出json文件
- Dapr + .NET 实战(七)Secrets
- C#算法设计排序篇之02-快速排序(附带动画演示程序)
- Matlab--Figure界面工具栏使用简要说明
- 【转】Nutz | Nutz项目整合Spring实战
- python判断日期为第几天_python怎么判断某一天是一年中的第几天
- 建模实训报告总结_刘鹏在2020江西省职业院校计算机院长主任年会作报告
- centos 6.5 x64安装php 7
- 计算机网络telnet命令作用,telnet命令使用方法详解
- 全手动封装教程+SRS9.80102 文本教程(适合初学)
- 硬链接(hard link)和符号连接(symbolic link)的区别
- 计算机u盘病毒清除方式,彻底清除u盘病毒有什么方法呢
- Maya---物体跟随曲线动画
- 基于机器学习的电影票房分析与预测系统
- 耳机声音一边大一边小
热门文章
- ios和linux共享的笔记软件,超好用!5款完全免费、支持全平台的笔记软件
- Cisco路由器的命令配置教程详解
- k2p H大老毛子 padavan 2月20日固件
- win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
- http测试工具:httpbin
- 如何在码云上面上传本地项目
- 哲学家就餐问题python_无聊的哲学家进餐问题
- python 等值线插值,CartoPy等值线的插值方法
- CSR8系列ROM版本芯片介绍
- yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild错误