我基本的都是按照Infineon-XMC4800_Relax_EtherCat_APP_Slave_SSC-GS-v01_03-EN.PDF这个手册来操作的。下载地址:
https://www.infineon.com/dgdl/Infineon-XMC4800_Relax_EtherCat_APP_Slave_SSC-GS-v01_03-EN.pdf?fileId=5546d462533600a4015398ba3c590a84
本次的目标是搭建开发环境,点个灯。
在英飞凌官网 下载对应的demo程序:
https://www.infineon.com/dgdl/Infineon-XMC4700_Blinky_withApps.zip-GS-v01_00-EN.zip?fileId=5546d46250cc1fdf015139028ae51ed3
根据用户手册, 安装dave4 安装twincat3
Dave 是基于eclipse定制的界面,altera的nios开发,TI的dsp开发都是这一套,还是比较熟悉的,这次才发现dave导入工程的时候,可以直接导入zip压缩包挺方便,以前我没注意过这个功能。
好了,在左侧工程界面,右键 buildproject,编译ok。
点小虫子图标,进入Debug,发现 debug有问题,没进入程序。摸索一会,发现我电脑的jlinkv49.版本太低了。于是下载了jlinkv6.3安装,卸载了jlinkv49,还是有问题。摸索一下,在dave 中打开 windows/preference
更换一个jlink的目录,ok,可以下载,debug,进入断点。好了,现在直接烧写了新的demo程序,复位后是刚下载的demo程序。
到目前为止,安装环境,编译,调试,烧写已经完成。准备进入ECAT。
打开binky led,进入main看一下,很简单。
int main(void)
{
DAVE_STATUS_t status;
uint32_t timer_interval = 1000 * TIMER_MILLISECONDS;
bool button_edge = true;
status = DAVE_Init(); /* Initialization of DAVE APPs */
XMC_DEBUG("hello world\n");
if(status == DAVE_STATUS_FAILURE)
{
/* Placeholder for error handler code. The while loopbelow can be replaced with an user error handler. */
XMC_DEBUG("DAVE APPs initializationfailed\n");
while(1U)
{
}
}
在dave_init右键,进入函数定义看一下:
DAVE_STATUS_t DAVE_Init(void)
{
DAVE_STATUS_t init_status;
init_status = DAVE_STATUS_SUCCESS;
if (init_status == DAVE_STATUS_SUCCESS)
{
/** Initialization of TIMER APP instance TIMER_0*/
init_status = (DAVE_STATUS_t)TIMER_Init(&TIMER_0);
}
if (init_status == DAVE_STATUS_SUCCESS)
{
/** Initialization of DIGITAL_IO APP instanceLED1 */
init_status = (DAVE_STATUS_t)DIGITAL_IO_Init(&LED1);
}
if (init_status == DAVE_STATUS_SUCCESS)
{
/** Initialization of DIGITAL_IO APP instanceBUTTON2 */
init_status = (DAVE_STATUS_t)DIGITAL_IO_Init(&BUTTON2);
}
if (init_status == DAVE_STATUS_SUCCESS)
{
/** Initialization of DIGITAL_IO APP instanceBUTTON1 */
init_status = (DAVE_STATUS_t)DIGITAL_IO_Init(&BUTTON1);
}
if (init_status == DAVE_STATUS_SUCCESS)
{
/** Initialization of INTERRUPT APP instanceINTERRUPT_0 */
init_status = (DAVE_STATUS_t)INTERRUPT_Init(&INTERRUPT_0);
}
return init_status;
} /** End of function DAVE_Init */
这几个button0 button1 led1,正好就是板子上的几个资源,看看这个结构定义,很清晰。
DIGITAL_IO_t LED1 =
{
.gpio_port = XMC_GPIO_PORT5,
.gpio_pin = 9U,
.gpio_config = &LED1_config,
};
XMC_GPIO_CONFIG_t BUTTON2_config =
{
.mode = XMC_GPIO_MODE_INPUT_TRISTATE,
};
DIGITAL_IO_t BUTTON2 =
{
.gpio_port = XMC_GPIO_PORT15,
.gpio_pin = 12U,
.gpio_config = &BUTTON2_config,
};
XMC_GPIO_CONFIG_t BUTTON1_config =
{
.mode = XMC_GPIO_MODE_INPUT_TRISTATE,
};
DIGITAL_IO_t BUTTON1 =
{
.gpio_port = XMC_GPIO_PORT15,
.gpio_pin = 13U,
.gpio_config = &BUTTON1_config,
};
对应板子的丝印很明确
另外这里有一个app dependency功能,看起来很直观,且可以点击进行编辑硬件外设的配置等,很方便。