0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种值得嵌入式开发人员学习的总线 -- CAN-Bus

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-14 11:02 次阅读

CAN总线相关概述

1 写在前面

说到CAN,相信大家都有所了解,但单纯的了解,其意义不大,要知道它能做什么,知道它的用途才重要。

可能初学的朋友不太了解CAN的应用领域,对于汽车电子、轨道交通、工业自动化等诸多的运动控制系统中,运用CAN总线通信的地方很多很多。所以,我建议:嵌入式开发的朋友,有必要学习CAN,以及CAN常用的通信协议。

2 CAN总线

什么是总线?

相信大家都知道,谷歌百度一下,非常详细的解释:总线(Bus)是计算机各种功能部件之间传送信息的公共通信主干线。就好比一条输电线,它有多条分支,但主干线是重要的一条线路。

什么是CAN?

CAN:ControllerAreaNetwork即控制器局域网络

理解了总线及CAN的含义,对CAN总线的理解就不难了,只是我们这种控制通信的方式这样命名而已。同理,我们也能理解什么是485总线,什么是I2C总线······

3 CAN网络结构

想要实现CAN总线的通信,必须要有CAN相关的硬件支持,也可以说是OSI(开放系统互联)中的物理层。

(图片来自STM32 CAN网络结构图)

主要包含:MCU、CAN控制器、CAN收发器

可以结合485总线理解,CAN控制器就是UART控制器,CAN收发器就是485转换器

CAN控制器是CAN通信中的核心部位,收和发的数据都经由它来处理;

CAN收发器可以理解成一个转换器,就是将TTL电平信号转换为CAN总线中的差分信号。

4 CAN通信原理

CAN通信原理其实是一个很大的话题,这里从基础来讲述实现CAN通信的原理。

can在英文单词中有"罐头"的意思,可能很多人小时候都玩过有种叫“传声筒”的东西,就是对着绳子一端的罐头说话,声音就可以传输的另一头。

罐头一端的人说【你好】,另外一端的人就能理解到对方说的话(你好)的意思。

我们可以把【你好】理解成通信中的数据,至于它是通过什么方式传输过去我们是不必关心的,只需要知道【你好】的意思即可。

也就是说,数据经过电平转换的过程我们不用关心,还有就是添加的一些协议(如CANopen,可以理解成额外添加的数据)我们也不用关心,关心的是我们想要得到的数据。

5 CAN应用协议

CAN也可以理解成UART,我们可以不使用CAN收发器,像单片机UART中直接将两块单片机的TX和RX引脚连接,通过TTL电平信号传输数据。

一般来说,我们使用UART通信,都会添加相关的协议,如ModBus。添加协议的作用是就是方便解析数据,防止信号受干扰而检测错误数据帧等。

相关的协议目前有多种:

CANopen协议 (制定组织:CiA)

DeviceNet协议 (制定组织ODVA)

CAL协议 (制定组织:CiA)

CANKingdom (制定组织:Kvaser)

J1939协议 (制定组织:SAE)

SDS协议(制定组织:Honeywell)

CAN总线应用协议相对CAN驱动来说要复杂的多,目前CANopen协议算是市面上用的比较多的一种,后期会更新CANopen协议中一项开源协议canfestival。

6 最后

CAN总线以及CAN相关协议的内容相对来说较多,本文算是带领大家对CAN有一个基础的认识。

微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,在我的底部菜单查看更多精彩内容!

长按识别二维码 关注

原文标题:一种值得嵌入式开发人员学习的总线 --- CAN-Bus

文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304804
  • CAN总线
    +关注

    关注

    145

    文章

    1946

    浏览量

    130726
  • 485总线
    +关注

    关注

    1

    文章

    29

    浏览量

    16780
收藏 人收藏

    评论

    相关推荐

    如何使用 RISC-V 进行嵌入式开发

    RISC-V是一种开源的指令集架构(ISA),它允许任何人设计、制造和销售基于RISC-V的处理器,这为嵌入式开发提供了极大的灵活性和创新空间。以下是使用RISC-V进行嵌入式开发的基本步骤:
    的头像 发表于 12-11 17:32 469次阅读

    MSPDebugStack开发人员指南

    电子发烧友网站提供《MSPDebugStack开发人员指南.pdf》资料免费下载
    发表于 12-05 14:49 0次下载
    MSPDebugStack<b class='flag-5'>开发人员</b>指南

    零基础嵌入式开发学习路线

    Linux基本操作 什么是Linux?为什么要学Linux?Linux是个操作系统,类似于平常使用的Windows系统。作为嵌入式开发最常用的操作系统,Linux是开发人员必会的技能。它有很多优点
    发表于 10-25 15:55

    嵌入式开发常见问题排查

    嵌入式开发问题排查很多人认为嵌入式开发很难,主要是因为在这个过程中常常会遇到各式各样的问题。这些问题的复杂性和多样性使得许多人感到困惑和无所适从。然而,如果将这些问题逐拆解,实际上大部分都可以
    的头像 发表于 09-22 08:04 321次阅读
    <b class='flag-5'>嵌入式开发</b>常见问题排查

    嵌入式常用总线有哪些

    嵌入式系统中常用的总线种类繁多,它们各自具有不同的特点和应用场景。以下将详细介绍几种嵌入式开发中常用的总线,包括UART、I2C、SPI、RS-232、RS-485、
    的头像 发表于 09-10 11:34 592次阅读

    嵌入式开发常用软件有哪些?

    查看源代码,注释文档等非常方便,因为它查找,定位,彩色显示等功能非常强大。开发人员会当成源代码阅读工具使用。 4.Keil uVision5 Keil 5 软件是款功能强大的嵌入式系统开发
    发表于 09-09 15:22

    C2000 ePWM开发人员指南

    电子发烧友网站提供《C2000 ePWM开发人员指南.pdf》资料免费下载
    发表于 09-07 09:45 0次下载
    C2000 ePWM<b class='flag-5'>开发人员</b>指南

    一种常用嵌入式开发代码库

    使用开源协议:GPL-2.0varch简介varch(we-architecture,意为我们的框架库)是嵌入式C语言常用代码模块库,包含了嵌入式中常用的算法库,数据结构(容器)库,解析器库,独立C
    的头像 发表于 09-04 08:06 455次阅读
    <b class='flag-5'>一种</b>常用<b class='flag-5'>嵌入式开发</b>代码库

    嵌入式开发前景怎么样?

    嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。以下是对嵌入式开发前景的详细分析
    的头像 发表于 07-10 09:00 2679次阅读
    <b class='flag-5'>嵌入式开发</b>前景怎么样?

    嵌入式系统怎么学?

    人类社会朝着更加智能、便利、高效的方向发展。在未来,嵌入式软件开发人员也需要不断学习和适应新技术,以满足不断变化的市场需求。
    发表于 07-02 10:10

    嵌入式开发就业前景怎么样?

    嵌入式开发的主要工作是开发各种医疗设备和系统,如医疗影像、医疗机器人、远程诊疗等。嵌入式开发人员需要掌握相关的硬件和软件技术,如处理器、传感器、通信技术、医疗数据处理等,同时也需要具备
    发表于 06-07 14:51

    CAN-bus应用笔记:节点篇

    CAN-bus电路设计中,理论上收发器支持节点数最多可做到110个,但实际应用中往往达不到这个数量。今天我们就来谈谈如何通过合理的CAN-bus总线设计,保证CAN网络中的通讯的可靠
    的头像 发表于 05-12 08:24 553次阅读
    <b class='flag-5'>CAN-bus</b>应用笔记:节点篇

    fpga是嵌入式开发

    FPGA(现场可编程门阵列)与嵌入式开发之间确实存在定的关联,但它们在本质上是两个不同的领域。
    的头像 发表于 03-15 14:18 1032次阅读

    雅特力AT32 Workbench图形化代码生成工具,简化嵌入式开发最佳利器

    嵌入式系统应用市场广泛,早已遍及日常生活,随着产品需求复杂度的提升,32位MCU开发难度也随之增加,如何降低开发成本,缩短开发周期,是所有嵌入式开发
    的头像 发表于 02-19 13:26 563次阅读
    雅特力AT32 Workbench图形化代码生成工具,简化<b class='flag-5'>嵌入式开发</b>最佳利器

    嵌入式软件开发应该掌握哪些知识?

    知识点学习 熟悉 Linux 的基本使用对于嵌入式软件开发至关重要。包括文件系统的管理、用户权限的控制、软件包管理等。嵌入式开发人员需要能够在 Linux 环境下进行
    发表于 02-19 11:23