CAN详解--CAN与com口介绍
一、com口
1、实物图
2、介绍
COM口( cluster communication port )即串行通讯端口,简称串口。微机上的串口通常是9针,也有25针的接口,最大速率115200bps。通常用于连接鼠标(串口)及通讯设备(如连接外置式调制解调器进行数据通讯或一些工厂的数控机接口)等。一般主板外部只有一个串口,机箱后面和并口一起的那个九孔输出端(梯形),就是COM1口,COM2口一般要从主板上插针引出。并口是最长的那个梯形口。但目前主流的主板一般都只带1个串口,甚至不带,慢慢会被USB 取代。
3、串口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口。9针串行口的针脚功能:
DB-9针连接头
-------------
\ 1 2 3 4 5 /
\ 6 7 8 9 /
针脚 | 功能 |
1 | 载波检测(CD) |
2 | 接受数据(RXD) |
3 |
发出数据(TXD) |
4 | 数据终端准备好(DTR) |
5 | 信号地线(SG) |
6 | 数据准备好(DSR) |
7 | 请求发送(RTS) |
8 | 清除发送(CTS) |
9 | 振铃指示(RI) |
二、can(转)
1、本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN协议。
2、CAN协议和CANOpen协议是两套不同的协议。从软硬件层次来划分,CAN协议属于硬件协议,而CANOpen属于软件协议。
3、下面先概述一下CAN网络,让大家对CAN总线协议有一个全局的概念,再到底层的CAN总线协议知识。
(1)CAN网络
CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。CAN网络拓扑结构如下图:
如上图,一个CAN节点主要包含三类:MCU应用程序、CAN控制器、CAN收发器。
①MCU应用程序
MCU应用程序我将其分为三块:业务逻辑代码、协议层代码、底层驱动代码。
A.业务逻辑代码:是根据项目需求而定,也很好理解。比如我读取一个传感器数据,并对其做出相应逻辑处理。
B.协议层代码:比如后续要讲述的CANOpen。
C.底层驱动代码:配置CAN总线相应参数、控制收发的代码。
②CAN控制器
CAN控制器内部结构还是挺复杂的,一般现在CAN控制器都是与处理器集成在一起。
其实对于编程的人来说,无非也就是包含一些控制、状态、配置等寄存器。
比如我们看到有些STM32芯片带有CAN,也就是说CAN控制器已经集成在STM32芯片中了,我们只需要编程操作其中的寄存器即可。
③ CAN收发器
CAN收发器:将CAN收发引脚(CAN_TX和CAN_RX)的TTL信号转换成CAN总线的电平信号。
PS:你可以把CAN总线通信认为是UART通过485进行通信:CAN控制器就如UART的控制器,而CAN收发器就如485转换芯片。
(2)ISO标准化的CAN协议
写这一章节的主要目的就是想让大家了解CAN总线位于OSI所在层次。
① ISO/OSI基本参照模型
【注】
ISO:International Standardization Organization国际标准化组织;
OSI:Open Systems Interconnection开放式系统间互联;
②CAN在OSI模型中的定义
【注】
LLC:Logical Link Control逻辑链路控制;
MAC:Medium Access Control媒介访问控制;
从上图可以知道CAN总线底层硬件的内容(CAN控制器、收发器)主要位于OSI的第1层和第2层。
(3)概述CAN总线协议
CAN总线协议:就是为了保证通信(收发)数据在CAN总线上能稳定传输而制订的一套协议。
CAN总线协议的内容很多,为方便初学者理解,本文先大概描述一下CAN总线协议,后续文章详细讲述CAN总线协议的内容。
①总线信号
CAN总线为「两线」「差分」信号,用隐形代表逻辑1,显性代表逻辑0。如下图:
② 优先级
假如某一时刻,一个设备(节点)往总线发0,一个设备往总线发1。那么总线会呈现什么现象?
答案:最后总线呈现为显性,也就是0。
③ 位时序
位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。
简单的说就是对一个bit位分几段进行采样,目的就是提高数据传输稳定性。在STM32中底层驱动代码就需要进行位时序编程,在STM32参考手册中也会发现如下位时序图:
④ 帧的种类和格式
帧的种类有多种:
数据帧:用于发送单元向接收单元传送数据的帧。
遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。
错误帧:用于当检测出错误时向其它单元通知错误的帧。
过载帧:用于接收单元通知其尚未做好接收准备的帧。
帧间隔:用于将数据帧及遥控帧与前面的帧分离开来的帧。
数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符ID,扩展格式有29个位的ID。
⑤ 位填充
位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。如下图:
⑥ 错误的种类
CAN总线协议内容很多,初学者先了解这些,后面文章具体到每一个点上,相信大家就会更明白其中的含义。
致谢
1、标准9针串口引脚定义
2、com口
3、Kvaser(cn)
4、嵌入式工程师常用的CAN总线协议,全面了解一下!
5、CAN协议教程(好)
6、浅谈CAN通讯协议---杨澜
CAN详解--CAN与com口介绍相关推荐
- IIS负载均衡-Application Request Route详解第一篇: ARR介绍
IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Appli ...
- java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...
这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...
- 红黑树详解(一)红黑树的介绍和操作
红黑树详解(一)红黑树的介绍和操作 摘要: 在很多源码涉及到大量数据处理的时候,通常都是用红黑树这一数据结构.红黑树是一种自平衡的二叉查找树,它能在进行插入和删除操作时通过特定操作保持二叉查找树的平衡 ...
- Tensorflow 2.x源码详解之开宗明义:基本介绍和张量(万文多图)
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...
- 图形 2.4 传统经验光照模型详解(PBR光照计算公式介绍)
参考视频: 图形 2.4 传统经验光照模型详解 GAMES101-现代计算机图形学入门-闫令琪 P15 参考资料: PBR-learnopengl 彻底看懂PBR/BRDF方程-知乎 辐射强度.辐亮度 ...
- Redis最全详解(一)——基础介绍
Redis介绍 redis是基于内存可持久化的日志型.Key-Value数据库.redis安装在磁盘,但是数据存储在内存.非关系型数据库NoSql.开源免费,遵守BSD协议,不用关注版权问题. red ...
- html标记ruby,html5 ruby标签的定义及使用方法详解(内有实例介绍)
本篇文章主要为大家讲解了html5中一个新标签,html5 ruby标签,虽然不算是新的,但也是在html5里新的标签,html5 ruby标签的定义和具体的用法实例都在这篇文章中,希望大家认真阅读 ...
- ADI Blackfin DSP处理器-BF533的开发详解10:SPORT-IIS口驱动和应用(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533上有两个 S ...
最新文章
- web项目错误页面友好处理404,500等
- torch_geometric 笔记:nn.ChebNet
- 零基础带你快速入门consul-难道consul还能这样用?
- ubuntu 16.04系统中nvidai、cuda、cudnn安装及注意事项
- mysql下载64位 csdn_Linunx-CentOS7安装mysql-5.7.23-linux-glibc2.12-x86_64.tar
- DHAT:动态堆分析工具
- mysql8基本操作
- 【Kafka】kafka无法查看消费组消费信息,其他相关组件正常
- win7下,令人头疼的 classpnp.sys (附带:安装系统时蓝屏;0x0000007b)。
- 零基础学python比较好的网课-请问自学 Python 有必要买课程吗?
- flex 内嵌js文件
- javaweb项目的文件结构
- 深入了解requestFullscreen()方法实现全屏显示
- java金蝶云单据查询_金蝶云星空使用WebAPI来新增单据
- steam版拳皇14无法正常启动
- 兴奋神经递质——谷氨酸与大脑健康
- 股票量化分析(11)——第二个策略(5日移动均线、双均线、MACD策略)
- EI 收录的期刊有哪些
- Python 将网易云歌单迁移到QQ音乐
- 百步穿杨hdu2550简单C语言