在STM32F407中,两个CAN控制器在APB1总线上,CAN控制器有预分频器,APB1总线的时钟信号PCLK1经分频后得到fcan。 位段1(Bit Segment 1,BS1):定义了采样点的位置。在BS1结束的时间点对总线采样,得到的电平就是这个位的电平。BS1的初始长度是1到16个tq,但它的长度可以在再同步(resynchronization)的时候被自动加...
我们用采集点为80%,所以BS1为4tq,BS2为2tq,分频系数为12,代进公式Fpclk1/((CAN_BS1+CAN_BS2+1)*CAN_Prescaler)=42M/(4+2+1)/12=500kHz 例子2:我们要配置成1M Hz,那么我们这样配置 我们用采集点为75%,所以BS1为3tq,BS2为2tq,分频系数为7,代进公式Fpclk1/((CAN_BS1+CAN_BS2+1)*CAN_Presc...
注意//#define CAN_BS1_3tq ((uint8_t)0x02) /*!< 3 time quantum */ 拨特率10K,公式:72MHZ/2/200/(1+9+8)=0.01,即10K,和SJA1000测试通过 === 120欧姆电阻要加上!!! CAN->BTR = (u32)((u32)CAN_InitStruct->CAN_Mode << 30) | ((u32)CAN_InitStruct->CAN_SJW << 24) | ((...
STM32把传播时间段和相位缓冲段1(STM32称之为时间段1)合并了,所以STM32的CAN一个位只有3段:同步段(SYNC_SEG)、时间段1(BS1)和时间段2(BS2)。STM32的BS1段可以设置为1~16个时间单元,刚好等于我们上面介绍的传播时间段和相位缓冲段1之和。 STM32的CAN位时序: 知道BS1和BS2的设置,以及APB1的时钟频率(一...
STM32的CAN外设位时序中只包含3段,分别是同步段SYNC_SEG、位段BS1及位段BS2,采样点位于BS1及BS2段的交界处。其中SYNC_SEG段固定长度为1Tq,而BS1及BS2段可以在位时序寄存器CAN_BTR设置它们的时间长度,它们可以在重新同步期间增长或缩短,该长度SJW也可在位时序寄存器中配置。 理解STM32的CAN外设的位时序时,可以...
CAN_InitStructure.CAN_BS1=CAN_BS1_3tq; CAN_InitStructure.CAN_BS2=CAN_BS2_2tq; CAN_InitStructure.CAN_Prescaler=60; 专用词汇名称在这里就不多讲解了,现在给出个公式: 8 (晶振) x 9 (PLL倍频) / 2 (APB1分频) / 60 / (1 + 3 + 2) = 0.1 = 100 (K) ...
• 位段 1(BS1) :定义采样点的位置。其持续长度可以在 1 到 16 个时间片之间调整 • 位段 2(BS2) :定义发送点的位置。其持续长度可以在 1 到 8 个时间片之间调整 • 同步跳转宽度( SJW ):定义位段加长或缩短的上限。它可以在 1 到 4 个时间片之间调整 CAN 总线波特率和 tq (Time Quantum),...
我们现在来看下上一节提到的位段1和位段2。CAN总线控制器将位时间分为3个部分。 • 同步段(Synchronization segment),记为SYNC_SEG。该段占用1个时间单元(1 × ����)。 • 位段1(Bit segment 1),记为BS1。该段占用1到16个Tq(由位时序寄存器配置)。相对于CAN协议而言, BS1相当于传播时间...
1,回环模式;CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;//重新同步跳跃宽度为个时间单位CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; //时间段 1 占用 8 个时间单位CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;//时间段 2 占用 7 个时间单位CAN_InitStructure.CAN_Prescaler=5; //分频系数(Fdiv)CAN_Init(CAN1, ...
STM32 的 CAN 外设位时序中只包含 3 段,分别是同步段 SYNC_SEG、位段 BS1 及位段 BS2,采样点位于 BS1 及 BS2 段的交界处。其中 SYNC_SEG 段固定长度为 1Tq,而 BS1 及 BS2 段可以 在位时序寄存器 CAN_BTR 设置它们的时间长度,它们可以在重新同步期间增长或缩短,该长度SJW 也可在位时序寄存器中配置。