TC275核心休眠的开发报告 Funpack2-2
TC275核心休眠的开发报告 Funpack2-2 ,介绍如何通过英飞凌的开发工具开发TC275
标签
嵌入式系统
数字逻辑
接口
tomtom
更新2022-10-11
589

内容介绍

开发板介绍:

AURIX TC275 lite 套件配备了基于 32 位单芯片 AURIX TM TriCore TM的微控制器 Aurix TC275, 其中包含了非常多的外设, 如:

  • Arduino 连接器.      
  • Arduino ICSP 连接器
  • 稳压器 5V 至 3.3V
  • 可选 0 欧姆电阻器(1210 英制中的 R39_opt/R40_opt)
  • Arduino 连接器(数字)
  • 用于 AURIX™ TM的 20 MHz 晶振和用于 OCDS 的 12 MHz 晶振
  • 用于 WIFI/BLE 的 Mikrobus 连接器
  • 英飞凌 CAN 收发器 TLE9251VSJ 和 CAN 连接器
  • 针连接器 X2
  • 电源指示灯 (D5)

1. 本板卡最终实现了什么功能

这次我选择了任务1, 设计可以控制TC275多个核心休眠,和唤醒的程序,实现下面的功能:

第一步:开机的时候只有第1个CPU启动, 同时反转LED1等待按钮按下,如果有按钮按下,就启动第2个CPU

第二步:第2个CPU启动的时候,就使用第2个CPU让第1个CPU休眠,同时翻转LED2, 并且等待按钮按下.如果按钮按下,就启动

第三步:第3个CPU启动的时候,就使用第3个CPU让第2个CPU休眠,同时反转2个LED, 并且启动1秒后,整个系统进入休眠模式,所有CPU停止活动.

2. 各功能对应的主要代码片段及说明

1. 设置全局变量,比如各个GPIO口的设置,延迟的时间,闪烁的时间等参数

#define ISR_PRIORITY_2      2
/* Defines CPU that triggers the interrupt */
#define ISR_PROVIDER_CPU0   0
/* Defines CPU that triggers the interrupt */
#define ISR_PROVIDER_CPU2   2
/* Rate 0.5 Hz */
#define RATE_0_5_HZ         0.25
/* Rate 1 Hz */
#define RATE_1_HZ           0.5
/* LED */
#define LED1                &MODULE_P00,5
#define LED2                &MODULE_P00,6
#define BUTTON  &MODULE_P00,7   /* Port pin for the button  */

#define ALLOW_SLEEP_MODE    0x0                 /* Allow sleep mode for GTM                                         */
#define BLOCK_SLEEP_MODE    0x1                 /* Block sleep mode for STM                                         */
#define PMSWCR1_CPUSEL      0x1                 /* Set the CPU0 as CPU master                                       */
#define PMCSR0_REQSLP       0x2                 /* Request sleep mode 

2. 初始化, 如GPIO, 定时器等外设的初始化

    IfxPort_togglePin(LED1);                                             /* Toggle Port Pin 00.5                     
    /* Set Port Pin 00.5 to output mode and turn off the LED (LED is low-level active) */
    IfxPort_setPinModeOutput(LED2, IfxPort_OutputMode_pushPull, IfxPort_OutputIdx_general);
    IfxPort_setPinHigh(LED2);
    IfxPort_setPinMode(BUTTON, IfxPort_Mode_inputPullUp);

3. 设置各个CPU的状态, 设置他们为休眠模式或者运行模式, 在各个main方法中调用就可以对特定CPU进行设置

void set_c1_c2_idle(void)
{
    /*
     * 设置cpu1, cpu2为idle.
     */

    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU1, IfxCpu_CoreMode_idle);
    IfxCpu_setCoreMode(&MODULE_CPU2, IfxCpu_CoreMode_idle);
}

void set_c0_idle(void)
{
    /*
     * 设置cpu0为idle.
     */
    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU0, IfxCpu_CoreMode_idle);
}


void set_c0_run(void)
{
    /*
     * 设置cpu0为run.
     */
    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU0, IfxCpu_CoreMode_run);
}

void set_c1_idle(void)
{
    /*
     * 设置cpu1为idle.
     */
    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU1, IfxCpu_CoreMode_idle);
}

void set_c1_run(void)
{
    /*
     * 设置cpu1为run.
     */
    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU1, IfxCpu_CoreMode_run);
    set_c0_idle();
}

void set_c2_idle(void)
{
    /*
     * 设置cpu2为idle.
     */
    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU2, IfxCpu_CoreMode_idle);
}


void set_c2_run(void)
{
    /*
     * 设置cpu1为run.
     */
    IfxCpu_enableInterrupts();
    IfxCpu_setCoreMode(&MODULE_CPU2, IfxCpu_CoreMode_run);
    set_c1_idle();
}

3. 实现功能的演示及说明

第一:上电的时候只有第1个CPU启动, 这个时候会翻转LED1, 直到我们按下按钮

FqZxleDmmdKp9h8wUhoiTrKL6-My

第二:当我们按下按键的时候, 第2个CPU启动,可以看到LED2进行翻转, 直到我们再次按下按钮

第三:在我们再次按下按钮的时候, 第3个CPU启动, 2个LED同时翻转, 并且启动1秒后,整个系统进入休眠模式,所有LED停止翻转

FvjYIyIOeU6rLZw7Uyb538zZ0ILq

Fg8sxL5yeL9CwsBuCni-ZCCS6erT

4. 对本活动的心得体会

  • 了解了多核更多情况下的用途: 这块开发板集成度很高, 上手几乎没有难度, 英飞凌的开发环境也大大降低了入门的门槛, 对多核的编程也变得很容易. 是一个给身边的人介绍英飞凌, 了解多核编程的一个非常好的契机. 

 

  • 善加利用说明文档:开发过程中遇到了结果问题, 比如调试模式使用不了, 如何调用GPIO等功能, 通过官方的文档都能得到解决. 就像这次的启动和休眠核心的部分, 我之前并没有多核编程的经验, 只有开发Arduino和STC单片机的经验. 但是这次接触到了英飞凌的开发, 使用官方的开发文档还有官方的开发历程, 非常快速地上手了这款单片机

 

  • 最后, 非常感谢电子森林以及群里面的提供我帮助的朋友们

附件下载

Project_of_Main.zip
项目工程

团队介绍

zhuting

评论

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