DAVE编写XMC1402的CAN程序

控诉Infineon歧视XMC1402!!

XMC1402有两路MultiCAN+,然而DAVE4.4.2的XMC1402预设中,CAN_NODE App并没有对1402支持。这好吗?这不好。能用软件解决的问题绝不改硬件,这是半桶水工程师的倔强!

硬件是XMC1402T038X0128,DAVE版本4.4.2,CAN_NODE App版本4.1.20。下面开始操作

====================================

1、新建1402的DAVE CE工程A,再新建一个1404的DAVE CE工程B。在A中添加一个Clock_XMC App,生成代码。在B中添加CAN_NODE App,配置一下参数也可以之后手动配。默认情况下CAN_NODE App是自带的,如果没有可以在下图处安装或者更新到最新版本。

添加App后自动生成代码,接着将B中工程文件夹下的DAVE-Generated-CAN_NODE和GLOBAL_CAN复制到A的相同位置。可在DAVE中直接进行复制粘贴操作。

注:这里如果只添加一个CAN_NODE,DAVE会自动选择到CAN1下的RXDH组合,即P1.3接收,P1.2发送的模式,这是由NPCRx寄存器的RXSEL位决定的,具体的写入位置在can_node_conf.c中,CAN_NODE0结构体下的rx_signal属性,它为7,即111B。

 

 

====================================

2、现在表面上看,两个工程都一样了,但还需要一些代码的改动。首先是DAVE.h中加入can相关头文件

#include "GLOBAL_CAN/global_can.h"


#include "CAN_NODE/can_node.h"

 

接着DAVE.c中加入can初始化代码段

  if (init_status == DAVE_STATUS_SUCCESS)
  {
	 /**  Initialization of CAN_NODE APP instance CAN_NODE_0 */
	 init_status = (DAVE_STATUS_t)CAN_NODE_Init(&CAN_NODE_0);
   }

 

这时编译,global_can.h中会报错,来源是在xmc_can.h中声明的各种变量和结构体都未定义,说明xmc_can.h并没有被编译,但这个头文件是被包含在工程路径中的,所以这种情况大概率是#if相关的原因。打开xmc_can.h,注意105行的#if defined(CAN),这个CAN在工程A中是无法跳转的。转到工程B,发现在XMC1400.h的8832行:

#if (UC_DEVICE == XMC1403) || (UC_DEVICE == XMC1404)
#define CAN                             ((CAN_GLOBAL_TypeDef                *) CAN_BASE)

1402气抖冷。从A工程中打开XMC1400.h(位置是\Libraries\CMSIS\Infineon\XMC1400_series\Include),给他加入1402成为:

#if (UC_DEVICE == XMC1403) || (UC_DEVICE == XMC1404) || (UC_DEVICE == XMC1402)
#define CAN                             ((CAN_GLOBAL_TypeDef                *) CAN_BASE)

文件比较大,搜索一下“1403”就能直接跳到8832行。

 

这时编译,xmc_can.h中的变量不再未定义了,但在354行还有个错误是#if !defined(MULTICAN_PLUS)相关的。故技重施,发现xmc_device.h中,XMC1402全系设备都没有#define MULTICAN_PLUS的定义,1402再次受到迫害。这个头文件位置在\Libraries\XMCLib\inc。在A工程对应设备中加入这一句。

 

做完以上改动之后,就能编译成功了!还没有进行实验,若有问题再更新。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
英飞凌XMC1300是一款高性能的微控制器,其程序烧录过程简单而高效。 首先,我们需要准备好烧录设备,如USB转串口模块、编程器等。将烧录设备连接到计算机,并确保设备驱动程序已正确安装。 接下来,我们需要选择合适的烧录软件。对于英飞凌XMC1300,我们可以使用英飞凌提供的官方软件Davinci作为烧录工具。打开Davinci软件后,我们需要选择适用于XMC1300的烧录器件。 在烧录准备阶段,我们需要将目标芯片的Boot Mode设置为烧录模式。通常情况下,我们可以通过将芯片上的BOOT0引脚连接到高电平,或通过芯片上的引脚设置跳线来完成这一步骤。 然后,我们需要选择烧录文件。烧录文件一般以.hex或.bin格式存在,包含了要烧录到芯片中的程序代码。在Davinci软件中,我们可以通过导入烧录文件来完成此步骤。 在烧录过程中,我们需要选择正确的通信接口和烧录速度。对于XMC1300,常用的通信接口有SWD和JTAG,我们可以选择其中一种来与目标芯片进行通信。此外,我们还需设置合适的烧录速度,以确保稳定的数据传输。 最后,我们点击“烧录”按钮,开始烧录过程。在烧录过程中,Davinci软件将通过烧录设备将程序代码逐步写入目标芯片的闪存中。烧录进度会在软件界面中显示,待烧录完成后,我们可以断开烧录设备与目标芯片的连接。 总的来说,英飞凌XMC1300的程序烧录过程涉及准备烧录设备、选择烧录软件、设置 Boot Mode、选择烧录文件、选择通信接口和烧录速度,并通过烧录设备将程序代码写入目标芯片中。完成这些步骤后,我们就可以顺利烧录XMC1300的程序代码,使其开始工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值