查看: 6382|回复: 2

[S32] S32K144的CAN通讯配置

[复制链接]

该用户从未签到

2

主题

3

帖子

0

新手上路

Rank: 1

积分
35
最后登录
2018-11-13
发表于 2018-11-3 16:26:06 | 显示全部楼层 |阅读模式
大家好
     参照S32K系统配置,CAN模块配置时使用外部晶振作为时钟源,通讯OK,将时钟源换位40mhz总线时钟后,通讯异常,求教原因
  unsigned long i;
   /* Activate Clock for FlexCAN and PORT */
   PCC_HAL_SetClockMode(PCC, FLEXCAN_0, TRUE);
   PCC_HAL_SetClockMode(PCC, PORT_PORTE, TRUE);
   /* Configure Pin for CAN TX */
   PORT_HAL_SetMuxModeSel(PORTE, 5, PORT_MUX_ALT5);
   PORT_HAL_SetMuxModeSel(PORTE, 4, PORT_MUX_ALT5);
   /* initCAN_0 */
   CAN0->MCR |= CAN_MCR_MDIS_MASK;             /* Make sure FlexCAN module is disabled */
   CAN0->CTRL1 |= CAN_CTRL1_CLKSRC_MASK;      /* CLKSRC=1: The CAN engine clock source is  BUS_CLK (40MHz) */
   CAN0->MCR &= ~CAN_MCR_MDIS_MASK;            /* Enable FlexCAN module by clearing MCR[MDIS] bit  */
   while( (CAN0->MCR & CAN_MCR_LPMACK_MASK) != 0){}   /* Wait until FlexCAN module is out of low power mode */
   while( (CAN0->MCR & CAN_MCR_FRZACK_MASK) == 0){}   /* Wait until FlexCAN goes into freeze mode */
   CAN0->MCR &= ~CAN_MCR_IRMQ_MASK;                     /* 1: Individual Rx Masking and Queue Ennable */
   CAN0->MCR |= CAN_MCR_AEN_MASK   |       /* AEN=1: Abort enabled */
                CAN_MCR_SRXDIS_MASK;       /* Disable self reception */
                                        /* Configuration for CAN bit rate = 500kbps, 16 time quanta for 1 bit */
                                        /* ftq = 16tq * 500kbps = 8MHz */
     CAN0->CTRL1|=CAN_CTRL1_PRESDIV(4);
     CAN0->CTRL1|=CAN_CTRL1_PSEG2(3);
     CAN0->CTRL1|=CAN_CTRL1_PSEG1(3);
     CAN0->CTRL1|=CAN_CTRL1_PROPSEG(6);
     CAN0->CTRL1|=CAN_CTRL1_RJW(3);
     CAN0->CTRL1|=CAN_CTRL1_SMP(1);


    for(i=0; i<32; i++ ) {   /* CAN0: clear 32 msg bufs x 4 words/msg buf = 128 words*/
      CAN0->MB[i].CS = 0;      /* Clear msg buf word */
      CAN0->MB[i].ID = 0;      /* Clear msg buf word */
      CAN0->MB[i].WORD0 = 0;      /* Clear msg buf word */
      CAN0->MB[i].WORD1 = 0;      /* Clear msg buf word */
    }
    for(i=0; i<16; i++ ) {          /* In FRZ mode, init CAN0 16 msg buf filters */
      CAN0->RXIMR[i] = 0xFFFFFFFF;  /* Check all ID bits for incoming messages */
    }
    CAN0->RXMGMASK = 0x1FFFFFFF;  /* Global acceptance mask: check all ID bits */
    CAN0->MB[3].CS = 0x04000000; /* Msg Buf 4, word 0: Enable for reception */
                                                  /* EDL,BRS,ESI=0: CANFD not used */
                                                  /* CODE=4: MB set to RX inactive */
                                                  /* IDE=0: Standard ID */
                                                  /* SRR, RTR, TIME STAMP = 0: not applicable */
                                                     /* Node A receives msg with std ID 0x511 */
    CAN0->MB[3].ID = 0x14440000; /* Msg Buf 4, word 1: Standard ID = 0x111 */

                                                  /* PRIO = 0: CANFD not used */
    CAN0->MCR = 0x0000001F;       /* Negate FlexCAN 1 halt state for 32 MBs */
    while ((CAN0->MCR && CAN_MCR_FRZACK_MASK) >> CAN_MCR_FRZACK_SHIFT)  {}
                   /* Good practice: wait for FRZACK to clear (not in freeze mode) */
    while ((CAN0->MCR && CAN_MCR_NOTRDY_MASK) >> CAN_MCR_NOTRDY_SHIFT)  {}
                   /* Good practice: wait for NOTRDY to clear (module ready)  */

最佳答案

请问修改时钟源的同时,是否修改了分频系数?关于分频系数详见参考手册S32K1XXRM的&quot;53.5.9.7 Protocol timing&quot;章节介绍。 [attach]448587[/attach]
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2018-11-5 11:23:00 | 显示全部楼层
    请问修改时钟源的同时,是否修改了分频系数?关于分频系数详见参考手册S32K1XXRM的"53.5.9.7 Protocol timing"章节介绍。
    Figure 53-6. CAN engine clocking scheme.png

    评分

    参与人数 1 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-6-7 10:10
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    4

    主题

    20

    帖子

    0

    注册会员

    Rank: 2

    积分
    199
    最后登录
    2023-8-23
    发表于 2018-11-19 17:55:30 | 显示全部楼层
    PEclock就是固定的40MHz吗???
    打卡打卡!今天天气不好!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 06:43 , Processed in 0.095418 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表