Funpack2-2上位机显示TC275 ADC数据
通过旋转板卡上的电位计,改变呼吸灯闪烁速率,同时将ADC采集的数据通过串口,发送到串口上位机显示
标签
Funpack
TC275
llzx
更新2022-10-09
440

1.简介

      英飞凌TC275芯片是一个功能强大的汽车级嵌入式处理IC,TC275有三个核心性能强大,目前主要用于代替DSP系列的单片机。因为其具有三核的优势,在处理速度方面有DSP无法比拟的优点。这次参与活动,使用TC275板卡,通过旋转板卡上的电位计,改变呼吸灯闪烁速率,同时将ADC采集的数据通过串口,发送到串口上位机显示。

      使用到的开发工具是AURIX Development Studio,板卡功能强大,调试方便。汽车级芯片功能复杂,需要参考的资料除了官方例程,还有TC27D_iLLD文档,以及datasheet。

   本次完成任务二,通过旋转板卡上的电位计,改变呼吸灯闪烁速率,同时将ADC采集的数据通过串口,发送到串口上位机显示

2.硬件电路

      用到的IO口如下图,LED通过IO口P00.5的PWM输出控制亮度和闪烁,ADC输入采集电位器输出电压,通过电位器调节LED的显示亮度和闪烁。

FsUt-swpmKoDJ21IfkJoTQgwCxBE

3.程序说明

3.1初始化函数

      以下函数分别初始化LED PWM输出,ADC模块,串口模块。串口的波特率设置为115200,ADC初始化分辨率为12 Bit。

      英飞凌的库函数和例程十分完善,下面函数可以通过AURIX Development Studio中找到,分别参考了以下三个例程。完善的例程和ILLD参考手册,可以让用户减少初始化的调试时间,有利于产品功能开发,说明文档十分详细,如果想要了解具体的函数,可参考官网Infineon-TC27D_iLLD_UM_1_0_1_12_0-Software-v01_00-EN文档,以及官方的datasheet。当然这样花费的时间肯定会大大加长。

      程序可以通过一个核心实现,实时性要求不高,这里没有用到多核。主程序在CPU0中。

  •    GTM_ATOM_PWM_1_KIT_TC275
  •    ADC_Single_Channel_1_KIT_TC275
  •    UART_VCOM_1_KIT_TC275_LK
Ifx_TickTime ticksFor10ms = IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, WAIT_TIME);
    /* Call the initialization function */
    initGtmATomPwm();
    vadcBackgroundScanInit();
    vadcBackgroundScanRun();
    init_UART();            /* Initialize the module            */

3.2主函数

   主函数功能是循环采集ADC的电压,通过电压大小控制LED闪烁的频率,采集的间隔是10ms,LED闪烁是通过PWM调节的渐变式的变化,所以LED的亮度每10ms更新一次,间隔100次循环,大约1秒钟通过串口发送一次当前ADC的数值到上位机中。

    while(1)
    {
        waitTime(ticksFor10ms);
        t2=indicateConversionValue2();
        while(count2>=100)
        {
            itoa(t2,string,10);
            count1=my_strlen(string);
            for(int a=0;a<6;a++)
            {
                string[count1+a]=string2[a];
            }
            count1=my_strlen(string);
            send_ADC(count1,string);
            count2=0;
        }
        fadeLED2(20+t2/50);
        count2++;

    }

3.3其他的函数说明

   将例程调整一下,PWM输出改为ADC输入控制,这里需要注意g_fadeValue的数值范围。

void fadeLED2(uint16 step)
{
    setDutyCycle(g_fadeValue);
    if(g_fadeValue >= PWM_PERIOD)
    {
        g_fadeDir = -1; /* Set the direction of the fade */
        g_fadeValue=5000;
    }
    else if(g_fadeValue <= 0)
    {
        g_fadeDir = 1;  /* Set the direction of the fade */
        g_fadeValue=0;
    }
    g_fadeValue += g_fadeDir *step; /* Calculation of the new duty cycle */

}

4.串口上位机通信格式

      如果仅显示串口数值,可以通过英飞凌Oneeye,但是Oneeye显示波形例程较为复杂,这里强烈建议英飞凌可以多做推广和介绍。为了快速开发,上位机使用的是,通信格式简单,如下,只需要将发送内容转换为字符串,每个数值之间“,”间隔即可,发送数据只有一组,使用通道1即可。

Foq4GOdkUHA6U9akytNmRfN7Y-TD

      ADC的数据经过处理后发送到上位机,即可显示,如果中间数据断开,需要重启软件。

char string2[]={',','0',',','0','\r','\0'};//',0,0\r\0';

            for(int a=0;a<6;a++)
            {
                string[count1+a]=string2[a];
            }

void send_ADC(int num,char* str)
{
    Ifx_SizeT count = num;       /* Size of the message,forget to modify,but it can work   */
    IfxAsclin_Asc_write(&g_asc, str, &count, TIME_INFINITE);         /* Transfer of data   */
}

 

5.功能演示

      到这里程序已完成,调节电位器的角度,LED的闪烁频率会发生变化,波形正确显示到上位机上。

FvEgtaAioL3lgocDjlK7uhDDLKoH

6.总结

      本次只是使用了TC275简单的功能,在这过程中,了解到英飞凌的完善的开发工具,实际上这款MCU并没有传闻中那么难使用,虽然复杂度确实相较普通MCU提升不少,但是对应的文档很完善,希望后续能有更多机会在项目中使用。

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