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

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

3天内不再提示

ELF 1技术贴|CAN接口浅析:从原理到对测

ElfBoard 2024-04-26 10:24 次阅读

引言

在当今智能化、网络化的时代,各种电子设备间的高效通信成为了技术发展的关键。而控制器局域网络(Controller Area Network,简称CAN),作为嵌入式系统中不可或缺的通信协议,正扮演着链接桥梁的重要角色。本文将带各位小伙伴深入了解CAN接口的基本原理。

CAN总线介绍

CAN总线采用广播通信模式,意味着网络中的每一节点都能接收传播于总线上的所有数据报文,并非定向传输至特定节点。这一特性确保了信息的广泛可达性,不过,各节点并非被动接受所有信息。实际上,CAN技术内置的硬件过滤机制使得每个节点能智能化筛选,仅对与其相关的报文作出响应,实现了有效的信息过滤与处理策略。

总线采用不归零制编码结合线与逻辑设计,确保了信号的稳定传输。在此机制下,各个模块经由线与逻辑相连至总线,这意味着当单一节点输出逻辑0时,即使其余节点均发出逻辑1,总线信号也会被强势界定为逻辑0,体现了总线在信号竞争中的独断性。

CAN总线上的电平

CAN2.0A/B标准规定:总线空闲时,CAN_H和CAN_L上的电压为2.5V;

在数据传输时,显性电平(逻辑0):CAN_H 3.5V CAN_L 1.5V;

隐性电平(逻辑1):CAN_H 2.5V CAN_L 2.5V;

wKgZomYrC6SAAlq0AAtWUkw5vuE991.png

CAN标准定义四种不同的报文类型(数据帧、远程帧、错误帧、过载帧)。报文使用逐位仲裁智能方案来控制对总线的访问,每条报文都带有优先级标记,在协议中规定ID小则优先级高。CAN总线拓扑图如下图:

wKgaomYrC7yAX3SAAA85Tuauu4s260.png

ElfBoard开发板 CAN接口硬件电路介绍

ELF 1开发板在其底板上集成了1路CAN接口,而ELF 1S开发板则通过扩展板增设了额外的1路CAN接口,这一接口经由3.81mm间距的绿色端子引出。

当前,ELF 1开发板搭载了TJA1040T型CAN收发器。关于CAN模块原理图如下图所示。考虑到TJA1040T器件的输出端RX输出的是5V电平信号,这可能对核心板的3.3V工作电压环境构成兼容性挑战。为保护核心板,采取了电压匹配措施:通过电阻R51和R54实施分压,将RX信号平滑过渡至3.3V,随后安全送至处理器的CAN1_RX输入端口,从而保障了系统间通讯的稳定。

wKgZomYrC9OAJYRRAA6ZPF53Rmo802.png

为了优化外部电路设计,各位小伙伴可以参考以下的TJA1040T芯片功能框图和引脚详解。这些资料将加速大家对TJA1040T芯片特性的理解进程。

wKgaomYrD0eAFZ9BAAzmyQBVEk4802.pngTJA1040T芯片功能框图

wKgZomYrD1eANerCABLSOHdZwc4972.pngTJA1040T芯片引脚说明

关于CAN接口的设计建议

(1)核心板最多可支持2路CAN;

(2)设计CAN接口时要注意收发器和核心板之间的电平匹配;

(3)终端电阻可以预留插针通过跳线帽选择使用;

关于CAN接口PCB的设计建议

(1)CAN使用差分布线,预留120Ω端接电阻;

(2)连接端口建议预留地信号;

CAN接口对测

ELF 1S开发板提供两路CAN接口,CAN1 集成于底板之上,而 CAN2 则集成在扩展板上。为了实现双向 CAN 测试,需将 CAN1 与 CAN2 两端的信号线对应相连——即高位H线相互接通,低位L线同样相连,以确保两者间的直接通信链路畅通无阻。

wKgZomYrD4uAAw5mABDt4sAs_rc906.png

开发板启动之后,在命令行输入以下命令,对CAN1配置波特率为125000:

root@ELF1:~# ifconfig can0 down //关闭can1 root@ELF1:~# ip link set can0 up type can bitrate 125000 triple-sampling on //设置can1波特率 flexcan 2090000.can can0:writing ctrl=0x0e312085 IPV6:ADDRCONF(NETDEV_CHANGE):can0:link becomes ready root@ELF1:~# ifconfig can0 up //开启can1

对CAN2配置波特率为125000:

root@ELF1:~# ifconfig can1 down //关闭can2 root@ELF1:~# ip link set can1 up type can bitrate 125000 triple-sampling on //设置can2波特率 flexcan 2094000.can can1:writing ctrl=0x0e312085 IPV6:ADDRCONF(NETDEV_CHANGE):can0:link becomes ready root@ELF1:~# ifconfig can1 up //开启can2

设置CAN2接收数据:

root@ELF1:~# candump can1 & //can2以后台方式接收数据 [1] 686

CAN1发送数据:

root@ELF1:~# cansend can0 123#1234567891234567 //can1发送数据 root@ELF1:~# can1 123 [8] 12 34 56 78 91 23 45 67 //can2接收到数据

CAN2接收到CAN1发送的数据。

至此就完成了对CAN接口的介绍,期待这篇文章能让各位小伙伴对CAN接口有一个全面而深入的理解,推进各位嵌入式爱好者在学习的道路上不断前进。

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

    关注

    6030

    文章

    44501

    浏览量

    632279
  • 嵌入式
    +关注

    关注

    5062

    文章

    18984

    浏览量

    302384
  • 开发板
    +关注

    关注

    25

    文章

    4914

    浏览量

    97103
收藏 人收藏

    评论

    相关推荐

    ELF 1技术|开发板底板电源电路讲解

    ELF1开发板由核心板和底板组成,底板集成CAN、Wi-Fi&BT、Ethernet、音频、USB.Camera、LCD显示、温湿度传感器、UART等功能外设,核心板是核心组件,集成了主控
    的头像 发表于 01-15 13:28 1088次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|开发板底板电源电路讲解

    ELF 1技术|在NXP源码基础上适配开发板的按键功能

    ELF1开发板。接下来,我们将详细阐述适配过程中关于按键功能实现的完整步骤。值得一提的是,ELF1开发板上预置了标识为K1、K2、K3的三个按键。为了启用这些按
    的头像 发表于 03-08 16:58 912次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|在NXP源码基础上适配开发板的按键功能

    ElfBoard技术|如何在NXP源码基础上适配ELF 1开发板的UART功能

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。在i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发
    的头像 发表于 09-25 13:56 2223次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在NXP源码基础上适配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b>开发板的UART功能

    基于DSP的CAN总线接口设计

    基于DSP的CAN总线接口设计 1CAN总线简介   控制器局部网络(CAN ControllerAreaNetwork)是德国B
    发表于 10-04 09:41 4640次阅读
    基于DSP的<b class='flag-5'>CAN</b>总线<b class='flag-5'>接口</b>设计

    语音接口技术浅析

    语音接口技术浅析
    发表于 11-01 08:27 1次下载
    语音<b class='flag-5'>接口技术</b><b class='flag-5'>浅析</b>

    理到实例:GaN为何值得期待?

    理到实例:GaN为何值得期待?
    的头像 发表于 12-30 17:06 958次阅读
    <b class='flag-5'>从</b>原<b class='flag-5'>理到</b>实例:GaN为何值得期待?

    关于ELF1/ELF1S开发板的音频接口,你需要知道的都在这!

    音乐可以将平凡的画面赋予深厚的意义,那么音频接口就是这个支点;今天就来给大家详细介绍一下ELF1/ELF1S开发板的音频接口ELF1/
    的头像 发表于 10-31 14:10 662次阅读
    关于<b class='flag-5'>ELF1</b>/<b class='flag-5'>ELF1</b>S开发板的音频<b class='flag-5'>接口</b>,你需要知道的都在这!

    浅析can技术的演变过程

    CAN技术的演变 为了了解 CAN FD 到 CAN XL 的转变,让我们简单回顾一下 CAN
    发表于 11-17 11:41 508次阅读
    <b class='flag-5'>浅析</b><b class='flag-5'>can</b><b class='flag-5'>技术</b>的演变过程

    ELF 1技术|LCD作为终端控制台的方法

    ELF1/ELF1S开发板及显示屏)(ELF1/ELF1S开发板及显示屏)对于嵌入式爱好者来说,调试开发板是必不可少的工作。一般情况下是使用串口作为终端进行调试,如果网络没问题的话,
    的头像 发表于 12-20 17:11 379次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|LCD作为终端控制台的方法

    ELF 1技术|在NXP源码基础上适配ELF 1开发板的LED功能

    本次源码适配工作是在NXPi.MX6ULLEVK评估板的Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目标是调整功能接口引脚配置,以适应ELF1开发板。下面以
    的头像 发表于 12-29 10:04 788次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|在NXP源码基础上适配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b>开发板的LED功能

    解析压敏电阻MOV:基础原理到应用?

    解析压敏电阻MOV:基础原理到应用?|深圳比创达电子EMC
    的头像 发表于 01-24 10:47 795次阅读
    解析压敏电阻MOV:<b class='flag-5'>从</b>基础原<b class='flag-5'>理到</b>应用?

    ELF 1技术|如何支持exFAT和NTFS格式

    。接下来将给各位小伙伴介绍一下如何通过对ELF1开发板进行配置,以实现对exFAT和NTFS格式U盘以及SD卡的支持与挂载。exFAT1、内核源码中需要添加exFAT
    的头像 发表于 01-31 16:37 635次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何支持exFAT和NTFS格式

    ELF 1技术|如何将Python3.6.9移植到开发板上

    ELF1开发板的Linux4.1.15eMMC镜像中,默认预装了Python2.7。为了适应更多应用场景,有些小伙伴可能需要移植其他版本的Python,下面将以Python3.6.9为例详细介绍
    的头像 发表于 02-22 14:06 392次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何将Python3.6.9移植到开发板上

    ELF技术|如何在开发板上实现对Java的支持

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。在ELF1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的选择空间,今天就为各位小伙伴详细解析如何在ELF1开发板上成
    的头像 发表于 03-13 16:47 459次阅读
    <b class='flag-5'>ELF</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在开发板上实现对Java的支持

    ElfBoard技术|在NXP源码基础上适配ELF 1开发板的按键功能

    本次源码适配工作是在NXPi.MX6ULLEVK评估板的Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目标是调整功能接口引脚配置,以适应ELF1开发板。接下来
    的头像 发表于 07-10 09:54 519次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|在NXP源码基础上适配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b>开发板的按键功能