单片机/MCU论坛
直播中

刘丽菲

7年用户 932经验值
私信 关注
[问答]

CAN时钟分频器在CANbus模块上不执行任何操作的原因?

我一直在使用 dsPIC33CH128MP506 进行一些 CANbus 通信

它能够进行CAN-FD,并且有两个独立的波特率分频器,用于标称波特率和数据波特率。它们是:C1NBTCFGH
内的BRP(波特率预分频器)(CAN标称位时间配置寄存器高电平)

C1DBTCFGH内的BRP(波特率预分频器)(CAN数据位时间配置寄存器高电平)
两者的范围均为1 - 256。

CANCLKCON(CAN时钟控制寄存器)中还有CANCLKDIV(CAN时钟分频器选择位),其范围为1 - 128。

据我所知,CANCLKDIV 什么也没做。我只使用普通的 CAN,而不是 CAN-FD,C1NBTCFGH 内的 BRP 可以做我期望它做的事情。 我花了一点时间才弄清楚发生了什么,因为波特率太高了。



微控制器是从以前的混合设计中开发的。处理器是 16 位处理器,但 CAN 模块实际上具有 32 位寄存器,其中一对 16 位寄存器以“H”和“L”结尾。我怀疑某些寄存器的某些部分最终未被使用,但这没有被记录下来。

我想知道是否有人见过这样的东西,或者我错过了什么?

回帖(1)

远不及你

2024-1-23 17:01:38
CAN时钟分频器在CANbus模块上不执行任何操作的原因是因为您只使用普通的CAN,而不是CAN-FD。在普通的CAN模式下,数据传输速率由CAN标称位时间配置寄存器中的BRP(波特率预分频器)控制。所以即使CANCLKCON中的CANCLKDIV被设置,它也不会对CAN总线的传输速率产生影响。

在您的情况下,您只需要使用C1NBTCFGH内的BRP来控制标称波特率,它可以执行您所期望的任务。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分