This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS470MF06607:TMS470Mfo6607睡眠和唤醒问题

Guru**** 2325040 points
Other Parts Discussed in Thread: TMS470MF06607
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/587843/tms470mf06607-tms470mfo6607-sleep-and-wake-up-issue

器件型号:TMS470MF06607

您好、TI、

当我尝试将 TMS470MFO6607微控制器置于睡眠状态并尝试通过 GIO 中断进行 t WAKE 时、它不会被唤醒。 如果我没有对 FBFALBACk、FPAC1、FPAC2 、FBAC 和 CDDIS 寄存器进行编程以使其休眠、那么它将被唤醒。

 

此致、

Padmaja.i

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Padmaja、

    有两种低功耗模式-在 TMS470M 器件上打盹和睡眠模式。 在睡眠模式下、应禁用所有时钟源(PLL、OSC、LPO、RTI 等)、闪存组和闪存凸点也应置于睡眠模式、但电压稳压器(VREG)必须置于 LPM1状态。 如果不对 FBFALBACk、FPAC1、FPAC2、FBAC 和 CDDIS 寄存器进行编程、则时钟仍在运行、器件不会被视为处于睡眠模式。

    由于没有内部时钟、需要一个外部事件(GIO 中断、CAN 消息、或者 SCI 消息)来从睡眠模式中唤醒。 您是否启用了 GIO 中断? 并选择 GIO 中断作为唤醒中断源? 禁用时钟域后、软件需要以一个空闲周期执行一条 ARM 指令(WFI)、这会触发 CPU 时钟停止。

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang、您好!

    我已启用 GI 中断、使微控制器唤醒。 只有当调试器连接 到 ECU 时(即、刷写源代码后、调试器仍然连接、但调试器停止)、它才会达到峰值。 如果我复位 ECU 或拆下调试器、则它不会达到峰值。

     

    请在这方面帮助我。

     

    Thamks 和此致、

    Padmaja.i

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、先生、

    当我尝试将 TMS470Mf06607微控制器置于睡眠或打盹模式时、即使我提供 GIO 中断、微控制器也不会被唤醒。

     

    我要遵循的睡眠过程是什么

     

    1. 将所有闪存组和泵置于睡眠状态。

    flashWREG->FBAC =(flashWREG->FBAC & 0xFFFF00FF)| 0x00001000);

     

    flashWREG->FPAC2 = 0;

     

    flashWREG->FBFALBACK = 0;

     

    flashWREG->FPAC1 =(flashWREG->FPAC1 & 0xFFFFFFFE);

     

    1. 禁用所有时钟域和时钟源

    systemREG->GHVSRC =(SYS_LPO_HIGH << 24U)

                                             |(SYS_LPO_HIGH << 16U)

                                             |  SYS_LPO_HIGH

     

    /**-设置 RTICLK1时钟*/

    systemREG->RCLKSRC =(1U <<8U)

                                              |  SYS_LPO_HIGH

     

          /**-为 AVCLK1和 AVCLK2设置异步外设时钟源*/

    systemREG->VCLKASRC = SYS_LPO_HIGH

                

    systemREG->CSDIS = 0xFF;

     

                /**-等待直到时钟锁定*/

                while ((systemREG->CSVSTAT &((systemREG->CSDIS ^ 0xFF)& 0xFF)!=((systemREG->CSDIS ^ 0xFF)& 0xFF));

               systemREG->CDDIS = 0xFF;

                temp_var = systemREG->CDDIS;

    1. 将电压稳压器设置为 LPM1模式

    systemREG->VRCTL = 0x0F; //可能交换从原始0xf0修改的 VREG 控制字段

    1. 执行 asm (“WFI”)指令。

     

    GIO 设置\

     

    注意:我们仅使用第4和第6个引脚来生成中断

     

    /*该寄存器用于检测上升或下降电平上的中断*/  (当器件处于低功耗模式时、中断是基于 n 电平而不是基于边沿检测的–根据技术参考手册)

     

    gioREG->INTDET = 0       /*位0 */

                         |(0 << 1) /*位1 */

                         |(0 << 2) /*位2 */

                         |(0 << 3) /*位3 */

                         |(0 < 4) /*位4 */

                         |(0 << 5) /*位5 */

                         |(0 << 6) /*位6 */

                         |(0 < 7);/*位7 */

     

    /*该寄存器用于检测任一上升电平上的中断*/   

     

       /**-中断极性*/

       gioREG->POL = 0       /*位0 */

                   |(0 << 1) /*位1 */

                   |(0 << 2) /*位2 */

                   |(0 << 3) /*位3 */

                   |(1 << 4) /*位4 */

                   |(0 << 5) /*位5 */

                   |(1 << 6) /*位6 */

                   |(0 < 7);/*位7 */

     

     

       /**-清除所有挂起的中断*/

       gioREG->FLG = 0xFF;

     

    /*This Register 表示启用第4和第6个引脚的中断*/   

     

       /**-启用中断*/

       gioREG->INTENASET = 0       /*位0 */

                         |(0 << 1) /*位1 */

                         |(0 << 2) /*位2 */

                         |(0 << 3) /*位3 */

                         |(1 << 4) /*位4 */

                         |(0 << 5) /*位5 */

                         |(1 << 6) /*位6 */

                         |(0 < 7);/*位7 */

     

    /*This Register 表示 将中断配置 为高级*/   

     

      /**-中断级别*/

       gioREG->LVLSET = 0       /*位0 */

                      |(0 << 1) /*位1 */

                      |(0 << 2) /*位2 */

                      |(0 << 3) /*位3 */

                      |(1 << 4) /*位4 */

                      |(1 << 5) /*位5 */

                      |(1 << 6) /*位6 */

                      |(1 << 7);/*位7 *

    plz 帮助我解决此问题