1,can周期不稳定是什么原因

电源系统引起、CAN总线系统的链路故障、CAN总线系统的节点故障。1、电源系统引起:汽车电源系统提供的工作电压不正常,会使某些电控模块出现短暂的不正常工作,使整个汽车CAN总线系统通信不畅。2、CAN总线系统的链路故障:会导致多个电控单元工作不正常,使CAN总线系统无法工作。3、CAN总线系统的节点故障:节点是汽车CAN总线系统中的电控模块,软件故障即传输协议或软件程序有缺陷或冲突,从而使汽车CAN总线系统通信出现混乱或无法工作。CAN时钟周期:CAN时钟是由系统时钟分频而来的一个时间长度值,实际上就是一个时间份额Tq。

can周期不稳定是什么原因

2,STM32F0 CAN总线

STM32F0 CAN总线数据转发实验 实验目的: 把CAN总线控制器接收到的数据直接发送出去。包括:标准数据帧、扩展数据帧、标准远程帧、扩展远程帧。 波特率计算方法: 波特率=48000/[(7+8+1)*3]=1Mbps CAN波特率的计算 1.因为CAN的时钟是AHB1外设时钟,这里为8MHZ。 2.根据图上的设置,CAN波特率=8M/Prescaler/(Bit Segment 1+Bit Segment 2+Jump Width) Fcan=8/(8+7+1)=500K 3.这里我们用默认的Normal模式。愿你出走半生,归来仍是少年…

STM32F0 CAN总线

3,can的波特率

can控制器只需要进行少量的设置就可以进行通信,就像RS232那样。其中较难设置的部分就是通信波特率的计算。can总线能够在一定范围内容忍总线上can节点的通信波特率的偏差,这种技能使得can总线有很强的容错性,同时也降低了对每个节点的振荡器精度。 实际上,can总线的波特率是一个范围。假设定义的波特率是250KB/S,但是实际上根据对寄存器的设置,实际的波特率可能为200-300KB/S(具体取决于寄存器的设置)。 简单介绍一下波特率的计算,在can的底层协议里将can数据的每一位时间(TBit)分为许多的时间段(Tscl),这些时间段包括:位同步时间Tsync,时间段1Tseg1,时间段2Tseg2. 其中位同步时间占用1个Tscl;,时间段1占用(Tseg1+1)个Tscl;时间段2占用Tseg2+1个Tscl,所以can控制器的位时间TBit就是: TBit = Tseg1+Tseg2+Tsync=(Tseg1+Tseg2+3)*Tscl,那么can的波特率canbps就是1/TBit。 但是这样计算出的值是一个理论值。在实际的网络通信中由于存在传输的延时,不同节点的晶体的误差等因数,使得网络can的波特率的计算变得复杂起来。can在技术上引入了重同步的概念,以更好的解决这些问题。 这样重同步带来的结果就是要么时间段1(Tseg1)增加TSJW(同步跳转宽度SJW+1),要么时间段减少TSJW,因此can的波特率实际上有一个范围: 1/(TBit+TSJW) <= CANbps <= 1/(TBit-TSJW) CAN波特率的值由以下几个元素决定: 1. 最小时间段Tscl 2. 时间段1 Tseg1 3. 时间段2 Tseg2 4. 同步跳转宽度 SJW 那么Tscl是怎么计算的呢? 这是总线时序寄存器中的预分频寄存器BRP派上了用场,Tscl = (BRP+1)/FVBP,FVBP为微处理器的外设时钟。 tscl = pclk。 Tseg1和Tseg2又是怎么划分的呢? Tseg1和Tseg2的长度决定了CAN数据的采样点,这种方式允许宽范围的数据传输延迟和晶体的误差。其中Tseg1用来调整数据传输延迟时间造成的误差,而Tseg2则用来调整不同点节点晶体频率的误差。 但是他们由于过于灵活,而使初次接触CAN的人有点无所适从。TSEG1与TSEG2的是分大体遵循以下规则: Tseg2≥Tscl2,Tseg2≥2TSJW,Tseg1≥Tseg2 总的来说,对于CAN的波特率计算问题,把握一个大的方向就行了,其计算公式可了规结为: BitRate = Fpclk/( (BRP+1) * ((Tseg1+1)+(Tseg2+1)+1) 最后,我们来说说如何计算波特率。 can总线有两个总线时钟寄存器BTR0、BTR1。can系统时钟公式: tscl = 2*tclk*(32*BRP.5 + 16*BRP.4 + 8*BRP.3 + 4*BRP.2 + 2*BRP.1 +BRP.0 + 1) 其中tclk=1/晶振频率=pclk。 同步跳转宽度: Tsjw = “tscl”*(2*SJW.1 + SJW.0 + 1) 位周期T TBit = Tseg1+Tseg2+Tsync=(Tseg1+Tseg2+3)*Tscl Tseg1 = tscl*(8*TSEG1.3 + 4*TSEG1.2 +2*TSEG1.1 + TSEG1.0 + 1) Tseg2 = tscl*(4*TSEG2.2 +2*TSEG2.1 + TSEG2.0 + 1) CAN波特率=APB总线频率/BRP分频器/(1+tBS1+tBS2)。 比如: 总线时钟寄存器BTR0:0x2,;总线时钟寄存器BTR1:0x14。 TBit = tscl(1+5+2)=8tscl tscl = 2tclk*(3) = 6tclk TBit =48tclk tclk = 1/48000000 TBit = 1/1000000 即can的波特率canbps就是1/TBit=1MHz。

can的波特率


文章TAG:can的时钟是多少can  时钟  多少  
下一篇