在使用芯片PIC32MZ0512EFF配置CAN初始化的过程中,我遇到了一个问题:这个芯片的CAN部分没有直接供我们使用的发送寄存器和接收寄存器。
下面会描述一下我的解决方法,并说说我的理解。
直接上干货:这里把对CAN2的初始化的全部过程都写出来。每个步骤在后文都会有详细的代码示例。
void CAN2_Init(void)
{
CAN2_GPIOPPSConfig();
//第一步:对CAN2进行引脚分配(PPS映射),以及设置相应的输入输出
C2CONSET = _C2CON_ON_MASK;
//第二步:启用can2模块,也可以写成C2CONbits.ON = 1;
CAN2_ConfigurationMode();
//第三步:顾名思义,就是进入CAN2的配置模式
CAN2_BaudrateInit();
//第四步:配置CAN2的波特率
C2FIFOBA = 0x0000100;
//第五步:设置FIFO起始地址
CAN2_FIFOn();
//第六步:设置FIFO,包括需要用到的FIFO数量以及每个FIFO相应的功能和容量大小
CAN2_FilterMaskInit();
//第七步:设置过滤器和屏蔽器
CAN2_LoopMode();
//第八步:进入CAN2的自检模式(环回模式),当然如果相应引脚与CAN收发器连接了,可以进入正常模式
}
注:后面按顺序分4个部分展示第一步,第三步和第八步,第四步,第五六七步的代码和我的理解
|