并串行;

异步同步;(时钟)

单工;(单线,任何时刻单方向)

半双工;(单线,同一时刻只能单方向)

全双工;(有接收和发送线)

串口(并串转换)

协议层:数据格式,传输速率。

物理层:接口类型,电平标准。

(难)波特率计算:波特率(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芯片在发送数据后,不能及时转到接收状态,此时总线若有数据过来,则本单元将不能正确接收。

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

串口协议发送数据格式详细分析相关推荐

  1. MODBUS TCP协议实例数据帧详细分析

    MODBUS TCP协议实例数据帧详细分析 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 3.ADU详细结构 3.1. 0x01:读线圈 3.2. 0x02:读 ...

  2. webrtc 视频的采集,编码,发送流程详细分析(希望对底层深入了解的朋友有所帮助)

    ---------------------------------------------------------------------------------------------------- ...

  3. android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...

    01 写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是 ...

  4. 一起来用Websocket(二):Websocket协议详细分析

    一起来用Websocket(二):Websocket协议详细分析 前言 本节主要翻译一下websocket的协议.其中,socket通信开发,最重要的就是协议了.通信软件(QQ.MSN).杀毒软件(3 ...

  5. 乐鑫esp8266学习rtos3.0笔记第11篇:详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  6. TFTP协议详细分析

    TFTP协议详细分析 1. 目的 TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的.此协议设计的时候是进行小文件传输的.因此它不具备 ...

  7. 野火串口助手协议发送文件通讯协议——XMODEM协议——YMODEM协议

    野火串口助手协议发送文件通讯协议 修订历史 日期 版本 更新内容 2020/6/22 0.0.1 首次发布 XMODEM协议 上位机是现实了XModem-CRC16和XModem-1K; XModem ...

  8. ModbusTCP协议报文详细分析

    ModbusTCP协议分析 ModbusTCP与ModbusUDP的报文格式是一样的,它们之间的区别其实就是TCP与UDP的区别,因此下面就针对ModbusTCP的协议进行分析,ModbusTCP与M ...

  9. http 协议的交互过程详细分析。

    http 协议的交互过程详细分析. 以wget <file>  wireshark 抓包分析. 在<netinet/ip.h> 中,有如下定义 struct iphdr   { ...

  10. esp8266 蓝牙耳机_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...

    01写在前面: 上篇关于如何在内置仅1M的Esp8285做到 OTA 升级的同步到微信公众号,竟然被安信可的某些运维人员看到了,想要转载,我很欣慰,竟然自己的笔记可以被这么大型的公司员工认可! 我是一 ...

最新文章

  1. Nat. Mach. Intell. | 人工智能的透明度和可重复性
  2. centos快速安装npm-2.15.8
  3. Centos7更新阿里yum源
  4. Feed43自定义 RSS 订阅源
  5. 线性代数知识汇总(转载)
  6. JAVA生成并导出json文件
  7. Dapr + .NET 实战(七)Secrets
  8. C#算法设计排序篇之02-快速排序(附带动画演示程序)
  9. Matlab--Figure界面工具栏使用简要说明
  10. 【转】Nutz | Nutz项目整合Spring实战
  11. python判断日期为第几天_python怎么判断某一天是一年中的第几天
  12. 建模实训报告总结_刘鹏在2020江西省职业院校计算机院长主任年会作报告
  13. centos 6.5 x64安装php 7
  14. 计算机网络telnet命令作用,telnet命令使用方法详解
  15. 全手动封装教程+SRS9.80102 文本教程(适合初学)
  16. 硬链接(hard link)和符号连接(symbolic link)的区别
  17. 计算机u盘病毒清除方式,彻底清除u盘病毒有什么方法呢
  18. Maya---物体跟随曲线动画
  19. 基于机器学习的电影票房分析与预测系统
  20. 耳机声音一边大一边小

热门文章

  1. ios和linux共享的笔记软件,超好用!5款完全免费、支持全平台的笔记软件
  2. Cisco路由器的命令配置教程详解
  3. k2p H大老毛子 padavan 2月20日固件
  4. win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
  5. http测试工具:httpbin
  6. 如何在码云上面上传本地项目
  7. 哲学家就餐问题python_无聊的哲学家进餐问题
  8. python 等值线插值,CartoPy等值线的插值方法
  9. CSR8系列ROM版本芯片介绍
  10. yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild错误