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

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

3天内不再提示

CAN总线通信详解

智能汽车电子与软件 来源:智能汽车电子与软件 2023-03-29 10:06 次阅读

一、CAN相关芯片

1.CAN控制器

2.CAN收发器:CAN收发器的作用是负责逻辑电平和信号电平之间的转换。

即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。

d08765a6-cd7f-11ed-bfe3-dac502259ad0.png

二、CAN的配置

void CAN1_Config_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

CAN_InitTypeDef CAN_InitStructure;

CAN_FilterInitTypeDef CAN_FilterInitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

d09e4082-cd7f-11ed-bfe3-dac502259ad0.png

d0b6ae38-cd7f-11ed-bfe3-dac502259ad0.png

三、CAN波特率计算公式

d0cccb00-cd7f-11ed-bfe3-dac502259ad0.png

CAN波特率=系统时钟/分频数/(1*tq+tBS1+tBS2)

其中

tBS1=tq*(TS1[3:0]+1)

tBS2=tq*(TS2[2:0]+1)

tq=(BRP[9:0]+1)*tPCLK

这里tq表示1个时间单元

tPCLK=APB时钟的时间周期

BRP[9:0],TS1[3:0]和TS2[2:0]在CAN_BTR寄存器中定义

总体配置保持

tBS1>=tBS2,tBS2>=1个CAN时钟周期,tBS2>=2tSJW

四、CAN的发送与CAN的接收

1、发送过程:CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

d0e0e022-cd7f-11ed-bfe3-dac502259ad0.png

2、接收过程:CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

d0f50200-cd7f-11ed-bfe3-dac502259ad0.png

五、STM32 CAN控制器简介-发送流程和接收流程

程序选择1个空置的邮箱(TME=1)->设置标识符(ID),数据长度和发送数据->设置CAN_TIxR的TXRQ位为1,请求发送->邮箱挂号(等待成为最高优先级)->预定发送(等待总线空闲)->发送->邮箱空置

d1055c5e-cd7f-11ed-bfe3-dac502259ad0.png

FIFO空->收到有效报文->挂号_1(存入FIFO的一个邮箱,这个由硬件控制,我们不需要理会)->收到有效报文->挂号_2->收到有效报文->挂号_3->收到有效报文->溢出。

CAN收到的有效报文,存储在3级邮箱深度的FIFO中。FIFO接收到的报文数,我们可以通过查询CAN_RFxR的FMP寄存器来得到,只要FMP不为0,我们就可以从FIFO读出收到的报文。

d121ee32-cd7f-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红

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

    关注

    10

    文章

    3424

    浏览量

    105965
  • 控制器
    +关注

    关注

    112

    文章

    16339

    浏览量

    177853
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2744

    浏览量

    463630
  • 通信
    +关注

    关注

    18

    文章

    6029

    浏览量

    135954
  • 总线
    +关注

    关注

    10

    文章

    2878

    浏览量

    88056

原文标题:CAN总线通信

文章出处:【微信号:智能汽车电子与软件,微信公众号:智能汽车电子与软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解汽车CAN总线

    作者:Xiaomin 概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间
    发表于 07-26 08:33

    CAN总线详解 精选资料分享

    总线威廉希尔官方网站 3.运行流程:4.显性隐性:一、 CAN帧结构CAN-bus通信帧:数据帧、远程帧、错误帧、过载帧和帧间隔1.数据帧由7个段组成,其中根据仲裁段ID码长度的...
    发表于 08-20 07:03

    CAN通信总线详解

    CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关C...
    发表于 08-31 07:14

    CAN总线通信电路

    CAN总线通信电路
    发表于 10-14 13:59 6667次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>通信</b>电路

    CAN总线通信原理分析

    基于CAN总线系统结构构成,通过工程实践的具体应用以及对CAN控制器及收发器硬件结构的深入理解,并从通信的角度出发着重深入分析了CAN
    发表于 05-08 15:23 404次下载
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>通信</b>原理分析

    CAN总线详解

    汽车CAN总线基础详解与基本应用情况与实例分享
    发表于 03-22 15:50 0次下载

    CAN总线通信详解

    CAN总线通信详解
    发表于 03-30 16:46 0次下载

    汽车can总线工作原理及测量方法详解

    本文首先介绍了CAN总线的总体结构,其次介绍了汽车CAN总线数据传输系统构成及工作原理,最后介绍了汽车CAN
    发表于 04-25 08:54 14.8w次阅读
    汽车<b class='flag-5'>can</b><b class='flag-5'>总线</b>工作原理及测量方法<b class='flag-5'>详解</b>

    CAN总线通信报文验收滤波、位定时与同步详解

    CAN(Controller Area NetWork)总线,即控制器局域网总线,是由德国Bosch公司于1982年开发和推出的最早用于汽车内部测量与执行部件之间的数据通信协议。在20
    的头像 发表于 05-07 16:16 1.1w次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>通信</b>报文验收滤波、位定时与同步<b class='flag-5'>详解</b>

    为什么要用光纤CAN转换器_基于光纤转CAN模块的CAN总线通信改造

    总线,在通讯上也会受到部分干扰,所以改造CAN总线迫在眉睫。本文首先介绍了什么是光纤及can总线,其次介绍了为什么要用光纤
    发表于 05-07 17:09 7838次阅读

    详解CAN总线通信优先级机制

    详解CAN总线CAN总线报文格式—数据帧文章中,讲解到仲裁段。仲裁段用于写明需要发送到目的CAN
    发表于 10-25 14:00 2543次阅读
    <b class='flag-5'>详解</b><b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>通信</b>优先级机制

    基于FPGA的CAN总线通信节点设计

    点击上方 蓝字 关注我们 摘要:以FPGA 代替传统的单片机和外围扩展芯片, 给出了CAN 总线通信节点的详细设计方案。其中以SJA1000为CAN
    的头像 发表于 06-18 11:15 2961次阅读

    CAN总线通信协议详解

    一、CAN总线概述 CAN总线是一种多主控制的串行通信协议,它允许多个设备共享同一通信线路,而无
    的头像 发表于 11-12 09:46 771次阅读

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个
    的头像 发表于 11-12 10:09 769次阅读

    CAN总线通信原理介绍 CAN总线模块选择指南

    CAN总线(Controller Area Network)是一种串行通信协议,主要用于汽车电子控制单元之间的通信。它由Bosch公司在20世纪80年代初开发,因其可靠性、实时性和灵活
    的头像 发表于 11-21 10:21 442次阅读