在线时间6 小时
UID3727754
注册时间2022-1-27
NXP金币0
该用户从未签到
注册会员
- 积分
- 64
- 最后登录
- 2022-4-16
|
因项目使用kea128 芯片 开始学习和使用kea128 但是不知道就是调不通.
周边的器件是 nxp1044 stb那个管脚用示波器量了一下的确是 低电平.
然后代码是使用苏州大学的那个can库 不过不能成功,然后听人说最好是使用 8M的晶振作为时钟源
就修改了一下
也就是时钟选的8兆晶振, 然后配置500K的通讯速录 也的确使用了外部晶振. 但是卡在CANCTL0_SYNCH 时钟同步里面了.但是不论怎么调试
CTL0时钟同步位都是0 也就是没有同步
我觉得也很奇怪啊,为啥会卡这里? 而且我看到有人发送can帧前也会检测一下这个时钟同步.发送前也会检测但是也是一样的,即使是初始化不去检测这个时钟同步位,后面发送时候检测也是一直没有同步.
当然了如果发送时候不检测同步也行但是马上会卡在CANTBSEL 这个是空 .也就是缓冲区一直找不空的.
//=======================附上部分初始化代码.整体太多估计看着心烦.==================
//配置时钟 外部晶振
p->CANCTL1 &= ~MSCAN_CANCTL1_CLKSRC_MASK;
采样改成1 次 因为听说500k还是一次好
p->CANBTR1 &= ~MSCAN_CANBTR1_SAMP_MASK;
然后对于一个位的几个时间我调整了一下 按照说明 改为 BRP 0 SJW 0 TSEG1 = 7 TSEG2 = 6 计算步骤我就省略了 不过我觉得应该没错.
TSEG
p->CANBTR0 |= MSCAN_CANBTR0_BRP(0); // 模块时钟2分频
p->CANBTR0 |= MSCAN_CANBTR0_SJW(0); // SJW:0+1=1 Tq(1-4)
p->CANBTR1 |= MSCAN_CANBTR1_TSEG2(6); // TSEG2:6+1=7 Tq
p->CANBTR1 |= MSCAN_CANBTR1_TSEG1(7); // TSEG1:15+1=16 Tq
//等待总线通信时钟同步 就是这个地方卡了.
while ((p->CANCTL0 & MSCAN_CANCTL0_SYNCH_MASK) == 0);
|
|