串口波形分析(TTL,RS232,RS485)

本文介绍了如何使用示波器观察TTL、RS232和RS485的串行通讯波形来调试数据传输问题,包括波特率计算及RS-485收发数据的正确性判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TTL,RS232,RS485波形分析

 

本文转自:http://blog.163.com/qiu_zhi2008/blog/static/60140977201092651854445/

                  http://www.cnblogs.com/cornflower/archive/2011/10/25/2223903.html

 

 

       如果单片机串行通讯出了问题,最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:
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,每个字节都是从低位向高位逐位传输)

RS232,RS485波形分析 - qiu_zhi2008 - qiu_zhi2008的博客
                                                                        图1  TTL电平的串行数据帧格式(55aah)

 

RS232,RS485波形分析 - qiu_zhi2008 - qiu_zhi2008的博客
                                                                                   图2  RS-232电平的串行数据帧格式(55aah)

 

再如:

                                                                                                                                           图3

1.该图是TTL电平同相位的逻辑

2.波特率设置时 38400

3.串口发送的是 0x55

4.串口设置为8N1 

 

 

二、根据波形图计算波特率
如图4是图1在示波器中的显示示意,其中灰色线是示波器的时间分度线,此时假设是200us/格。
RS232,RS485波形分析 - qiu_zhi2008 - qiu_zhi2008的博客
                                                                   图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所示。

RS232,RS485波形分析 - qiu_zhi2008 - qiu_zhi2008的博客
                                                                    图5 RS-485的正确发送数据时序

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

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

RS232,RS485波形分析 - qiu_zhi2008 - qiu_zhi2008的博客
                                                               图6 RS-485控制信号太短时的时序
RS232,RS485波形分析 - qiu_zhi2008 - qiu_zhi2008的博客

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

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

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

 

### 绘制RS232RS485电平转换电路 为了实现RS232RS485的电平转换,通常会采用MAX485这样的专用芯片来完成信号之间的转变。该器件可以方便地通过控制RE/DE引脚的状态,在发送器模式和接收器模式之间切换。 #### MAX485典型应用电路设计 ```mermaid graph TD; A[VCC] --> B[MAX485]; C[GND] --> D[MAX485]; E[TXD (MCU)] --> F[Rx/Tx (MAX485)]; G[RO (MAX485)] --> H[RXD (MCU)]; I[A/B Line (RS485 Network)] --> J[A/B (MAX485)]; K[RE/DE Control Signal] --> L[RE/DE (MAX485)] ``` 此图展示了基本连接方式:微控制器(MCU) 的TXD线连接至MAX485模块的数据输入端;RXD则接收到从MAX485传回的信息。A/B代表差分传输线上的一对导体用于构成完整的RS485网络接口[^1]。 对于具体的电气特性而言: - **RS232**: 使用单端逻辑电平表示数据,“0”对应+3V~+15V电压范围内的正电压,“1”则是指-3V~-15V负电压。 - **RS485/TTL**: TTL电平定义低电平(0)为接近于0伏特, 高电平(1)大约等于电源供电电压(+5V 或者 +3.3V),而RS485是一种半双工平衡传输标准,它利用两根线路(A+/B-)间的相对电压差异来进行通讯,正常工作状态下这两条线上的绝对电压值可能介乎±2V~±6V之间[^2]。 ### 波形生成方法 假设学号最后两位组成的二进制序列为`1010`,那么按照每秒9600波特率计算得到的时间间隔t=1/(9600 bps)=约0.1ms。考虑到起始位始终设为低电平('0'),停止位固定高电平('1'), 并且不存在任何奇偶校验机制,则整个字节由一位起始位加四位有效数据再加上一位结束标志组成共六位长度序列。 以下是三种不同类型的输出波形示意(时间轴上每个刻度单位约为0.1毫秒): #### TTL 输出波形 | 时间(ms)| 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | | --- | --- | --- | --- | --- | --- | --- | | Vout(V) | 0 | 5 | 0 | 5 | 0 | 5 | #### RS232 输出波形 | 时间(ms)| 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | | --- | --- | --- | --- | --- | --- | --- | | Vout(V) | -12 | +12 | -12 | +12 | -12 | +12 | #### RS485 差分输出波形 | 时间(ms)| 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | | -- | --- | --- | --- | --- | | ΔVAB(V) | -2 | +2 | -2 | +2 | -2 | +2 | 上述表格中的数值仅作为示例说明之用,并不代表实际测量所得结果。真实情况下具体电压水平取决于所使用的硬件设备及其配置参数[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值