MCX/A366 CANFD BSP driver support#11609
Conversation
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: bsp_mcxaReviewers: @hywing Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-07-16 14:54 CST)
📝 Review Instructions
|
b484fbd to
cebea70
Compare
|
测试用例不需要提交了,在你的测评文章体现就好了,然后mdk工程不需要提交 |
|
另外可以加个ci看护起来,ci-attach |
a5c14a1 to
8421004
Compare
|
已添加 |
fdc8a41 to
f1f97c9
Compare
这个处理一下,然后drv_can还是没有处理
|
f1f97c9 to
ff229da
Compare
ff229da to
5013be8
Compare
|
lgtm |
f4f6f43 to
c2cd520
Compare
|
@Rbb666 LGTM from reviewers, awaiting your approval. Thanks! |





拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
FRDM-MCXA366(MCXA366)板载 FlexCAN0/1 与 TJA1057 收发器,但当前 MCXA BSP 的 CAN 驱动仅覆盖经典 CAN 基础能力,存在以下缺口:
RT_CAN_USING_CANFD、FD 帧收发及 Loopback 验证。drv_can.c缺少 CAN1 完整初始化、错误恢复与 Normal 模式收发逻辑;pin_mux.c未配置 CAN1 引脚(P1_17 TX / P1_12 RX),can1无法在硬件上工作。MCXA366_flash.scf默认堆仅 1KB,双路 CAN 开启RT_CAN_USING_HDR时rt_can_open()易因堆不足触发断言;GCC 侧rtconfig.py已为 32KB,Keil 需对齐。本 PR 补齐 MCXA 共用 CAN 驱动与 FRDM-MCXA366 板级支持,使社区用户可在该板上进行 CAN-FD 片内回环及 CAN0↔CAN1 外总线互测。
你的解决方案是什么 (what is your solution)
1. 驱动层(
bsp/nxp/mcx/mcxa/Libraries/drivers/drv_can.c)FLEXCAN_FDInit、FD 帧编解码、Loopback / Normal / Listen 模式。_can_recover_bus(),TX 后_can_start_rx()保证双向通信;enableIndividMask = false+ 全局 RX 掩码 0,接受标准帧;_can_dump_err()输出 ESR1/ACKERR,避免无应答时死等。MDIS断言问题。2. 板级引脚(
frdm-mcxa366/board/MCUX_Config/board/pin_mux.c)在
#ifdef BSP_USING_CAN1下增加 CAN1 引脚复用,与 NXP SDKBOARD_InitCANPins一致:3. Keil 链接脚本(
board/linker_scripts/MCXA366_flash.scf)将默认堆由
0x0400(1KB)调整为0x8000(32KB),与 GCCrtconfig.py中__heap_size__=0x8000一致,满足双路 CAN 设备打开时的动态内存需求。4. 使用方式(需在 menuconfig 中启用)
修改
.config后执行:5. 建议验证步骤
canfd_loopback_testcanfd_dual_diagcanfd_dual_test请提供验证的bsp和config (provide the config and bsp)
验证截图
CAN0与CAN1直接短接
PIN-3是电源,不用接。
FDCAN0 环回测试

经典CAN 8字节通信

FDCAN0 <---> FDCAN1

]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up