历史上的今天
返回首页

历史上的今天

今天是:2024年09月02日(星期一)

正在发生

2018年09月02日 | STM32之CAN控制器

2018-09-02 来源:eefocus

1、CAN只具有CAN_High和CAN_Low两条信号线,CAN是以差分信号的形式进行通信的; 
2、CAN通信有两种网络:一种是遵循ISO11898标准的高速短距离闭环网络,它的总线最大长度为40m,通信速度最高位1Mbit/s;另外一种是遵循ISO11519-2标准的低速远距离开环网络,最大传输距离为1km,最高通信速率为125kbit/s。 
3、CAN的通信节点由一个CAN控制器、一个CAN接收器组成;STM32的CAN接口即为CAN控制器,为了构成完整的节点,还要外接一个CAN收发器。 
4、差分信号,即信号的逻辑0和逻辑1由两根差分信号线的电压差来表示。 
ISO11898规定CAN协议中处于逻辑1(隐性电平)时,CAN_High和CAN_Low线上的电压均为2.5V,即电压差Vh-Vl=0V。而在逻辑0(显性电平)时,CAN_High的电平为3.5V,CAN_Low线的电平为1.5V,即他们的电压差为Vh-Vl=2V。 
5、在CAN总线中,必须处于隐性电平(逻辑1)或显性电平(逻辑0)中的一个状态。假如有两个CAN通信节点,在同一时间,一个输出隐性电平,另一个输出显性电平,总线的“线与”特性将使它处于显性电平状态,即可以认为显性具有优先的意味。 
6、CAN一共有5种类型的帧(报文):数据帧(用于发送单元向接收单元传送数据的帧)、遥控帧(用于接收单元向具有相同ID的发送单元请求数据的帧)、错误帧(用于当检测出错误时向其他单元通知错误的帧)、过载帧(用于接收单元通知其尚未做好接收准备的帧)、帧间隔(用于将数据帧及遥控帧与前面的帧分离开来的帧); 
7、数据帧是在CAN通信中最主要、最复杂的报文;数据帧以一个显性位(逻辑0)开始,以7个连续的隐形位(逻辑1)结束。在它们之间,分为仲裁段、控制段、数据段、CRC段和ACK段。 
7.1、仲裁段的内容主要为本数据帧的ID信息。数据帧分为标准格式和扩展格式两种,区别就在于ID信息的长度,标准格式的ID为11位,扩展格式的ID为29位。 
在CAN协议中,ID起着重要的作用,它决定真数据帧发送的优先级,也决定着其他设备是否会接收这个数据帧。 
仲裁段除了报文ID外,还有RTR、IDE、SRR位。其中RTR(Remote Transmission Request)位用于区分数据帧和遥控帧的,在数据帧里这一位为显性(逻辑0)。IDE(Identifier Extension)位用于区分标准格式与扩展格式的,在标准格式中为显性,在扩展格式里为隐性。SRR(Substitute Remote Request)位只存在于扩展格式,它用于替代标准格式中的RTR位。SRR位为隐性位,由于RTR在数据帧为显性位,所以在两个ID相同的标准格式报文与扩展格式报文中,标准格式的优先级较高。 
7.2、在控制段的r1和r0为保留位,默认设置为显性位。最主要的为DLC段,DLC段由4位组成,MSB先行,它的二级制编码用于表示本报文中的数据段含有多少个字节,DLC段表示的数字为0~8; 
7.3、数据段为数据帧的核心内容,它由0~8个字节组成,MSB先行; 
7.4、CAN的报文包含了一段15位的CRC校验码,一旦接收端计算出CRC跟接收到的CRC码不同,则会向发送端反馈出错信息以及重新发送。CRC部分的计算和出错处理一般由CAN控制器硬件完成或由软件控制最大重发数;在CRC校验码之后,有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段隔开。 
7.5、ACK段包括一个ACK槽位和ACK界定符位。 
8、CAN协议把每一位的时序分解为SS段、PTS段、PBS1段和PBS2段,这四段的长度加起来即为一个CAN数据位的长度。分解后最小的时间单位是Tq,而一个完整的位由8~25个T区组成。 
8.1、SS段为同步段,若总线的跳变沿被包含在SS段的范围之内,则表示节点与总线的时序同步。节点与总线同步时,采样点采集到的总线电平即可被确定为该位的电平。SS段的大小为1Tq。 
8.2、PTS段为传播时间段,这个时间段用于补偿网络的物理延时时间,是总线上输入比较器延时和输出驱动器延时总和的两倍。PTS段的大小为1~8Tq; 
8.3、PBS1段为相位缓冲段,主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长。PBS1段的初始大小可以为1~8Tq; 
8.4、PBS2段为另一个相位缓冲段,也是用来补偿边沿阶段误差的,它的时间长度在重新同步时可以缩短。PBS2段的初始大小可以为2~8Tq。 
9、STM32的所有型号芯片中都具有不行CAN控制器(Basic Extend CAN),它支持CAN协议2.0A和2.0B。bxCAN接口可以自动地接收和发送CAN报文,支持标准标识符和扩展标识符。它具有3个发送邮箱,发送报文的优先级可以使用软件,可以记录发送的时间。有两个3级深度的接收FIFO,可以使用过滤功能只接收或不接收某些ID号的报文。可以配置成自动重发。不支持使用DMA进行数据收发。

推荐阅读

史海拾趣

驰芯微(CHIPWISE)公司的发展小趣事

近年来,国际环境复杂多变,某些国家对我国进行“芯片限制”。然而,这一限制反而为驰芯微带来了机遇。在“芯片限制”的背景下,更多国内车企开始寻求与国内芯片企业的合作。驰芯微凭借其在车规级芯片领域的丰富经验和卓越性能,成功获得了多家车企的青睐。公司抓住这一机遇,加大了与车企的合作力度,进一步巩固了其在行业中的地位。

ADDtek公司的发展小趣事

近年来,国际环境复杂多变,某些国家对我国进行“芯片限制”。然而,这一限制反而为驰芯微带来了机遇。在“芯片限制”的背景下,更多国内车企开始寻求与国内芯片企业的合作。驰芯微凭借其在车规级芯片领域的丰富经验和卓越性能,成功获得了多家车企的青睐。公司抓住这一机遇,加大了与车企的合作力度,进一步巩固了其在行业中的地位。

全鹏(CHAMPION)公司的发展小趣事

全鹏公司一直重视研发和创新。为了不断满足市场需求,公司投入大量资源用于新技术和新产品的研发。通过引进高素质、高学历的研发人员,建立先进的研发实验室和测试中心,全鹏公司在产品研发方面取得了显著成果。这些新技术和新产品的推出不仅提升了全鹏公司的市场竞争力,也为客户带来了更好的使用体验。

Global Power Technologies Group公司的发展小趣事
对于功率较大的电路,需要考虑散热问题,避免元件过热损坏。
Atmel (Microchip)公司的发展小趣事

Atmel公司自1984年成立以来,便专注于微控制器及相关技术的研发。在创业初期,公司凭借其深厚的技术积累,成功开发出了基于8051内核的8位元Flash微控制器,这在当时是一个重大的技术突破。这一产品的推出,不仅奠定了Atmel在微控制器领域的地位,也为公司的后续发展奠定了坚实的基础。

大毅科技公司的发展小趣事

大毅科技于1989年成立,是台湾的一家新兴企业。在公司成立的初期,大毅科技就专注于晶片电阻的研发与生产,这在当时是一个相对新兴且竞争激烈的领域。创始人凭借对技术的深刻理解和敏锐的市场洞察力,带领公司逐步在市场中站稳脚跟。通过不断的技术创新和产品优化,大毅科技逐渐获得了客户的认可,并在行业中树立了自己的品牌。

问答坊 | AI 解惑

一种小功率单级功率因数校正电路

摘要:讨论一种单级功率因数校正电路的原理,并分析其实验结果。对于较小功率的变换器,若采用复杂的功率因数校正电路来提高源侧功率因数,会导致成本增加,失去应用价值。本文所讨论的电路为采用升压电感和双正激电路组合的方式,完成功率因数校正 ...…

查看全部问答>

开关功率MOS扫盲篇

在使用MOS管设计开关电源或者马达驱动电路的时候,大部分人都会考虑MOS的导通电阻,最大电压等,最大电流等,也有很多人仅仅考虑这些因素。这样的电路也许是可以工作的,但并不是优秀的,作为正式的产品设计也是不允许的。 下面是我对MOSFET及MOSF ...…

查看全部问答>

CCBN2010随想:DiiVA和WAPI国标何去何从

CCBN2010开展了,笔者上午走访了多家厂商,同许多技术人员交流,发现大家对DiiVA和WAPI两大标准都持不乐观态度,甚至有的技术人员表示不知道DiiVA和WAPI。 凌旭(Synerchip)已经提供DiiVA传送器IC与接收器IC给消费电子(CE)厂商进行产品研发应用,早 ...…

查看全部问答>

视频采集模块。

有哪位牛人拿单片机做过视频或是图像采集的,期待指点下在下,期待交流。392630827  具体Q上谈。…

查看全部问答>

VXworks wdStart()的最小延时单位

请问: VXworks 中调用看门狗定时器wdStart(timerID, delayTicks)的时候,delayTicks允许的最小值是多少?0可以吗? 我查了大量的资料,没有找到资料说明这个问题。请高手解答。…

查看全部问答>

TAPI编程里面这个消息是什么?

对方打来电话,然后我不接听,等对方挂断,这样会产生哪个消息?? LINECALLSTATE_DISCONNECTED产生不了.不过我觉得应该有个别的消息啊.…

查看全部问答>

串口如何正确发送接收数组?(附程序)

#include    #include           #define INBUF_LEN 5 //数据长度          unsigned char ch;       bit read_flag= 0 ;   &n ...…

查看全部问答>

伟福V8仿真调试Winbond77E58不能正常使用片上1K外部存贮器的问题

我用伟福V8/L仿真调试Winbond77E58板子, W77E58有片上1K外部存贮器,我不知是我的编译环境设置不对, 还是伟福不能仿真片上1K外部存贮器?在下面的程序中,将 int xdata iii; 改为: int data iii; 就正常。 调试下列程序, ------- ...…

查看全部问答>

如何ARM做MP3和JPG解码

我用ARM做MP3和JPG解码. 发现效果不好. 请问哪里有比较好的纯C代码的软件解MP3或jpg代码?…

查看全部问答>

c6747 UART使用EDMA传输方式求解

tms320c6747 uart传输fifo是16bytes。当我使用EDMA方式时,一次发送大于16个字符,16以后的就会丢失。分开成多个部分发送也不行,前面部分等于16字节,最后一部分小于等于16,只发送了第一部分。请教怎么控制发送全部数据。之间不能加入等待,否则 ...…

查看全部问答>