打印
[PIC32/SAM]

PIC32MZ0512EFF064关于CAN的外设引脚选择(PPS)问题

[复制链接]
654|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在我用到CAN2的时候我遇到了这个问题,芯片手册上告诉我CAN2RX的外设引脚可以选择为
D9,G6,B8,B15,D4,E3,B7.
我是这样配置的:   
TRISDbits.TRISD9 = 1;C2RXR = 0;
//    TRISGbits.TRISG6 = 1;C2RXR = 1;
//    TRISBbits.TRISB8 = 1;C2RXR = 2;
//    TRISBbits.TRISB15 = 1;C2RXR = 3;
//    TRISDbits.TRISD4 = 1;C2RXR = 4;
//    TRISEbits.TRISE3 = 1;C2RXR = 5;
//    TRISBbits.TRISB7 = 1;C2RXR = 6;
TRISDbits.TRISD5 = 0;RPD5R = 15;

C2CONbits.REQOP = 2;//配置为环回模式
while(C2CONbits.OPMOD!=2);//等待环回模式配置完毕

如上,在我把CAN2RX配置在D9引脚上时,C2CONbits.OPMOD状态位的值会变为相应的模式的值,而在我把它配置在上述其他引脚上时,程序就会卡在   while(C2CONbits.OPMOD!=2);这一步,观察C2CONbits.OPMOD状态位的值一直为4(也就是还在配置状态),在这个问题上困扰2天了

使用特权

评论回复
沙发
beerbar3|  楼主 | 2020-9-24 15:41 | 只看该作者
附上PIC32MZ(EF)的芯片手册链接:http://www.microchip.com.cn/newcommunity/Uploads/Download/Library/60001320c_cn.pdf
相关内容PPS引脚映射在250页

CAN2RX可选择外设引脚.png (116.18 KB )

CAN2RX可选择外设引脚.png

使用特权

评论回复
板凳
beerbar3|  楼主 | 2020-9-25 10:05 | 只看该作者
发生以上的情况,我做出了一些假设。
首先假设软件上有问题:   我下载了hamony3对CAN2配置,
以下是hamony3对CAN2分配引脚的程序
    SYSKEY = 0x00000000;
    SYSKEY = 0xAA996655;
    SYSKEY = 0x556699AA;
    CFGCONbits.IOLOCK = 0;
/* PPS Input Remapping */
    C2RXR = 4;
/* PPS Output Remapping */
    RPD5R = 15;
/* Lock back the system after PPS configuration */
    CFGCONbits.IOLOCK = 1;
    SYSKEY = 0x00000000;

以及检测是否进入环回模式的程序
/* Switch the CAN module to CAN_OPERATION_MODE. Wait until the switch is complete */
    C2CON = (C2CON & ~_C2CON_REQOP_MASK) | ((CAN_OPERATION_MODE << _C2CON_REQOP_POSITION) & _C2CON_REQOP_MASK);
    while(((C2CON & _C2CON_OPMOD_MASK) >> _C2CON_OPMOD_POSITION) != CAN_OPERATION_MODE);

结果很不理想,发生了与之前一样的问题,只有把C2RX脚分配到D9的时候,才能通过检测程序(即环回模式配置完成)

于是我把目标转移到了硬件上,我在两块完全不同(使用的PIC芯片都是PIC32MZ0512EFF064)的PCB板上测试,分别烧写了我写的程序和用hamony3配置的程序,
结果和上面相同,只有把C2RX脚分配到D9的时候,才能通过检测程序

老哥们,江湖救急呀

使用特权

评论回复
地板
beerbar3|  楼主 | 2020-9-25 15:41 | 只看该作者
其实简单来说就是CAN进入配置模式后,再设置成其他模式(环回模式,正常模式等),就卡在while里出不来了

使用特权

评论回复
5
magicmcu| | 2020-11-16 10:13 | 只看该作者
beerbar3 发表于 2020-9-25 15:41
其实简单来说就是CAN进入配置模式后,再设置成其他模式(环回模式,正常模式等),就卡在while里出不来了 ...

在更改其他模式之前,先让CAN停止工作试试。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝