找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[BSP] NUC240官方开发板调试CAN遇到的问题

[复制链接]
跳转到指定楼层
楼主
匿名  发表于 2020-3-14 15:43:32 |只看大图 回帖奖励 |倒序浏览 |阅读模式
      官方NuTiny-EVB-NUC240官方开发板的BSP没有定义PE4=0,和PE2=0,给BSP坑了2天才发现,没有接地的情况CAN_TXD示波器没有波形发出,PE4连接VP230的S脚,这个脚高电平VP230只能够在接受模式,不可以发送数据,请注意请注意,现在CAN发送和接受都正常了,还有BSP can部分接受是过滤掩码的,就是只接受指定报文的ID,
PE4= 0 ;  //NuTiny-EVB-NUC240官方开发板大坑,CAN0收发VP230芯片的S脚,没有接地,收发芯片在接收模式,不能发送
        PE2= 0 ;  //NuTiny-EVB-NUC240官方开发板大坑,CAN0收发VP230芯片的S脚,没有接地,收发芯片在接收模式,不能发送

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

沙发
匿名  发表于 2020-3-14 15:45:46
tCAN->IF[u8MsgIfNum].MCON |= CAN_IF_MCON_UMASK_Msk | CAN_IF_MCON_RXIE_Msk;                        if(u8singleOrFifoLast)         tCAN->IF[u8MsgIfNum].MCON |= CAN_IF_MCON_EOB_Msk;     else         tCAN->IF[u8MsgIfNum].MCON &= (~CAN_IF_MCON_EOB_Msk);      tCAN->IF[u8MsgIfNum].DAT_A1  = 0;     tCAN->IF[u8MsgIfNum].DAT_A2  = 0;     tCAN->IF[u8MsgIfNum].DAT_B1  = 0;     tCAN->IF[u8MsgIfNum].DAT_B2  = 0;                 //下面是掩码, u32IdMask=0x00000000所有报文都接收,u32IdMask=0xFFFFFFFF符合报文ID的才可以接受                 //--------------------------------------------------------                 if(u32IdMask==0)                 {   tCAN->IF[0].MASK1 = 0x00000000;   tCAN->IF[0].MASK2 = 0x00000000>>16;                 }                 else                         {                          tCAN->IF[0].MASK1 = 0xFFFFFFFF;   tCAN->IF[0].MASK2 = 0xFFFFFFFF>>16;                 }                 //---------------------------------------     tCAN->IF[u8MsgIfNum].CREQ = 1 + u8MsgObj;      return TRUE; }
回复 支持 反对

使用道具

板凳
匿名  发表于 2020-3-17 15:08:16
请问你现在是什么问题  是收发芯片在接收模式,不能发送吗?
回复 支持 反对

使用道具

地板
MasterChipGDRM7 发表于 2020-3-17 19:27:20 | 只看该作者
Hi sir,

您提到的问题我们会立即反映给BSP Team,您的响应是我们进步的动力,非常感谢您的反馈,也抱歉耽误您宝贵的时间。
回复 支持 反对

使用道具 举报

5#
assman 发表于 2022-3-3 15:12:16 | 只看该作者
本帖最后由 assman 于 2022-3-3 16:12 编辑

我是用1.2版的,是没有遇到什么问题,CAN0、CAN1收发正常,提供给各位参考

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/


    /* Switch HCLK clock source to Internal RC and HCLK source divide 1 */
    CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));


    /* Enable CAN module clock */
    CLK_EnableModuleClock(CAN0_MODULE);
    CLK_EnableModuleClock(CAN1_MODULE);


    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
    SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;

    /* Set PD multi-function pins for CANTX0, CANRX0 */
    SYS->GPD_MFP &= ~(SYS_GPD_MFP_PD6_Msk | SYS_GPD_MFP_PD7_Msk);
    SYS->GPD_MFP |= SYS_GPD_MFP_PD6_CAN0_RXD | SYS_GPD_MFP_PD7_CAN0_TXD;

    /* Set PD multi-function pins for CANTX1, CANRX1 */
    SYS->GPD_MFP &= ~(SYS_GPD_MFP_PD14_Msk | SYS_GPD_MFP_PD15_Msk);
    SYS->GPD_MFP = SYS_GPD_MFP_PD14_CAN1_RXD | SYS_GPD_MFP_PD15_CAN1_TXD;
    SYS->ALT_MFP2 &= ~(SYS_ALT_MFP2_PD14_Msk | SYS_ALT_MFP2_PD15_Msk);
    SYS->ALT_MFP2 = SYS_ALT_MFP2_PD14_CAN1_RXD | SYS_ALT_MFP2_PD15_CAN1_TXD;


     /* Enable CAN transceiver for Nuvoton board */
     PE->PMD = (GPIO_PMD_OUTPUT << 2*2) | (GPIO_PMD_OUTPUT << 3*2);      // for CAN0
     PE2 = 0;
     PE3 = 0;

     GPIO_SetMode(PE,BIT4,GPIO_PMD_OUTPUT);                                                // for CAN1
     GPIO_SetMode(PE,BIT6,GPIO_PMD_OUTPUT);
     PE4 = 0;
     PE6 = 0;

15680993198900.jpg (103.42 KB, 下载次数: 306)

15680993198900.jpg
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU