Funpack第二季第二期英飞凌Tc275套件的简单运用
一款英飞凌的TC275 板子,设计一个呼吸灯,通过旋转板卡上的电位计,改变呼吸灯闪烁速率,同时将ADC采集的数据通过串口/CAN,发送到另一台设备上显示,用到了板子的io口,定时器延时,adc和uart串口这几个模块
标签
MPU
TC275
英飞凌
大风吹
更新2022-10-10
南开大学
647

Funpack第二季第二期英飞凌Tc275套件的简单运用

一、项目描述

本期是一款英飞凌的TC275 板子,配备了基于 32 位的单芯片,有三个核,频率高达200Mhz,带有4MB 闪存和 LQFP-176的 封装,是一款适用于汽车和工业应用的强大 AURIX™ 微控制器,板子带有LED灯,按键,电位器,以及各种接口, 包括了英飞凌的CAN 收发器 TLE9251VSJ 和 CAN 连接器,Arduino 连接器, Mikrobus 连接器等,自带了片上调试系统,使用英飞凌自家免费的ADS等开发软件可以直接进行调试。我这次完成了任务二,也就是设计一个呼吸灯,通过旋转板卡上的电位计,改变呼吸灯闪烁速率,同时将ADC采集的数据通过串口/CAN,发送到另一台设备上显示。用到了板子的io口,定时器延时,adc和uart串口这几个模块,首先是用stm定时器确定一个延时的参数,每隔一段时间通过翻转连接led灯的io口的输出电平改变led灯的状态,形成了呼吸灯的效果,然后ADC采集板载电位计的电压值,用得到的这个电压值改变led灯翻转的时间间隔,也就是改变了呼吸灯的闪烁频率,因为题目没有给出具体的数值,因此只是将adc转换的结果除以10,当作led灯翻转的时间间隔,最后将转换结果通过串口发送到电脑的串口调试助手显示出来。

二、各功能对应的主要代码片段及说明

                  1、初始化用到的模块,包括LED灯,ADC,UART,具体的初始化代码参考官方库和具体代码。

    /* Initialize LEDs */
    initializeLEDs();

    /* Initialize VADC */
    vadcBackgroundScanInit();

    /* Start the background scan */
    vadcBackgroundScanRun();

    init_ASCLIN_UART();                 /* Initialize the module                  */
    IfxCpu_enableInterrupts();          /* Enable interrupts after initialization */

2、在while循环中,首先通过一个函数得到ADC转换的结果,然后下一个函数中,根据结果改变LED灯翻转的频率,最后就是把ADC转换的结果通过串口发送到电脑上的串口调试助手中显示出来。

    while(1)
    {
        adc_data = Adc_GetValue();
        /* Update the LEDs depending on the measured value */
        indicateConversionValue();
        sprintf(ch, "adc_data:%d\r\n",(int)adc_data);
        Uart_SendStr(ch);
        wait(ticksFor100ms);

    }

blinkLED()这个函数就是实现LED按照指定间隔时间翻转的函数。

void blinkLED(uint16 led_freq)
{
    IfxPort_togglePin(LED1);                                                     /* Toggle the state of the LED      */
    waitTime(IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, led_freq));    /* Wait 500 milliseconds            */
}

indicateConversionValue(void)这个函数得到ADC的转换结果除以10,然后传递给blinkLED()这个函数,以改变LED灯闪烁的频率。ADC的值在0-4095之间,除以10,也就是0到400左右,因此LED翻转的频率大概在0-400毫秒,加上主循环中延时100毫秒,因此LED灯闪烁频率大概在2Hz-10Hz左右。

unsigned int indicateConversionValue(void)
{
    //uint16 led_freq=100;
    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);

    blinkLED(conversionResult.B.RESULT/10);

    return conversionResult.B.RESULT/10;

}

Adc_GetValue(void)函数实现把ADC转换结果返回到主函数中。

uint32 Adc_GetValue(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);

    //blinkLED(conversionResult.B.RESULT/10);

    return conversionResult.B.RESULT;
}

Uart_SendStr(char* str)这个函数实现把指定参数通过串口传递给电脑,在串口调试助手中显示出来。

void Uart_SendStr(char* str){
    Ifx_SizeT len = (Ifx_SizeT)strlen(str);
    IfxAsclin_Asc_write(&g_ascHandle, str, &len, TIME_INFINITE);   /* Transmit data via TX */
}

三、功能展示及说明

Fu3uklXJMS5ePFfY2DMAAhZeT4K4

功能方面通过旋转电位计,LED灯的闪烁频率将发生变化,具体可以参照视频展示的效果。

四、对本次活动的建议

通过这次活动了解了英飞凌的车用mcu及其开发环境,感谢硬禾及得捷举办的活动。祝活动越办越好!

附件下载
1_KIT_TC275_LK.rar
团队介绍
南开大学
团队成员
大风吹
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号