工具与软件:
TMSF28032 由 125k 的波特率初始化、 并且 在 程序 执行期间、 此 波特 率被切换至 500k 的波特率。 然而、 总线 在 500k 处不是空闲的 、并且 CANES.bit.CCE 不能 设置 为 1、这 会阻止 器件 进入 初始化 模式 、 因此 无法 设置 波特 率。 是否 有 直接 进入 初始化 模式 并 设置 波特 率的解决方案?
目前、 我 已经 尝试 进入 本地 断电 模式 、方法是 访问 CANMC 寄存器的 PDR (CANMC.bit.PDR) 、 然后 退出 本地 断电 模式 以 执行 上电 序列 、 再次重新配置波特率、 但 问题 仍然存在。
下面 是 我的 配置 程序:
(1) 进入 本地 断电 模式
EALLOW;
// 进入 本地 断电 模式
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all ;
ECanaShadow.CANMC.bit.PDR = 1;
ECanaShadow.CANMC.bit.WUBA = 0;
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all ;
EDIS;
(2) 退出 本地 断电 模式
if (ECanaShadow.canes.bit.pda)
{
EALLOW;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all ;
ECanaShadow.CANMC.bit.CCR = 1;
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all ;
ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all;
ECanaShadow.CANTIOC.bit.TXFUNC = 1;
ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all;
ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all;
ECanaShadow.CANRIOC.bit.RXFUNC = 1;
ECanaRegs.CANRIoc.all = ECanaShadow.CANRIoc.all ;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all ;
ECanaShadow.CANMC.bit.SUSP = 1;
ECanaShadow.CANMC.bit.SCB = 1;
ECanaShadow.CANMC.bit.ABO = 1;
ECanaShadow.CANMC.bit.PDR = 0;
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all ;
...配置 波特 率
EDIS;
}