PIC32MZ0512EFF相关的CAN配置

本文介绍了在使用PIC32MZ0512EFF单片机进行CAN通信配置时遇到的问题及解决方案。由于该芯片没有直接的CAN发送和接收寄存器,作者分享了初始化CAN2的完整过程,包括解锁序列、环回模式设置以及接收发送宏的使用。文章旨在帮助读者理解并实现PIC32系列单片机的CAN通信。
摘要由CSDN通过智能技术生成

PIC32MZ0512EFF相关的CAN配置(学习记录)

鉴于PIC相关资料较少,我在这记录分享一下自己经过一段时间的学习试验以后对PIC32系列的CAN的理解。记录不仅仅是分享,同样也是整理归纳查漏补缺的过程。在这个过程中大家互相学习,共同进步。

在使用芯片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个部分展示第一步,第三步和第八步,第四步,第五六七步的代码和我的理解

#第一部分

void CAN2_GPIOPPSConfig(void)
{
   
	SYSKEY = 0x00000000;
    SYSKEY = 0xAA996655;
    SYSKEY = 0x556699AA;
    CFGCONbits.IOLOCK = 0;
    //解锁序列
    //在芯片手册里有说到:正常工作状态下,对PPS管脚映射功能配置失效。要想使用,需要执行一个解锁序列,然后把IOLOCK清零
    C2RXR = 4;
    //把RD4设为C2RX
    RPD5R = 15;
    //把RD5设为C2TX
    CFGCONbits.IOLOCK = 1;
    SYSKEY = 0x00000000;
    //设完PPS后把管脚映射锁置1,把序列清零
    TRISDSET = _PORTD_RD4_MASK;
    //可以写成TRISDbits.TRISD4 = 1;
    TRISDCLR = _PORTD_RD5_MASK;
    //可以写成TRISDbits.TRISD5 = 0;
} 

注:对解锁序列的理解不深,这里就不发表看法了。但还是说一下我实际操作中的现象:

1、我在没有执行解锁序列的情况下也能使用管脚映射功能(这应该和我的配置位设置内容有关联)
2、如果之后要设置为环回模式,请确保所要使用的引脚悬空

#第二部分

void CAN2_ConfigurationMode(void)
{
   
    C2CONbits.REQOP = 4;//配置为配置模式
    while(C2CONbits.OPMOD!=4);//等待配置模式配置完毕
}
void CAN2_LoopMode(void)
{
   
    C2CONbits.REQOP = 2;//配置为环回模式
    while(C2CONbits.OPMOD!=2);//等待环回模式配置完毕
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值