0.目录
-
项目要求
-
板卡介绍
-
开发环境
-
功能实现
-
成果展示
-
心得体会
-
附件
1.项目要求
设计一个呼吸灯,通过旋转板卡上的电位计,改变呼吸灯闪烁速率,同时将ADC采集的数据通过串口/CAN,发送到另一台设备上显示。
2.板卡介绍
AURIX TM TC275 lite 套件配备了基于 32 位单芯片 AURIX TM TriCore TM的微控制器 Aurix TM TC275。它可以与一系列开发工具一起使用,包括 AURIX TM Development Studio、英飞凌免费的基于 Eclipse 的 IDE,或来自 Hightec/PLS/Infineon 的基于 Eclipse 的“FreeEntryToolchain”。
3.开发环境
本次任务使用英飞凌AURIX Development Studio,AURIX™ Development Studio是专为TriCore MCU系列设计的集成开发环境,在eclipse环境下支持使用C语言和英飞凌底层驱动库(iLLD)开发,对多核心进行在线调试。
4.功能实现
根据项目要求,将任务分为ADC信号采集、串口通信与呼吸灯三部分。
4.1 ADC信号采集
ADC信号采集参考ADC_Single_Channel_1_KIT_TC275_LK例程,电位计位于ADC0的0通道,与例程中相同。
在例程中调整电位计值可以控制LED灯的闪烁,由于我们不需要该功能,可将LED闪烁部分删去,增加返回值conversionResult.B.RESULT便于在主函数中处理ADC的采样值。
/* This function retrieves the conversion value and indicates it by LEDs */
unsigned int indicateConversionValue(void)
{
Ifx_VADC_RES conversionResult;
/* Retrieve the conversion value until valid flag of the result register is true */
do
{
conversionResult = IfxVadc_Adc_getResult(&g_vadcBackgroundScan.adcChannel);
}
while (!conversionResult.B.VF);
return conversionResult.B.RESULT;
}
4.2 串口发送
串口发送参考例程UART_VCOM_1_KIT_TC275_LK,使用虚拟串口功能。串口配置无需修改,使用115200波特率。
使用sprintf()函数对输出字符串进行整合,并修改例程中的send_UART_message()函数,达到实现传入特定字符串的功能。
void send_UART_message(char *txData)
{
Ifx_SizeT count = (strlen(txData) - 1); /* Size of the message */
IfxAsclin_Asc_write(&g_asc, txData, &count, TIME_INFINITE); /* Transfer of data */
}
4.3 呼吸灯
呼吸灯参考例程GTM_TOM_PWM_1_KIT_TC275_LK。在fadeLED()函数中FADE_STEP变量负责控制PWM的步进值,修改fadeLED()函数,将ADC的采样值来控制PWM的呼吸速率。
void fadeLED(unsigned int FADE_STEP)
{
if((g_fadeValue + FADE_STEP) >= PWM_PERIOD)
{
g_fadeDir = -1; /* Set the direction of the fade */
}
else if((g_fadeValue - FADE_STEP) <= 0)
{
g_fadeDir = 1; /* Set the direction of the fade */
}
g_fadeValue += g_fadeDir * FADE_STEP; /* Calculation of the new duty cycle */
setDutyCycle(g_fadeValue); /* Set the duty cycle of the PWM */
}
4.4 代码整合
将上述代码统一放入到主函数中进行处理,主函数代码如下:
char TxBuf[50];
uint16 count;
unsigned int adc_value;
int core0_main(void)
{
IfxCpu_enableInterrupts();
/* !!WATCHDOG0 AND SAFETY WATCHDOG ARE DISABLED HERE!!
* Enable the watchdogs and service them periodically if it is required
*/
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
/* Wait for CPU sync event */
IfxCpu_emitEvent(&g_cpuSyncEvent);
IfxCpu_waitEvent(&g_cpuSyncEvent, 1);
/* Initialize GTM TOM module */
initGtmTomPwm();
/* Initialize the LED port pin */
//initLED();
while(1)
{
if(count>=30){
count = 0;
adc_value = indicateConversionValue();
sprintf(TxBuf, "ADC_Value = %.4fV\r\n", adc_value*3.3/4095);
send_UART_message(TxBuf);
}
else{
count++;
}
fadeLED(adc_value);
waitTime(IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, 10));
}
return (1);
}
5.成果展示
视频见B站演示。
6.心得体会
-
AURIX Development Studio基于eclipse,上手简单,调试功能强大。
-
导入工程时容易出现网络问题失败,需要前往github先下载例程后手动导入。
7.附件
百度网盘
链接:https://pan.baidu.com/s/1ijLcKTiecCU4tAcsSD6GqQ?pwd=owrl
提取码:owrl