本帖为个人原创,初始nxp-mpc5744p,新手上路,采用的是一块官网的开发板(DEVKIT-MPC5744)
官网给出的例程中有关于can通信的调试,再开发板上调试运行没出现问题,串口可以打印hello(can的模式设为回环模式loopback)。在自己调试的过程中重新建立工程,初始化CAN _0(can_0带有高速CAN的收发器,具体电路如下所示)
常遇到No source available for "0x1000000" 的错误,网上查了大量的资源,基本上都没有给出明确的修改方案。花费一晚上的时间,分享给大家:只需改动如下配置即可:官网源代码:
void peri_clock_gating (void) {
MC_ME.RUN_PC[0].R = 0x00000000; /* gate off clock for all RUN modes */
MC_ME.RUN_PC[1].R = 0x000000FE; /* config. peri clock for all RUN modes */
#if !(DEVKIT)
MC_ME.PCTL79.B.RUN_CFG = 0x1; //FlexCAN 0: select peripheral config RUN_PC[1]
MC_ME.PCTL204.B.RUN_CFG = 0x1; //LINFlexD_0: select peripheral config RUN_PC[1]
#else
MC_ME.PCTL77.B.RUN_CFG = 0x1; //FlexCAN 2: select peripheral config RUN_PC[1]
MC_ME.PCTL91.B.RUN_CFG = 0x1; //LINFlexD_1: select peripheral config RUN_PC[1]
#endif
#if !LOOPBACK
MC_ME.PCTL78.B.RUN_CFG = 0x1; //Repeat for FlexCAN 1 if no loopback feature
#endif
}
如果想初始化CAN_0及LINFlexD_1:,将上面代码替换为如下即可:
void peri_clock_gating (void) {
MC_ME.RUN_PC[0].R = 0x00000000; /* gate off clock for all RUN modes */
MC_ME.RUN_PC[1].R = 0x000000FE; /* config. peri clock for all RUN modes */
MC_ME.PCTL79.B.RUN_CFG = 0x1; //FlexCAN 0: select peripheral config RUN_PC[1]
MC_ME.PCTL91.B.RUN_CFG = 0x1; //LINFlexD_1: select peripheral config RUN_PC[1]
}
可能以上方法只能解决一部分问题,在学习的过程中遇到类似的问题,欢迎大家共同交流!