跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. ME05 CAN123 初始化后无法正常收发

ME05 CAN123 初始化后无法正常收发

已定时 已固定 已锁定 已移动 YTM32B1M系列
10 帖子 3 发布者 52 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • lxwL 离线
    lxwL 离线
    lxw
    编写于 最后由 编辑
    #1

    b57cdd31-ac96-44fa-beac-f303126d789d-image.png
    deb77862-0d5b-499f-82aa-ad4fc5e3a98f-image.png
    295e1498-63a4-4217-803b-2f3de5b6d6cf-image.png
    CAN0的config如图,可以正常收发
    CAN1的config如下图,我没有使能错误中断,邮箱大小最开始测试用64测试不成功改到了20
    CAN012345的时钟在另一个文件全部打开了的
    fc7cc354-234b-4fe0-91f0-7e9bbf139b7f-image.png
    ac6c310c-5025-4947-bc88-8c6ad9cf4184-image.png
    e83b882a-bcc4-464f-af9e-bbf86216bd45-image.png
    下图是我发送一条报文产生的错误寄存器
    162a17b4-7f11-4b46-bb21-a196647e312b-image.png
    STB脚我一直给的低,CAN0和CAN1的CAN收发器互换CAN0可以正常工作,CAN1一直不可以工作,不知道为什么,CAN2CAN3也是这样,我看手册上CAN0和CAN1应该是除了引脚没有其它差异的,后面的几路CAN的差异在配置上有邮箱数量不一样,但更改邮箱数量也不可以正常收发。
    我的系统需要至少5路CAN工作
    4f52e4a4-9a17-40c0-ae09-eb1fe8642c52-image.png

    1 条回复 最后回复
    0
    • xianghanX 离线
      xianghanX 离线
      xianghan YunTu
      编写于 最后由 编辑
      #2

      https://forum.ytmicro.com/topic/703/can通信失败fail排查方向指南可以按照这个帖子思路排查

      lxwL 2 条回复 最后回复
      1
      • lxwL 离线
        lxwL 离线
        lxw
        回复了xianghan 最后由 编辑
        #3

        @xianghan我补充一下,非终端节点,不带终端电阻,时钟CAN0和CAN1都用的120Mhz,那么波特率和采样率就可以设置一样的,再者CAN0和CAN1收发器互换了,CAN1的收发器可以在CAN0上工作

        1 条回复 最后回复
        0
        • lxwL 离线
          lxwL 离线
          lxw
          回复了xianghan 最后由 编辑
          #4

          xianghan

          xianghan 在 ME05 CAN123 初始化后无法正常收发 中说:

          https://forum.ytmicro.com/topic/703/can通信失败fail排查方向指南可以按照这个帖子思路排查

          就没下文了?

          1 条回复 最后回复
          -1
          • swustS 离线
            swustS 离线
            swust YunTu
            编写于 最后由 编辑
            #5

            建议抓一下波形,发送一个报文抓取TX可排除软件及MCU问题。量收发器RX脚波形及CANL波形,如果不一致说明CAN1的收发器焊接不良或者硬件连线错误。

            lxwL 1 条回复 最后回复
            0
            • lxwL 离线
              lxwL 离线
              lxw
              回复了swust 最后由 编辑
              #6

              swust 在 ME05 CAN123 初始化后无法正常收发 中说:

              建议抓一下波形,发送一个报文抓取TX可排除软件及MCU问题。量收发器RX脚波形及CANL波形,如果不一致说明CAN1的收发器焊接不良或者硬件连线错误。

              我测了MCU到收发器的 RX有波形 但是 寄存器这边没变化发送报文TX没波形,一直为高,然后那个寄存器错误状态位置位了

              1 条回复 最后回复
              0
              • swustS 离线
                swustS 离线
                swust YunTu
                编写于 最后由 编辑
                #7

                代码能发一下吗?

                lxwL 2 条回复 最后回复
                0
                • lxwL 离线
                  lxwL 离线
                  lxw
                  回复了swust 最后由 编辑
                  #8

                  swust 回帖这里直接粘贴吗

                  1 条回复 最后回复
                  0
                  • swustS 离线
                    swustS 离线
                    swust YunTu
                    编写于 最后由 编辑
                    #9

                    可以上传的,方便发的话

                    1 条回复 最后回复
                    0
                    • lxwL 离线
                      lxwL 离线
                      lxw
                      回复了swust 最后由 编辑
                      #10

                      swust flexcan_state_t flexcanInitConfig1_State;

                      flexcan_user_config_t flexcanInitConfig1 = {
                      .max_num_mb = 64UL,
                      .num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_8,
                      .is_rx_fifo_needed = false,
                      .flexcanMode = FLEXCAN_NORMAL_MODE,
                      .payload = FLEXCAN_PAYLOAD_SIZE_8,
                      .fd_enable = false,
                      .pe_clock = FLEXCAN_CLK_SOURCE_PERIPH,
                      .transfer_type = FLEXCAN_RXFIFO_USING_INTERRUPTS,
                      .bitrate = {
                      .propSeg = 4, /!< Propagation segment/
                      .phaseSeg1 = 6, /!< Phase segment 1/
                      .phaseSeg2 = 2, /!< Phase segment 2/
                      .preDivider = 14, /!< Clock prescaler division factor/
                      .rJumpwidth = 1, /!< Resync jump width/
                      },
                      .bitrate_cbt = {
                      .propSeg = 6, /!< Propagation segment/
                      .phaseSeg1 = 2, /!< Phase segment 1/
                      .phaseSeg2 = 1, /!< Phase segment 2/
                      .preDivider = 0, /!< Clock prescaler division factor/
                      .rJumpwidth = 1, /!< Resync jump width/
                      },
                      .rxFifoDMAChannel=0,
                      .rxFifoDMALastWord=0,
                      .is_enhance_rx_fifo_needed=false,
                      .num_enhance_rx_fifo_filters=0,
                      .num_enhance_rx_fifo_extid_filters=0,
                      .num_enhance_rx_fifo_min_messages=0,
                      };

                      uint32_t CAN_PTCAN_RXMB_INDEX[CAN_PTCAN_RX_MB_NUM] = {

                      0x000,
                      

                      };
                      //for Rx ID
                      uint32_t CAN_PTCAN_RXMB_ID[CAN_PTCAN_RX_MB_NUM] = {
                      0x000,
                      };

                      //for Rx ID mask
                      uint32_t CAN_PTCAN_RXMB_IDMask[CAN_PTCAN_RX_MB_NUM] = {
                      0x7ff,
                      };
                      flexcan_msgbuff_t CanPTCAN_RxPduInfo; //fifo接收缓存

                      pin_settings_config_t g_pin_mux_CAN1[2] = {
                      // CAN1_RX
                      {
                      .base = PCTRLC,
                      .pinPortIdx = 6U,
                      .pullConfig = PCTRL_INTERNAL_PULL_NOT_ENABLED,
                      .passiveFilter = false,
                      .mux = PCTRL_MUX_ALT3,
                      .intConfig = PCTRL_INT_FALLING_EDGE,
                      .clearIntFlag = true,
                      .gpioBase = GPIOC,
                      .digitalFilter = false,
                      },
                      // CAN1_TX
                      {
                      .base = PCTRLC,
                      .pinPortIdx = 7U,
                      .pullConfig = PCTRL_INTERNAL_PULL_NOT_ENABLED,
                      .passiveFilter = false,
                      .mux = PCTRL_MUX_ALT3,
                      .intConfig = PCTRL_DMA_INT_DISABLED,
                      .clearIntFlag = false,
                      .gpioBase = GPIOC,
                      .digitalFilter = false,
                      }
                      };
                      static void CAN_MBConfig(uint8_t CAN_Chanel, uint32_t *mbIndex, uint32_t *CanId, uint32_t *IdMask, uint8_t FilterNum, flexcan_msgbuff_t *messagePduInfo)
                      {
                      uint8_t index = 0;

                      for (index = 0; index < FilterNum; index++)
                      {
                          FLEXCAN_DRV_ConfigRxMb(CAN_Chanel, mbIndex[index], &rxMbStdCfg, CanId[index]);
                          FLEXCAN_DRV_SetRxIndividualMask(CAN_Chanel, FLEXCAN_MSG_ID_STD, mbIndex[index], IdMask[index]);
                          FLEXCAN_DRV_Receive(CAN_Chanel, mbIndex[index], messagePduInfo);
                      }
                      

                      }
                      void Can1_Init()
                      {
                      status_t status1 = STATUS_SUCCESS;
                      status1 |= PINS_DRV_Init(2, g_pin_mux_CAN1);
                      status1 |= FLEXCAN_DRV_Init(CAN1_INST, &PEcanState, &flexcanInitConfig1);
                      FLEXCAN_DRV_InstallEventCallback(CAN1_INST, Can1InterruptCallback, NULL);
                      //使用 Individual Mask,使能 FIFO
                      FLEXCAN_DRV_SetRxMaskType(CAN1_INST, FLEXCAN_RX_MASK_INDIVIDUAL);

                      CAN_MBConfig(CAN1_INST, CAN_PTCAN_RXMB_INDEX, CAN_PTCAN_RXMB_ID, CAN_PTCAN_RXMB_IDMask, CAN_PTCAN_RX_MB_NUM, &CanPTCAN_RxPduInfo);
                      

                      }

                      1 条回复 最后回复
                      0

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      24
                      demo
                      20
                      uds
                      13
                      lin stack
                      12
                      md14
                      6
                      fbl
                      5
                      yt-link
                      5
                      adc模块
                      4
                      Online Users
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门