求大神告知,有关STM32F429的CAN时钟是多少,从哪里看

2019-07-21 00:57发布

求大神告知,STM32F429 CAN的时钟具体是多少?从哪里获悉?由下图知道,tq=1/CAN时钟
由RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);知CAN1在APB1时钟线上,那APB1的时钟具体是多少M?
另外,CAN1的时钟可以通过扎波形获悉吗?波特率可以扎出来吗?从哪里扎?
谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
墨染卿卿
1楼-- · 2019-07-21 19:42


CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_4tq,CAN_BS1_6tq,4,CAN_Mode_Normal); 
BRP的赋值是4,照理说,写入寄存器的值是4,计算的时候要按5计算。我已经按照以上的配置,配出1M的CAN波特率,即1bit位的时间为1us,
根据这个反推
如果分频系数按4算:(1+4+6)*4=44M
如果分频系数按5算:(1+4+6)*5=55M
而STM32F429sysclk为180M,APB1最大为45M,因此,分频系数没有加1 
正点原子
2楼-- · 2019-07-21 21:00
回复【8楼】墨染卿卿:
---------------------------------
这个问题,你得问问ST了,呵呵。看看是不是数据手册有误。
lcyituo
3楼-- · 2019-07-21 23:26
/* Set the bit timing register */
    CANx->BTR = (uint32_t)((uint32_t)CAN_InitStruct->CAN_Mode << 30) | 
                ((uint32_t)CAN_InitStruct->CAN_SJW << 24) | 
                ((uint32_t)CAN_InitStruct->CAN_BS1 << 16) | 
                ((uint32_t)CAN_InitStruct->CAN_BS2 << 20) | 
               ((uint32_t)CAN_InitStruct->CAN_Prescaler - 1);

是不是因为这个,在写BTR寄存器的时候实际写的是CAN_Prescaler - 1

一周热门 更多>