首先看一下我们常用的串口通信接线方式,MCU的RX,TX引出这里加一个33~100Ω的串联电阻以匹配传输线的阻抗USB转TTL这端没有端接任何电阻,MCU这里和USB转TTL这里是通过15cm长的杜邦线连接,电路图如下,USB转TTL接到上位机电脑上面,MCU通过TXD不断发送数据给上位机,RXD为上位机给MCU发送测量指令。

1、MCU_TX波形

2、USB_RX

3、MCU_RX

4、USB_TX

从上面的测试波形我们已经发现问题,MCU的TX和USB的TX都是基本上没有过冲,MCU的RX和USB的RX都是有比较大的过冲,这个过冲一个15%一个30%,过冲是比较大的,造成这个过冲的原因就是因为阻抗的不匹配,而且导线过长使我们看到了信号的反射。

我们以MCU_TX(近端)和USB_RX(远端)这一组为例,我们把匹配的100R电阻去掉,看远端的波形如下:

可以发现这个过冲又增加了3%左右。

然后我们把100R电阻焊回去,在远端出并联一个470p电容,这样增加传输的时延,使我们振铃淹没在上升沿,这样我们看到远端的波形就没有过冲了。

有人也许会说串口的通信信号频率不高,比如我上面的串口用的波特率为:961200bps,看频率有500k的时候,如果按500k来说远远没到需要阻抗匹配的的频率。

这个问题我的理解如下:

因为一般需要端接的最大长度in数是信号的上升沿的ns数,也就是当

Len max  >  RT

Len max是没有端接的传输线的最大长度,RT为信号的上升沿。举例来说:信号10M的频率,时钟周期为100ns,上升沿为10ns,那么不需要端接的传输线最大长度为10in,测试我们MCU的TX的上升沿时间如下图所示,可以看出上升时间为1.1ns,也就是不需要端接的传输线的最大长度1.1in,也就是2.79cm,而我们用的传输线长度有15cm左右,所以我们可以看到信号的反射。我们在远端加了一个电容的就解决了反射的问题,就是把信号的上升时间变长,使反射淹没在上升沿过程中。

串口通信过冲原因分析和端接的方法相关推荐

  1. STM32串口通信中使用printf发送数据配置方法 开发环境 Keil

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 已有 12456 次阅读2011-6-29 23:29 | 在STM32串口通信程序中使用printf发送数据, ...

  2. android qt 串口通信,Qt串口通信开发之QSerialPort模块详细使用方法与实例

    Qt串口通信开发之QSerialPort模块详细使用方法与实例 发布时间:2020-10-23 12:19:05 来源:脚本之家 阅读:111 作者:沧海一笑-dj Qt串口通信基础及名词说明 串口通 ...

  3. 服务器端口不稳定怎么解决,网络不稳定的原因分析,以及解决方法

    我们在上网的时候经常会遇到网络不稳定的情况,但我们往往都以为只是网线没插好,但其实造成网不稳定的原因不只是这个.那么网络不稳定的原因到底是什么呢?我们要如何去解决呢,有什么好的方法没?今天贤集网小编为 ...

  4. 4.0 树莓派做下位机播放视频、控制电机舵机、超声波检测、paj7620手势传感器控制,树莓派串口通信等程序分析

    文章目录 一.前言 二.Python实现封装打包自己写的代码 参考链接 我的参考 _init_.py setup.py 三. 树莓派的硬件解码播放器--Omxplayer 四.树莓派控制舵机,驱动L2 ...

  5. java串口发送16进制数据_MFC串口通信发送16进制数据的方法

    本文实例为大家分享了MFC串口通信发送16进制数据的具体代码,供大家参考,具体内容如下 MFC串口通信会使用m_mscomm控件. 发送数据一般是在edit control 里输入自己想发送的内容,然 ...

  6. 基于串口通信的DSP应用程序在线升级方法

    摘  要:为解决特殊场合DSP程序升级困难的问题,以TMS320F28035为例,介绍了一种基于串口通信的适合于TMS320C2000系列DSP实现程序更新的在线升级方法.描述了该在线升级方法的基本思 ...

  7. STM32串口通讯数据丢失原因分析及解决办法

    在进行串口通讯实验时,一时不仔细可能会发现通讯不正常,数据丢失的现象,包括丢失第一个字符,或只收到最后一个字符等等,本文接下来将就这类问题展开讨论. 首先是通过MCU向上位机发送数据: 若程序如下图所 ...

  8. WIN32 API串口通信编程

    WIN32 API串口通讯实例教程 第一节实现串口通讯的函数及串口编程简介 API函数不仅提供了打开和读写通讯端口的操作方法,还提供了名目繁多的函数以支持对串行通讯的各种操作.常用函数及作用下: 函数 ...

  9. Ardunio下的STM32串口通信

    文章目录 任务要求 Ardunio下的STM32串口通信 软件准备 编译烧录 标准库函数与HAL库函数的stm32编程方式差异 国人版的MCU集成开发平台 stduino IDE 总结 任务要求 安装 ...

最新文章

  1. 设计模式之解释器模式、例子分析
  2. oracle user does not exist,MVC+EF6+Oracle,提示ORA-01918: user '***' does not exist
  3. 《途客圈创业记:不疯魔,不成活》一一1.6 申请助跑计划
  4. c# decodeuri,用C#进行URL编码
  5. Linux基础命令---ftp
  6. JAVA基础:从一道面试题看逻辑运算符与、|与||的区别
  7. 【RLchina第四讲】Model-Based Reinforcement Learning
  8. ios蓝牙开发学习笔记(一)蓝牙概述
  9. ABB变频器维修,ABB变频器,ABB变频器配件FS300R12KE3/AGDR-61C 驱动模块APOW-01C 电源板AINP-01C 可控硅触发板
  10. 如何设置Idea字体颜色
  11. 微信小程序常用路由跳转方法
  12. 为什么美篇打不开显示服务器错误,评论为什么打不开
  13. 公民住宅权不可侵犯!为阻强拆致人重伤,属正当防卫
  14. Linux配置http代理(原理)
  15. DELL服务器硬件报错及对应的解决方法(R710)
  16. 20年时候收集的一些信息安全岗面试题
  17. 帆软10.0 冻结行 冻结列的 点击行变色
  18. 倾斜模型精细化处理_无人机倾斜摄影技术的三维精细模型制作
  19. (转)Let’s make a DQN 系列
  20. 结果导向和测试驱动(转)

热门文章

  1. Oracle 19c OCP认证 学习笔记(82) —— 约束的DEFERRABLE, NOT DEFERRABLE, INITIALLY IMMEDIATE 和 INITIALLY DEFERRED
  2. 关于db2中的NOT LOGGED INITIALLY
  3. C语言union占用空间知识
  4. (十九)Alian 的 Spring Cloud Config 集群配置
  5. 《HelloGitHub》第 51 期
  6. java实现二维数组推箱子小游戏
  7. 普通学生如何面对ACM,算法金奖得主带你领略
  8. pass了mentor的面试
  9. 2椭圆曲线密码学:有限域和离散对数
  10. 小程序图片高度自适应和设置text行高