news 2026/9/3 4:25:48

Aurix TC387 Can配置记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Aurix TC387 Can配置记录

一、MCMCAN介绍

fSYN is supplied from fMCANH and fASYN is supplied from fMCAN from CCU. fSYN is used as the clock source for Register and RAM interface,fASYN is used to generate the nominal and fast CAN FD baudrates. It is recommended to use fASYN as 80, 40, 20 MHz from the Peripheral clock or also from fOSC , in order to achieve commonly used nominal and fast CAN FD baudrates. The condition that fSYN >= fASYN is essential for proper functioning of MCMCAN.

借用TC387的例程,但例程中未设置波特率,未变更CAN引脚,使用的是默认配500K和1M的波特器应该是CANFD测试使用的。需增加如下代码才能设置波特以及变更引脚

1、假如使用P02.0和P02.1引脚用为CAN引脚,先定义引脚如下,后面会调用。

IFX_CONST IfxCan_Can_Pins can02_pins = { &IfxCan_TXD00_P02_0_OUT, IfxPort_OutputMode_pushPull, &IfxCan_RXD00A_P02_1_IN, IfxPort_InputMode_pullUp, IfxPort_PadDriver_cmosAutomotiveSpeed4 };

2、初始化中调用引脚,以及设置波特率

g_mcmcan.canNodeConfig.baudRate.baudrate = 250000; //250KBaud即设置波特率

g_mcmcan.canNodeConfig.pins = &can02_pins;//即更换CAN引脚

void initCAN0(void) { /*******CAN module configuration and initialization*******/ IfxCan_Can_initModuleConfig(&g_mcmcan.canConfig, &MODULE_CAN0); IfxCan_Can_initModule(&g_mcmcan.canModule, &g_mcmcan.canConfig); /*******CAN00 node configuration and initialization*******/ IfxCan_Can_initNodeConfig(&g_mcmcan.canNodeConfig, &g_mcmcan.canModule); g_mcmcan.canNodeConfig.nodeId = IfxCan_NodeId_0; g_mcmcan.canNodeConfig.clockSource = IfxCan_ClockSource_both; g_mcmcan.canNodeConfig.frame.type = IfxCan_FrameType_transmitAndReceive; g_mcmcan.canNodeConfig.frame.mode = IfxCan_FrameMode_standard; //Classic CAN g_mcmcan.canNodeConfig.txConfig.txMode = IfxCan_TxMode_dedicatedBuffers;//IfxCan_MessageIdLength_extended;//IfxCan_TxMode_dedicatedBuffers; g_mcmcan.canNodeConfig.txConfig.dedicatedTxBuffersNumber = 255; g_mcmcan.canNodeConfig.txConfig.txBufferDataFieldSize = IfxCan_DataFieldSize_8; g_mcmcan.canNodeConfig.rxConfig.rxMode = IfxCan_RxMode_dedicatedBuffers; g_mcmcan.canNodeConfig.rxConfig.rxBufferDataFieldSize = IfxCan_DataFieldSize_8; g_mcmcan.canNodeConfig.filterConfig.extendedListSize = 255; //Extended Frame g_mcmcan.canNodeConfig.filterConfig.messageIdLength = IfxCan_MessageIdLength_extended; g_mcmcan.canNodeConfig.messageRAM.extendedFilterListStartAddress = 0x100; //Extended Frame g_mcmcan.canNodeConfig.messageRAM.rxBuffersStartAddress = 0x200; g_mcmcan.canNodeConfig.messageRAM.txBuffersStartAddress = 0x400; g_mcmcan.canNodeConfig.messageRAM.baseAddress = MODULE_CAN0_RAM + NODE0_RAM_OFFSET; g_mcmcan.canNodeConfig.baudRate.baudrate = 250000; //250KBaud //transmit interrupt g_mcmcan.canNodeConfig.interruptConfig.transmissionCompletedEnabled = TRUE; g_mcmcan.canNodeConfig.interruptConfig.traco.priority = ISR_PRIORITY_CAN_TX; g_mcmcan.canNodeConfig.interruptConfig.traco.interruptLine = IfxCan_InterruptLine_0; g_mcmcan.canNodeConfig.interruptConfig.traco.typeOfService = IfxSrc_Tos_cpu0; //receive interrupt g_mcmcan.canNodeConfig.interruptConfig.messageStoredToDedicatedRxBufferEnabled = TRUE; g_mcmcan.canNodeConfig.interruptConfig.reint.priority = ISR_PRIORITY_CAN_RX; g_mcmcan.canNodeConfig.interruptConfig.reint.interruptLine = IfxCan_InterruptLine_1; g_mcmcan.canNodeConfig.interruptConfig.reint.typeOfService = IfxSrc_Tos_cpu0; //binding pin g_mcmcan.canNodeConfig.pins = &can02_pins; IfxCan_Can_initNode(&g_mcmcan.can00Node, &g_mcmcan.canNodeConfig); /*******CAN filter configuration and initialization*******/ g_mcmcan.canFilter.number = 0; g_mcmcan.canFilter.elementConfiguration = IfxCan_FilterElementConfiguration_storeInRxBuffer; g_mcmcan.canFilter.id1 = 0x18ff1101; g_mcmcan.canFilter.rxBufferOffset = IfxCan_RxBufferId_0; IfxCan_Can_setExtendedFilter(&g_mcmcan.can00Node, &g_mcmcan.canFilter); g_mcmcan.canFilter.number = 1; g_mcmcan.canFilter.elementConfiguration = IfxCan_FilterElementConfiguration_storeInRxBuffer; g_mcmcan.canFilter.id1 = 0x18FF1102; g_mcmcan.canFilter.rxBufferOffset = IfxCan_RxBufferId_0; IfxCan_Can_setExtendedFilter(&g_mcmcan.can00Node, &g_mcmcan.canFilter); g_mcmcan.canFilter.number = 2; g_mcmcan.canFilter.elementConfiguration = IfxCan_FilterElementConfiguration_storeInRxBuffer; g_mcmcan.canFilter.id1 = 0x18FF1103; g_mcmcan.canFilter.rxBufferOffset = IfxCan_RxBufferId_0; IfxCan_Can_setExtendedFilter(&g_mcmcan.can00Node, &g_mcmcan.canFilter); }

其中发送函数中需注意:

txData是32位的,所以只需要两组即可发送所有数据。

IfxCan_Can_initMessage(&g_mcmcan.txMsg); g_mcmcan.txMsg.dataLengthCode = IfxCan_DataLengthCode_8;//8 bytes g_mcmcan.txMsg.frameMode = IfxCan_FrameMode_standard; //Classic CAN g_mcmcan.txMsg.bufferNumber = 0; g_mcmcan.txMsg.messageId = 0x0C1E1507; g_mcmcan.txData[0]= RCU_Message1.Engine_Total_Hours; g_mcmcan.txData[1] =(RCU_Message1.Engine_coolant_temperature + 40)| ((RCU_Message1.Engine_Speed*1000/125)<<8) | ((RCU_Message1.Engine_Oil_Pressure/4)<<24); g_mcmcan.txMsg.messageIdLength=IfxCan_MessageIdLength_extended; //Extended Frame while(IfxCan_Status_notSentBusy == IfxCan_Can_sendMessage(&g_mcmcan.can00Node, &g_mcmcan.txMsg, &g_mcmcan.txData[0]) );
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:18:04

python--数据结构--链表

最近会更新很多内容&#xff0c;感兴趣的友友支持一下吧&#xff01;&#xff01;一、链表介绍概述:属于线性结构, 即: 每个节点都有1个父节点(前驱节点) 和 1个子节点(后继节点)链表可以看做是 用链条(一根绳) 把节点连接起来的 一种结构.节点介绍(此处以 单链表举例):由 元素…

作者头像 李华
网站建设 2026/9/3 1:19:43

Python---多线程相关内容

最近会更新很多内容,感兴趣的友友点个关注,支持一下博主吧! 一、线程基本内容 概述: 线程是CPU调度资源的最基本单位, 进程是CPU分配资源的基本单位. 进程 = 可执行程序, 文件. 即: *.exe = 进程, 微信, QQ都是进程. 线程 = 进程的执行路径, 执行单元. 微信这个进程, 可以…

作者头像 李华
网站建设 2026/9/2 4:04:08

吐血推荐8个AI论文平台,助你轻松搞定本科毕业论文!

吐血推荐8个AI论文平台&#xff0c;助你轻松搞定本科毕业论文&#xff01; AI 工具助力论文写作&#xff0c;轻松应对学术挑战 对于正在撰写本科毕业论文的同学们来说&#xff0c;时间紧、任务重是常态。从选题到开题&#xff0c;再到撰写初稿和反复修改&#xff0c;每一个环节…

作者头像 李华
网站建设 2026/8/29 17:05:54

20260106_165519_大模型中的MCP、RAG、Agent定义及关系

MCP、RAG、Agent 是 LLM 应用架构的三大核心组件。 1、MCP&#xff08;Model Control Plane&#xff0c;模型控制平面&#xff09; 定义&#xff1a;管理 LLM 全生命周期的 “调度中枢”&#xff0c;负责模型选型、部署、负载均衡、版本控制、权限管理等。核心价值&#xff1…

作者头像 李华
网站建设 2026/9/3 2:12:36

深度学习毕设项目:基于python深度学习的手势识别数字

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华