历史上的今天
今天是: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进行数据收发。
史海拾趣
|
摘要:讨论一种单级功率因数校正电路的原理,并分析其实验结果。对于较小功率的变换器,若采用复杂的功率因数校正电路来提高源侧功率因数,会导致成本增加,失去应用价值。本文所讨论的电路为采用升压电感和双正激电路组合的方式,完成功率因数校正 ...… 查看全部问答> |
|
在使用MOS管设计开关电源或者马达驱动电路的时候,大部分人都会考虑MOS的导通电阻,最大电压等,最大电流等,也有很多人仅仅考虑这些因素。这样的电路也许是可以工作的,但并不是优秀的,作为正式的产品设计也是不允许的。 下面是我对MOSFET及MOSF ...… 查看全部问答> |
|
CCBN2010开展了,笔者上午走访了多家厂商,同许多技术人员交流,发现大家对DiiVA和WAPI两大标准都持不乐观态度,甚至有的技术人员表示不知道DiiVA和WAPI。 凌旭(Synerchip)已经提供DiiVA传送器IC与接收器IC给消费电子(CE)厂商进行产品研发应用,早 ...… 查看全部问答> |
|
请问: VXworks 中调用看门狗定时器wdStart(timerID, delayTicks)的时候,delayTicks允许的最小值是多少?0可以吗? 我查了大量的资料,没有找到资料说明这个问题。请高手解答。… 查看全部问答> |
|
对方打来电话,然后我不接听,等对方挂断,这样会产生哪个消息?? 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; 就正常。 调试下列程序, ------- ...… 查看全部问答> |
|
tms320c6747 uart传输fifo是16bytes。当我使用EDMA方式时,一次发送大于16个字符,16以后的就会丢失。分开成多个部分发送也不行,前面部分等于16字节,最后一部分小于等于16,只发送了第一部分。请教怎么控制发送全部数据。之间不能加入等待,否则 ...… 查看全部问答> |




