完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在XMC4400 plat2go板上进行 CAN 通信,使用Eclipse ModusToolBox作为IDE。
我已经看过 can_Transmit、can_Receive 和 can_LoopBack 的例子。 我有一个beaglebone连接到XMC4400板,具有物理 CAN 连接,上面的实验效果很好,所以 CAN 连接很好。 现在我想在我的XMC4400和beaglebone之间进行实际的 CAN 传输和接收。 上面提到的 3 个示例,每个示例都专门为自己的用例配置了 XMC 板(在环回模式下只传输/只接收/,所以我必须根据我的用例进行调整。 我所做的一个尝试是根据环回示例调整配置。 我用下面的方式手动修改了 cycfg_perierals.c void init_cycfg_peripherals(void){ XMC_CAN_InitEx(CAN_GLOBAL_HW, CAN_CLOCK_SOURCE, CAN_FREQUENCY_VALUE); if(XMC_CAN_STATUS_SUCCESS == XMC_CAN_NODE_NominalBittimeConfigureEx(CAN_NODE_TX_HW, CAN_NODE_TX_bit_time_config)) { XMC_CAN_NODE_EnableConfigurationChange(CAN_NODE_TX_HW); XMC_CAN_NODE_SetInitBit(CAN_NODE_TX_HW); XMC_CAN_NODE_ReSetAnalyzerMode(CAN_NODE_TX_HW); XMC_CAN_NODE_SetReceiveInput(CAN_NODE_TX_HW, XMC_CAN_NODE_RECEIVE_INPUT_RXDCA);// remove the loopback enabling// XMC_CAN_NODE_EnableLoopBack(CAN_NODE_TX_HW); XMC_CAN_AllocateMOtoNodeList(CAN_GLOBAL_HW, 0, 0); XMC_CAN_MO_Config( CAN_NODE_TX_LMO_0); /* Reset CCE and INIT bit NCR for node configuration. */ XMC_CAN_NODE_DisableConfigurationChange(CAN_NODE_TX_HW); XMC_CAN_NODE_ResetInitBit(CAN_NODE_TX_HW); } if(XMC_CAN_STATUS_SUCCESS == XMC_CAN_NODE_NominalBitTimeConfigureEx(CAN_NODE_RX_HW, CAN_NODE_RX_bit_time_config)) { XMC_CAN_NODE_EnableConfigurationChange(CAN_NODE_RX_HW); XMC_CAN_NODE_SetInitBit(CAN_NODE_RX_HW); XMC_CAN_NODE_ReSetAnalyzerMode(CAN_NODE_RX_HW);// remove the loopback enabling// XMC_CAN_NODE_EnableLoopBack(CAN_NODE_RX_HW); XMC_CAN_AllocateMOtoNodeList(CAN_GLOBAL_HW, 1, 1); XMC_CAN_MO_Config( CAN_NODE_RX_LMO_0); XMC_CAN_MO_SetEventNodePointer( CAN_NODE_RX_LMO_0, XMC_CAN_MO_POINTER_EVENT_RECEIVE, 7U); XMC_CAN_MO_EnableEvent( CAN_NODE_RX_LMO_0, XMC_CAN_MO_EVENT_RECEIVE); /* Reset CCE and INIT bit NCR for node configuration. */ XMC_CAN_NODE_DisableConfigurationChange(CAN_NODE_RX_HW); XMC_CAN_NODE_ResetInitBit(CAN_NODE_RX_HW); } XMC_UART_CH_InitEx(CYBSP_DEBUG_UART_HW, CYBSP_DEBUG_UART_config, false); XMC_UART_CH_SetInputSource(CYBSP_DEBUG_UART_HW, (XMC_UART_CH_INPUT_t)XMC_USIC_CH_INPUT_DX0, CYBSP_DEBUG_UART_DX0_INPUT); XMC_UART_CH_SetSamplePoint(CYBSP_DEBUG_UART_HW, 8U); XMC_USIC_CH_SetFractionalDivider(CYBSP_DEBUG_UART_HW, XMC_USIC_CH_BRG_CLOCK_DIVIDER_MODE_FRACTIONAL, 969U); XMC_USIC_CH_SetBaudrateDivider(CYBSP_DEBUG_UART_HW, XMC_USIC_CH_BRG_CLOCK_SOURCE_DIVIDER, false, 36U, XMC_USIC_CH_BRG_CTQSEL_PDIV, 0U, 15U); XMC_USIC_CH_SetInterruptNodePointer(CYBSP_DEBUG_UART_HW, XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, 0U); XMC_UART_CH_EnableEvent(CYBSP_DEBUG_UART_HW, XMC_UART_CH_EVENT_STANDARD_RECEIVE); XMC_UART_CH_Start(CYBSP_DEBUG_UART_HW);}正在尝试禁用上述环回模式;但这似乎还不够,因为它不起作用。 另外,我尝试使用 DeviceConfigurator,并尝试遵循 can_Transmit 和 can_Receive 示例中的配置(并将它们组合起来以使两者都生效),但到目前为止运气不佳,发现很难将它们组合在一起,也不会错过任何东西。 是否有一个复杂的例子,简单地将传输/接收都设置为实际的 CAN 连接? 我觉得我错过了一些东西,因为它应该是一个常见的用例,但我还没有找到任何明确的示例/教程。 如果你能分享你的想法,不胜感激。 |
|
相关推荐
1个回答
|
|
要在没有环回的情况下同时启用CAN发送和接收,您需要进行以下调整:
1. 在ModusToolbox中打开项目,并转到"Device Configurations"(设备配置)选项卡。 2. 在"Peripheral"(外设)选项卡中,找到"CAN"外设并展开它。 3. 在"CAN Bit Timing"(CAN位时序)部分,选择适当的位时序参数以匹配您所使用的CAN总线的配置。 4. 将"Loop Back Mode"(环回模式)设置为"Disabled"(禁用)。 5. 在"Notification Handler"(通知处理程序)部分,选择您要使用的通知处理程序函数。 6. 在"CAN Message Configuration"(CAN消息配置)部分,为每个需要发送和接收的消息配置对象。 7. 在"Transmitter"(发送器)选项卡中,将"Enable"(启用)设置为"true"(真)以启用发送。 8. 在"Receiver"(接收器)选项卡中,将"Enable"(启用)设置为"true"(真)以启用接收。 9. 在"Pin Configuration"(引脚配置)部分,选择正确的引脚配置以匹配您所使用的引脚连接。 10. 在"Interrupt"(中断)部分,选择正确的中断优先级和中断处理函数。 完成以上调整后,您的XMC4400将能够同时发送和接收CAN消息。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
2 浏览 0 评论
求助:辉芒微芯片 FDM B11GBMH 的信息及开发环境安装
4 浏览 0 评论
731 浏览 0 评论
嵌入式 学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向
629 浏览 0 评论
求助大佬,多位数码管如何同时亮并间隔一段时间再灭?``` ‸
1659 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11284 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-27 11:47 , Processed in 0.500576 second(s), Total 43, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号