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

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

3天内不再提示

STM32入门学习笔记之CAN通信实验1

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 14:37 2068次阅读

18.1 CAN协议

18.1.1 协议概述

CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着CAN协议的高性能与可靠性被认同,现在被广泛运用在工业自动化,船舶等当面,目前最热门的国六标准,J1939通信协议就是以CAN协议为基础设计的。

CAN协议最远通信距离可达10km,与485相似,CAN也有两种电平,分别为显性电平与隐性电平,当CAN_H与CAN_L电压一致的时候为隐性电平,反之为显性电平。实际上隐性电平代表逻辑电平1,显性电平代表逻辑电平0,CAN在通信的时候,也需要在每个设备输出端并联1120Ω的终端匹配电阻,用于进行阻抗匹配。

18.1.2 通信组成

CAN协议通过5种类型的帧进行数据通信:数据帧,遥控帧,错误帧,过载帧和间隔帧,其中数据帧与遥控帧具有标准格式与扩展格式两种,标准格式有11个位的标识符,扩展格式则有29个位的标识符,五种帧的功能如下所示。

(1)数据帧:用于实际数据传输

(2)遥控帧:用于接收端向具有相同ID的发送端请求数据

(3)错误帧:用于检测报错时通知其他设备

(4)过载帧:用于接收端通报尚未准备好接收准备

(5)间隔帧:用于将数据帧与遥控帧和前面的帧分割

完整的数据帧构成如下图所示。

图片

数据帧一般由7段组成:

(1)帧起始:即数据帧开始的段,标准帧和扩展帧都是由1个位的显性电平表示帧起始

(2)仲裁段:表示该帧优先级,标准帧和扩展帧格式在这一段结构如下图所示。

图片

其中RTR位用于标识是否是远程帧(0代表数据帧;1代表远程帧),IDE位为标识符选择位(0表示使用标准标识符;1表示使用扩展标识符),SRR位为代替远程请求位,为隐性位,代替了标准帧中的RTR位。

(3)控制段:表示数据的字节数即保留位,由6个位构成,表示数据段的字节数。标准帧和扩展帧的控制段结构如下图所示。

图片

r0和r1为保留位,必须全部以显性电平发送,但是接收端可以接收显性、隐性及任意组合的电平。DLC段为数据长度表示段,高位在前,DLC段有效值为08,但是接收方接收到915的时候并不认为是错误。

(4)数据段:数据段内容,一段可以发送0~8个字节的数据,从最高位MSB开始输出

(5)CRC校验:CRC校验数据完整性

(6)应答段:表示正常接收

(7)帧结束:表示该帧结束

18.1.3 通信参数

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为4段。

(1)同步段(SS)

(2)传播时间段(PTS)

(3)相位缓冲段1(PBS1)

(4)相位缓冲段2(PBS2)

这些段又由可称为Tq的最小时间单位构成。1位分为4个段,每个段又由若干个Tq构成,这称为位时序。1位由多少个Tq构成、每个段又由多少个Tq构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。各段的作用和Tq数如下表所示。

图片

18.1.4 总线仲裁

在总线空闲态,最先开始发送消息的单元获得发送权。当多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。实现过程如下图所示。

图片

单元1和单元2同时开始向总线发送数据,开始部分他们的数据格式是一样的,故无法区分优先级,直到T时刻,单元1输出隐性电平,而单元2输出显性电平,此时单元1仲裁失利,立刻转入接收状态工作,不再与单元2竞争,而单元2则顺利获得总线使用权,继续发送自己的数据。这就实现了仲裁,让连续发送显性电平多的单元获得总线使用权

18.1.5 STM32 CAN模组简介

STM32F1系列自带的是基本扩展CAN,支持CAN协议的2.0A和2.0B,支持报文发送的优先级要求可软件配置,最大通信速率1Mbps,3个发送邮箱和3级深度的2个接收缓存器FIFO,28个可变的滤波器组,STM32的CAN模组结构如下图所示。

图片

从上面结构可以看出,两个CAN都分别具备自己的发送与接收邮箱,但是28个滤波器却是公用的,通过FMR寄存器可以设置滤波器的分配方式,STM32的每个滤波器组的位宽都可以独立配置,根据位宽的不同,每个滤波器组可以提供

(1)1个32位过滤器:包含STDID[10:0],EXTID[17:0],18位扩展ID,IDE和RTR位

(2)1个16位过滤器:包含STDID[10:0],IDE,RTR和EXTID[17:15]

此外过滤器可以配置为屏蔽位模式与标识符列表模式。

(1)在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理

(2)标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同。

18.1.6 CAN的发送流程

第1步:程序选择1个空置的邮箱(TME=1),设置标识符(ID),数据长度和发送数据

第2步:设置CAN_TIxR的TXRQ位为1,请求发送

第3步:邮箱挂号(等待成为最高优先级)

第4步:预定发送(等待总线空闲)

第5步:发送

第6步:邮箱空置

整个发送流程如下图所示。

图片

18.1.7 CAN的接收流程

CAN接收到的有效报文,被存储在3级邮箱深度的FIFO中。FIFO完全由硬件来管理,从而节省了CPU的处理负荷,简化了软件并保证了数据的一致性。应用程序只能通过读取FIFO输出邮箱,来读取FIFO中最先收到的报文。这里的有效报文是指那些正确被接收的(直到EOF都没有错误)且通过了标识符过滤的报文。前面我们知道CAN的接收有2个FIFO,我们每个滤波器组都可以设置其关联的FIFO,通过CAN_FFA1R的设置,可以将滤波器组关联到FIFO0/FIFO1。CAN接收流程为:

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

这个流程里面,我们没有考虑从FIFO读出报文的情况,实际情况是:我们必须在FIFO溢出之前,读出至少1个报文,否则下个报文到来,将导致FIFO溢出,从而出现报文丢失。每读出1个报文,相应的挂号就减1,直到FIFO空,完整的接收流程图如下图所示。

图片

FIFO接收到的报文数,我们可以通过查询CAN_RFxR的FMP寄存器来得到,只要FMP不为0,我们就可以从FIFO读出收到的报文。

18.1.8 通信速率计算

根据通信参数小节我们可以知道1个位是由4个段组成,分别为同步段(SS),传播时间段(PTS),相位缓冲段1(PBS1),相位缓冲段2(PBS2),STM32内部将传播时间段与相位缓冲段1合并为时间段1,这样1个位就是有3个段组成,即同步段SS,时间段1和时间段2(即相位缓冲段),由于波特率的定义是1秒内发送二进制位的个数,所以,CAN波特率的计算公式为

图片

18.1.9 STM32F1系列CAN测试模式

(1)静默模式

通过对CAN_BTR寄存器的SILM位置1,来选择静默模式。在静默模式下,CAN可以正常地接收数据帧和远程帧,但只能发出隐性位,而不能真正发送报文。如果bxCAN需要发出显性位(确认位、过载标志、主动错误标志),那么这样的显性位在内部被接回来从而可以被CAN内核检测到,同时CAN总线不会受到影响而仍然维持在隐性位状态。因此,静默模式通常用于分析CAN总线的活动,而不会对总线造成影响-显性位(确认位、错误帧)不会真正发送到总线上,静默模式等效图如下图所示。

图片

(2)环回模式

通过对CAN_BTR寄存器的LBKM位置1,来选择环回模式。在环回模式下,CAN把发送的报文当作接收的报文并保存(如果可以通过接收过滤)在接收邮箱里,环回模式等效图如下图所示。

图片

(3)环回静默模式

该模式可用于“热自测试”,即可以像环回模式那样测试CAN,但却不会影响CANTX和CANRX所连接的整个CAN系统。在环回静默模式下,CANRX引脚与CAN总线断开,同时CANTX引脚被驱动到隐性位状态,环回静默模式等效图如下图所示。

图片

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

    关注

    28

    文章

    978

    浏览量

    40884
  • 数据传输
    +关注

    关注

    9

    文章

    1994

    浏览量

    65526
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2847

    浏览量

    466443
收藏 人收藏
    相关推荐
    热点推荐

    介绍一下stm32F103C8T6的can总线通信实验

    本篇文章介绍一下stm32F103C8T6的can总线通信实验需要两块stm32F103C8T6板子can
    发表于 08-19 06:29

    串口通信实验分享

    实验四、串口通信实验​ 自律学习坚强 ,拒绝迷茫。作者:行走的皮卡丘时间:2021/4/4喜欢就去追,这个红灯等不到,说不定下一个红灯等到了,嘻嘻!!!!!!!文章目录实验四、串口
    发表于 01-14 09:08

    CAN通信实验报文对象的FIFO缓冲器应用

    关键词 CAN报文对象的FIFO模式应用摘 要 CAN通信实验
    发表于 11-07 14:18 33次下载

    ALIENTEK_MINISTM32_实验19_无线通信实验

    ALIENTEK MINISTM32 实验19 无线通信实验,很好的资料,快来下载吧
    发表于 02-19 11:40 12次下载

    CAN通信实验

    CAN通信实验
    发表于 03-30 16:48 0次下载

    STM32各模块学习笔记

    STM32个模块学习笔记 目录 STM32笔记之一 中断优先级.......................................
    发表于 11-30 03:32 3216次阅读

    STM32学习笔记--CAN

    目录:一、CAN通信原理1.CAN通信简介2.CAN通信优点3.
    发表于 11-19 12:21 86次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>--<b class='flag-5'>CAN</b>

    STM32CubMX自学笔记(七)—CAN通信实验

    STM32CubMX自学笔记(七)—CAN通信实验主要介绍由于项目需求要用到CAN通信协议,因此
    发表于 12-04 18:21 12次下载
    <b class='flag-5'>STM32</b>CubMX自学<b class='flag-5'>笔记</b>(七)—<b class='flag-5'>CAN</b><b class='flag-5'>通信实验</b>

    Can通信接口学习笔记

    Can通信接口学习笔记
    发表于 12-08 16:36 27次下载
    <b class='flag-5'>Can</b><b class='flag-5'>通信</b>接口<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    16 . USART 串口通信实验

    USART 串口通信实验我们知道STM32F1 内部含有非常多的通信接口,我们就来学习下USART 串口通信。要实现的功能是:
    发表于 12-20 19:22 20次下载
    16 . USART 串口<b class='flag-5'>通信实验</b>

    STM32 串口通信实验

    stm32串口通信实验UART通信实验(通用异步收发器)UART串口通信原理:UART的通信过程实验
    发表于 12-20 19:26 15次下载
    <b class='flag-5'>STM32</b> 串口<b class='flag-5'>通信实验</b>

    实验四、串口通信实验

    实验四、串口通信实验​ 自律 学习
    发表于 01-14 10:09 2次下载
    <b class='flag-5'>实验</b>四、串口<b class='flag-5'>通信实验</b>

    STM32入门学习笔记CAN通信实验2

    CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着CAN
    的头像 发表于 02-16 14:37 1962次阅读

    STM32入门学习笔记CAN通信实验3

    CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着CAN
    的头像 发表于 02-16 14:37 1058次阅读

    STM32入门学习笔记CAN通信实验4

    CAN是Controller Area Network的缩写,最初是专门用于汽车网络的通信协议,与485协议相似,CAN也是一种2线制,采用两根线的电压差进行数据传输的协议,随着CAN
    的头像 发表于 02-16 14:37 1235次阅读

    有几种电平转换电路,适用于不同的场景

    一.起因一般在消费电路的元器件之间,不同的器件IO的电压是不同的,常规的有5V,3.3V,1.8V等。当器件的IO电压一样的时候,比如都是5V,都是3.3V,那么其之间可以直接通讯,比如拉中断,I2Cdata/clk脚双方直接通讯等。当器件的IO电压不一样的时候,就需要进行电平转换,不然无法实现高低电平的变化。二.电平转换电路常见的有几种电平转换电路,适用于

    张飞实战电子官方
    1天前
    240

    瑞萨RA8系列教程 | 基于 RASC 生成 Keil 工程

    对于不习惯用 e2 studio 进行开发的同学,可以借助 RASC 生成 Keil 工程,然后在 Keil 环境下愉快的完成开发任务。

    RA生态工作室
    05-01 10:00
    437

    共赴之约 | 第二十七届中国北京国际科技产业博览会圆满落幕

    作为第二十七届北京科博会的参展方,芯佰微有幸与800余家全球科技同仁共赴「科技引领创享未来」之约!文章来源:北京贸促5月11日下午,第二十七届中国北京国际科技产业博览会圆满落幕。本届北京科博会主题为“科技引领创享未来”,由北京市人民政府主办,北京市贸促会,北京市科委、中关村管委会,北京市经济和信息化局,北京市知识产权局和北辰集团共同承办。5万平方米的展览云集

    芯佰微电子
    1天前
    489

    道生物联与巍泰技术联合发布 RTK 无线定位系统:TurMass™ 技术与厘米级高精度定位的深度融合

    道生物联与巍泰技术联合推出全新一代 RTK 无线定位系统——WTS-100(V3.0 RTK)。该系统以巍泰技术自主研发的 RTK(实时动态载波相位差分)高精度定位技术为核心,深度融合道生物联国产新兴窄带高并发 TurMass™ 无线通信技术,为室外大规模定位场景提供厘米级高精度、广覆盖、高并发、低功耗、低成本的一站式解决方案,助力行业智能化升级。

    道生物联
    1天前
    413

    智能家居中的清凉“智”选,310V无刷吊扇驱动方案--其利天下

    炎炎夏日,如何营造出清凉、舒适且节能的室内环境成为了大众关注的焦点。吊扇作为一种经典的家用电器,以其大风量、长寿命、低能耗等优势,依然是众多家庭的首选。而随着智能控制技术与无刷电机技术的不断进步,吊扇正朝着智能化、高效化、低噪化的方向发展。那么接下来小编将结合目前市面上的指标,详细为大家讲解其利天下有限公司推出的无刷吊扇驱动方案。▲其利天下无刷吊扇驱动方案一

    其利天下技术
    05-10 16:29
    927

    电源入口处防反接电路-汽车电子硬件电路设计

    一、为什么要设计防反接电路电源入口处接线及线束制作一般人为操作,有正极和负极接反的可能性,可能会损坏电源和负载电路;汽车电子产品电性能测试标准ISO16750-2的4.7节包含了电压极性反接测试,汽车电子产品须通过该项测试。二、防反接电路设计1.基础版:二极管串联二极管是最简单的防反接电路,因为电源有电源路径(即正极)和返回路径(即负极,GND),那么用二极

    张飞实战电子官方
    05-09 19:34
    863

    半导体芯片需要做哪些测试

    首先我们需要了解芯片制造环节做⼀款芯片最基本的环节是设计->流片->封装->测试,芯片成本构成⼀般为人力成本20%,流片40%,封装35%,测试5%(对于先进工艺,流片成本可能超过60%)。测试其实是芯片各个环节中最“便宜”的一步,在这个每家公司都喊着“CostDown”的激烈市场中,人力成本逐年攀升,晶圆厂和封装厂都在乙方市场中“叱咤风云”,唯独只有测试显

    汉通达
    05-09 10:02
    807

    解决方案 | 芯佰微赋能示波器:高速ADC、USB控制器和RS232芯片——高性能示波器的秘密武器!

    示波器解决方案总述:示波器是电子技术领域中不可或缺的精密测量仪器,通过直观的波形显示,将电信号随时间的变化转化为可视化图形,使复杂的电子现象变得清晰易懂。无论是在科研探索、工业检测还是通信领域,示波器都发挥着不可替代的作用,帮助工程师和技术人员深入剖析电信号的细节,精准定位问题所在,为创新与发展提供坚实的技术支撑。一、技术瓶颈亟待突破性能指标受限:受模拟前端

    芯佰微电子
    05-09 10:36
    1.5k

    硬件设计基础----运算放大器

    1什么是运算放大器运算放大器(运放)用于调节和放大模拟信号,运放是一个内含多级放大电路的集成器件,如图所示:左图为同相位,Vn端接地或稳定的电平,Vp端电平上升,则输出端Vo电平上升,Vp端电平下降,则输出端Vo电平下降;右图为反相位,Vp端接地或稳定的电平,Vn端电平上升,则输出端Vo电平下降,Vn端电平下降,则输出端Vo电平上升2运算放大器的性质理想运算

    张飞实战电子官方
    05-08 19:34
    610

    ElfBoard技术贴|如何调整eMMC存储分区

    ELF 2开发板基于瑞芯微RK3588高性能处理器设计,拥有四核ARM Cortex-A76与四核ARM Cortex-A55的CPU架构,主频高达2.4GHz,内置6TOPS算力的NPU,这一设计让它能够轻松驾驭多种深度学习框架,高效处理各类复杂的AI任务。

    ElfBoard
    05-08 15:01
    1.1k

    米尔基于MYD-YG2LX系统启动时间优化应用笔记

    1.概述MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A55@1.2GHz+Cortex-M33@200MHz处理器,其内部集成高性能3D加速引擎Mail-G31GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600/DDR3L-1333内存控制器、千兆以太网控制器、USB、CAN、

    米尔电子
    05-08 08:07
    401

    运放技术——基本电路分析

    虚短和虚断的概念由于运放的电压放大倍数很大,一般通用型运算放大器的开环电压放大倍数都在80dB以上。而运放的输出电压是有限的,一般在10V~14V。因此运放的差模输入电压不足1mV,两输入端近似等电位,相当于“短路”。开环电压放大倍数越大,两输入端的电位越接近相等。“虚短”是指在分析运算放大器处于线性状态时,可把两输入端视为等电位,这一特性称为虚假短路,简称

    张飞实战电子官方
    05-07 19:32
    553

    飞凌嵌入式携手中移物联,谱写全国产化方案新生态

    4月22日,飞凌嵌入式“2025嵌入式及边缘AI技术论坛”在深圳成功举办。中移物联网有限公司(以下简称“中移物联”)携OneOS操作系统与飞凌嵌入式共同推出的工业级核心板亮相会议展区,操作系统产品部高级专家严镭受邀作《OneOS工业操作系统——助力国产化智能制造》主题演讲。

    飞凌嵌入式
    05-07 11:26
    1.7k

    ATA-2022B高压放大器在螺栓松动检测中的应用

    实验名称:ATA-2022B高压放大器在螺栓松动检测中的应用实验方向:超声检测实验设备:ATA-2022B高压放大器、函数信号发生器,压电陶瓷片,数据采集卡,示波器,PC等实验内容:本研究基于振动声调制的螺栓松动检测方法,其中低频泵浦波采用单频信号,而高频探测波采用扫频信号,利用泵浦波和探测波在接触面的振动声调制响应对螺栓的松动程度进行检测。通过螺栓松动检测

    Aigtek安泰电子
    05-06 18:44
    1.1k

    MOS管驱动电路——电机干扰与防护处理

    此电路分主电路(完成功能)和保护功能电路。MOS管驱动相关知识:1、跟双极性晶体管相比,一般认为使MOS管导通不需要电流,只要GS电压(Vbe类似)高于一定的值,就可以了。MOS管和晶体管向比较c,b,e—–>d(漏),g(栅),s(源)。2、NMOS的特性,Vgs大于一定的值就会导通,适合用于源极接地时的情况(低端驱动),只要栅极电压达到4V或10V就可以

    张飞实战电子官方
    05-06 19:34
    586