查看: 659|回复: 0

[原创] 【MCXN947 H】4.FDCAN 通讯测试

[复制链接]
  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3437

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9110
    最后登录
    2025-9-17
    发表于 2025-2-21 21:45:12 | 显示全部楼层 |阅读模式
    抽时间继续测试自制N947板卡功能,太喜欢这块MCU了。测试一下板载FDCAN功能。连接如图1所示:
    4-1.jpg
    图1

    CAN芯片使用的是TJA1044,方便调试FDCAN功能,最高支持5Mbps ,原理图如图2所示:
    N947 FDCAN.png
    图2

    软件部分是根据官方SDK修改的,主要是测试该外设功能。实际自己使用的时候可以直接移植。IDE使用的是MCUXpresso IDE, 原厂的IDE越使越好使。
    发送部分修改后代码如下:
    1. frame.id     = FLEXCAN_ID_STD(txIdentifier);
    2.             frame.format = (uint8_t)kFLEXCAN_FrameFormatStandard;
    3.             frame.type   = (uint8_t)kFLEXCAN_FrameTypeData;
    4.             frame.length = (uint8_t)DLC;
    5. #if (defined(USE_CANFD) && USE_CANFD)
    6.             frame.brs = 1U;
    7.             frame.edl = 1U;
    8. #endif
    9.             txXfer.mbIdx = (uint8_t)TX_MESSAGE_BUFFER_NUM;

    10. #if (defined(USE_CANFD) && USE_CANFD)
    11.             txXfer.framefd = &frame;
    12.             (void)FLEXCAN_TransferFDSendNonBlocking(EXAMPLE_CAN, &flexcanHandle, &txXfer);
    复制代码


    在中断部分修改了数据接收,如下:
    1. switch (status)
    2.     {
    3.         case kStatus_FLEXCAN_RxIdle:
    4.             if (RX_MESSAGE_BUFFER_NUM == result)
    5.             {
    6.                 rxComplete = true;
    7.                 FDCAN_RxConfig();
    8.                 for(uint8_t i=0;i<16;i++)
    9.                 {
    10.                  rxdata[i] = frame.dataWord[i];
    11.                 }
    12.             }
    13.             break;

    14.         case kStatus_FLEXCAN_TxIdle:
    15.             if (TX_MESSAGE_BUFFER_NUM == result)
    16.             {
    17.                 txComplete = true;
    18.             }
    19.             break;

    20.         case kStatus_FLEXCAN_WakeUp:
    21.             wakenUp = true;
    22.             break;

    23.         default:
    24.             break;
    25.     }
    复制代码


    确定好仲裁波特率和数据波特率以后,就可以进行测试了。测试结果如图3和图4所示:
    N947 CANT.png
    图3 发送的数据
    N947 CANR.png
    图4 接收的数据

    测试结果正常。
    加油哦
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-18 09:21 , Processed in 0.079863 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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