RS232/RS485/CAN_BUS 通信原理总结与通信波形分析

2023-05-16

分析一:232串口信号

要点:RS232,全双工,采用三线制传输分别为TXD\RXD\GND,其中TXD为发送信号,RXD为接收信号。

在RS232中任何一条信号线的电压均为负逻辑关系。即:

-15v ~ -3v 代表1

+3v ~ +15v 代表0

测试结果与分析:

如图所示,以传输一个8位二进制数值“01101010”为例,异步传输数据的一般格式为:起始位+校验位+数据位+停止位。其中,校验位为可选项。因为RS232电平为负逻辑,当电压为3.3V时,发送逻辑‘0’;当电压为-3.3V时,发送逻辑‘1’。空闲状态为负电压(逻辑1)。

波特率计算:如图,传输9bit(1起始位+8数据位)花费的时间为79us。1s传输的数据量为1/0.000079*9 = 113924,可以推测波特设置的波特率为115200。RS485的波特率计算同理。(二进制系统中,波特率等于比特率)

图示为发送端的波形,接收端波形与接收端波形大同小异,符合RS232电平要求。

 


分析二:485串口信号

要点:RS485,半双工,采用差分传输(平衡传输)的方式,半双工,一般有两个引脚 A、B。AB间的电势差U为UA-UB:

不带终端电阻AB电势差:+2~ +6v   逻辑‘1’;

                                      -2 ~ -6v   逻辑‘0’;

带终端电阻 AB电势差: 大于 +200mv 逻辑‘1’;

                                     小于 -200mv   逻辑‘0’; 注意:AB之间的电压差不小于200mv。

1、 不带终端电阻

以传输一个8位二进制数值“01101010”为例:

测试结果与分析:

空闲状态:A=3.3V, B=0V,为逻辑‘1’。

发送逻辑‘1’时,A=3.3V,B=0V,A-B=3.3V;

发送逻辑‘0’时,A=0.5V,B=3V,A-B=-2.5V;

图示为发送端的波形,接收端波形与接收端波形大同小异,符合RS485电平要求。



2、 带120R终端电阻

测试结果与分析:

空闲状态:A=1.74V, B=1.53V, A-B= 0.21V,为逻辑‘1’。

发送逻辑‘1’时,A=1.74V,B=1.53V, A-B= 0.21V;

发送逻辑‘0’时,A=0.80V,B=2.80V, A-B= -2.0V;

图示为发送端的波形,接收端波形与接收端波形大同小异,符合RS485电平要求。

 


分析三:CAN_BUS信号

要点(显性与隐性电平):

    显性位即无论总线上各节点想将总线驱动成什么样的电平,只要有一个节点驱动为显性位,则总线表现为显性位的电平;隐性位正好相反,只有各节点都不将总线驱动成显性位的电平,总线才表现为隐性位对应的电平。显性位电平为Vh-Vl=2V,逻辑上为“0”;隐性位电平为Vh-Vl=0V,逻辑上为“1”。

    CAN总线在没有节点传输报文时是一直处于隐性状态。当有节点传输报文时显性覆盖隐性,由于CAN总线是一种串行总线,也就是说报文是一位一位的传输的,而且是数字信号(0和1),1代表隐性,0代表显性。在传送报文的过程中是显隐交替的,就像二进制数字0101001等,这样就能把信息发送出去,而总线空闲的时候是一直处于隐性的。

    “显性”具有“优先”的意味,总线上执行逻辑上的线“与”时,只要有一个单元输出显性电平,总线上即为显性电平;只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)

隐性(逻辑‘1’): H=2.5V,L=2.5V,H-L=0V

显示(逻辑‘0’): H=3.5V,L=1.5V,H-L=2V

共同点:CAN_BUS空闲状态为隐性状态,相当于串口通信(232/485)的停止位‘1’;当准备发送数据时,CAN_BUS的状态由隐性变成显性,相当于串口通信(232/485)的起始位‘0’。



以上分析若有问题,还请各位前辈在评论区批评指正,感激不尽!

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

RS232/RS485/CAN_BUS 通信原理总结与通信波形分析 的相关文章

  • 下一代CAN通信技术CAN XL简介

    众所周知 xff0c CAN网络具有易于实现 可扩展 并支持复杂拓扑结构等诸多优点 xff0c 所以目前在各个行业特别是汽车领域 xff0c 得到了非常广泛的应用 但是 xff0c 它也存在着诸多问题 xff0c 其中最大的一点就是总线带宽
  • 【总线】一文看懂RS232和RS485通信总线

    目录 RS232概述 RS232特性 RS485 概述 RS485 特性 RS232 和 RS485 的区别 区别总结 RS232概述 RS 232接口符合电子工业联盟 xff08 EIA xff09 建立的串行数据通信接口标准 原始编号是
  • CAN总线通信协议详讲

    CAN简介 CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986 年率先提出 此后 xff0c CAN 通过IS
  • CAN扩展帧过滤器设置

    纪要 CAN xff08 Controller Area Network xff09 总线是一种广泛应用于工业控制和汽车电子领域的串行通信协议 在CAN总线中 xff0c 节点间通过CAN总线发送和接收消息 每个CAN帧包含一个标准或扩展标
  • 大疆M3508、M2006必备CAN总线知识与配置方法

    大疆M3508 M2006必备CAN总线知识与配置方法 文章目录 大疆M3508 M2006必备CAN总线知识与配置方法前言 xff1a 0x00 需要 额外的 CAN收发器 xff01 xff01 xff01 0x01 硬件层面分析为什么
  • Rt-thread的CAN应用2

    1 rtt中使能CAN1 2 CubeMX生成部分代码 xff0c 完成下面操作然后生成MDK ARM项目文件 3 将CubeMX生成的 HAL CAN MspInit 函数 粘贴到drv can c中 并在rt hw can init 函
  • 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析

    1 CAN总线的基本概念以及由来 CAN Controller Area Network 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 它起初用于实现汽车内ECU之间可靠的通信 后因其简单实用可靠等特点 而广泛应用于工
  • PL2303驱动安装需要联网

    问题描述 提示 这里描述具体问题 在使用PL2303驱动时 需要连接网络 例如 USB RS232插入电脑后会在windows10系统设备管理中的其他设备中显示USE Ser 这个表示没有安装驱动 我安装了PL2303驱动后也没办法使用 后
  • Modbus 与 RS485 的区别与联系

    目前道长入坑了一家智能家居公司 以后会分享记录一些智能家居相关的知识 如果有问题 希望小伙伴交流指正 一 RS 485 1 1 RS 485 来源 RS485是美国电子工业协会 EIA 在1983年批准了一个新的平衡传输标准 balance
  • CAN 帧ID 与J1939 PGN 转换例子

    在saeJ1939中文版中找的三张图如下 例如 0x18 FE DF 00 110 0 0 11111110 11011111 00000000 P R DP PF PS SA 具体参数即为数据段 0 64 优先级为 P 110 2 或6
  • CAN与CANOpen(一)

    CAN与CANOpen 一 基本概念 CAN与CANOpen 二 报文格式 CAN与CANOpen 三 错误处理 CAN与CANOpen 四 CANOpen对象字典 CAN与CANOpen 五 PDO和SDO CAN与CANOpen 六 网
  • MCP2515独立控制器

    1 简介 MCP2515 是一款独立控制器局域网络 Controller Area Network CAN 协议控制器 完全支持 CAN V2 0B 技术规范 该器件能发送和接收标准和扩展数据帧以及远程帧 MCP2515 自带的两个验收屏蔽
  • STM32学习心得三十二:CAN通信基础知识、原理、配置及实验

    记录一下 方便以后翻阅 主要内容 1 CAN通信基础知识 2 STM32 CAN控制器简介 3 相关实验代码解读 参考资料 STM32中文参考手册 V10 第22章 控制器局域网 bxCAN 实验功能 CAN实验需要两个开发板 系统启动后
  • CAN协议详解-01

    CAN 是控制器局域网络 Controller Area Network 的简称 它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的 并最终成为国际标准 ISO11519以及ISO11898 是国际上应用最广泛的现场总线之一 差
  • 难懂?这样理解SPI与CAN很简单!

    难懂 这样理解SPI与CAN很简单 什么是串行通讯 为什么仍需使用串行通讯 SPI与CAN SPI 接口特点 CAN现场总线特点 什么是串行通讯 在正式进入主题前 我么先来介绍一下什么叫做 串行通信 串行通信是计算机的一种数据传输通信方式
  • Microchip PIC 的 Modbus 堆栈

    有人可以建议为 Microchip PIC18 处理器实现 Modbus RTU 从站的开源实现吗 我正在寻找 RS 232 RS 485 的 Modbus RTU 实现 但 Modbus TCP IP 实现也将受到欢迎 我已经为 PIC1
  • pico示波器使用

    文章目录 Pico示波器保存波形 Pico示波器录制数据 Pico示波器解析CAN报文 Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形 在示波器上选择要保存的波形 连接示波器到计算机上 可以使用USB或者Ethernet连接
  • RS485:设备的 ioctl 不合适

    我使用以下代码访问 RS485 从站 但收到错误 读取 ioctl 端口 25 时出错 设备的 ioctl 不合适 我的代码如下 include
  • 一个变量仅由一个线程读取,由另一个线程读取和写入,是否需要同步?

    Motive 我刚刚学习多线程的基础知识 还没有完成它们 但我想在学习之旅的早期提出一个问题 以引导我了解与我正在从事的项目最相关的主题 Main A 如果一个进程有两个线程 一个编辑一组变量 另一个只读取所述变量 从不编辑它们的值 那么我
  • 是否有通用 I2C 命令来查看设备是否仍然存在于总线上?

    是否有通用的 I2C 命令来查看设备在初始化一次后是否仍然存在于总线上 例如 OLED 显示器 我问这个的原因是为了避免主程序由于库代码中存在无限循环而冻结 当设备断开连接时 例如 Wire 库 在 MCU 启动时 我想检查设备是否可用 并

随机推荐

  • java小项目之成绩管理、排课软件、局域网聊天软件

    大三下 xff0c 想把上个学期的一些东西整理一下 可能是突然有点想法吧 我把答辩ppt以及文档要求还有项目文件夹全部都放在了我的github里面啦 点击打开链接 项目一 问题描述 xff1a 教师在教学过程中 xff0c 需要记录学生的成
  • LeetCode 114 二叉树转链表

    一 题目 分析 xff1a xff08 1 xff09 要求转化为先序遍历顺序 xff0c 这个很容易想到设置一个链表 xff0c 然后先序遍历二叉树 xff0c 把节点和指针记录在链表就好了 xff08 2 xff09 题目要求in pl
  • 使用gstreamer,rtsp拉流,保存图像, jeston,使用硬件加速nvdec/nvenc

    jeston xff0c 拉流 xff0c 使用硬件加速nvdec nvenc span class token macro property span class token directive hash span span class
  • LeetCoed 无重复字符的最长子串(java)

    一 题目分析 分析 xff1a 最长子串 xff0c 而不是最长子序列 子串是字符串连续的一段 xff0c 子序列是可以不连续的 所以有一种方法叫做滑动窗口法 xff0c 我记得左程云老师讲过 xff0c 那个题是计算窗口内最大或者最小值的
  • leetcode 127 单词接龙(搜索 java)

    就是给一个单词词典 xff0c 给一个开始词汇和结束词汇 xff0c 在词典中找出开始词汇转变成结束词汇的过程 xff0c 求转变次数 每次只能转变单词的一个字符 可能会有多条路径可以到达 xff0c 搜索问题可以用DFS BFS解决 xf
  • gtest单元测试配置+vs 2015+OpenCppCoverage输出测试覆盖率 || cmake命令构建项目以及编译以及命令行测试

    目录 一 仅使用gtest 43 vs2015 1 下载和编译gtest 2 创建具体的项目 3 gtest自带十个例子 二 使用gtest 43 vs2015 xff0c 并且输出测试覆盖率 1 使用vs 2015企业版 2 使用Open
  • Cmakelists配置多级目录的gtest项目(项目代码和测试代码分离)

    cmake一些语法定义 之前的博客主要写了怎么配置gtest项目 xff0c 但是一般项目代码和测试代码并不在一起 xff0c 所以尝试将代码分离 主要分成三个部分 xff0c 下面给出demo的分级目录 gtest demo CMakel
  • WGS-84 ECEF ENU 坐标系学习记录

    地球坐标系固定在地球上而随地球一起在空间做公转和自转运动 xff0c 因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化 地心地固直角坐标系和大地坐标系都属于这种坐标系 一 几种坐标系 地心地固直角坐标系 xff08 ECEF
  • 关于大学生计算机未来发展的个人规划

    本人今年大二 xff0c 计算机专业 xff0c 和很多大学生一样 xff0c 在大一期间仍保持着高中的习惯 xff0c 每天只是上课听讲 xff0c 课后写作业 xff0c 复习与预习 可以说 xff0c 除了课堂上老师讲的知识和书本上有
  • 关于scanf的一些注意事项

    第一点 xff0c 设定的接受变量应以地址的方式出现在scanf内 xff0c 这是因为scanf本身是一个函数 xff0c 若不加地址相当于值传递 xff0c 无法改变对应变量的值 如 xff1a 规定输入类型是整形 xff08 d xf
  • 关于长度未知,输入几组数据之后如何终止输入

    首先 xff0c 应确定结束标准 xff0c 一般题目中会给出以输入 xffe5 或者负数之类的结束 xff0c 若题中没给 xff0c 正常情况下我们自己编码是习惯以回车作为结束符号 故可以用getchar xff08 xff09 接受一
  • 关于TortoiseGit的个人见解

    首先先放一个下载链接 xff1a Download TortoiseGit Windows Shell Interface to Git TortoiseGit是一个用于用户本身和gitee之间进行文件传输的中介 xff0c 本质上是用来简
  • c语言实现扫雷

    实现在9乘9的格子内实现扫雷游戏 xff0c 可修改格子的大小和雷的个数 思路 xff1a 初始利用随机数种子生成10个雷的位置 xff0c 通过输入x xff0c y坐标来显示当前格子是否是雷 xff0c 若是雷游戏结束 xff0c 显示
  • 使用Gstreamer拉取rtsp流,使用jeston硬件加速解码,并保存buffer为图片。

    编译 xff1a g 43 43 demo666 cc o demo666 span class token variable span class token variable 96 span pkg config cflags libs
  • 矩阵键盘驱动代码

    此代码仅提供了代码思路 xff0c 具体移植应用可以私信博主 key c include 34 stm32f10x h 34 include 34 key h 34 include 34 led h 34 include 34 sys h
  • 对于vs份文件编写代码的一些个人见解

    先说明一下为何要将代码写在不同的文件中 xff0c 这对于初学者来说可能是多此一举的 xff0c 因为明明在一个文件中就能完成的事 xff0c 为何要在多个文件中分别写 xff0c 繁琐还容易出错 先让我们明确一个观点 xff0c 就是一个
  • 不产生新变量的情况下交换整数

    思路 xff1a 利用其中一个变量同时存储两个变量的信息 xff0c 而后利用某些运算使得可以在知道其中一个的情况下求出另外一个 具体代码如下 xff1a void exchange1 int ex1 int ex2 ex1 61 ex2
  • 如何求一个数二进制1的个数

    思路 xff1a 方法1 xff1a 可以先求二进制的样式 xff0c 再计算其中1的个数 求二进制就是不断对2除和取余 xff0c 余数组成二进制 xff0c 除的结果做下次对2除和取余 xff0c 直到数字为0 方法2 xff1a 可以
  • BLE5.0蓝牙通信原理及TI BLE协议栈在CC2642上的应用

    蓝牙可以分为经典蓝牙和低功耗蓝牙 xff0c 本文重点介绍低功耗蓝牙 xff08 BLE 一 BLE协议栈结构 以TI的CC26XX芯片为例 xff0c BLE协议栈可以由如下图所示部分组成 xff1a 1 物理层 xff1a 物理层是BL
  • RS232/RS485/CAN_BUS 通信原理总结与通信波形分析

    分析一 xff1a 232串口信号 要点 xff1a RS232 xff0c 全双工 xff0c 采用三线制传输分别为TXD RXD GND xff0c 其中TXD为发送信号 xff0c RXD为接收信号 在RS232中任何一条信号线的电压