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.

[参考译文] TDA4VM:有关 R5F MCU3 0和 MCU2 0 GPIO 中断的问题、MCU2_1和 MCU3_0在使用中断方面有何区别?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1197187/tda4vm-questions-about-r5f-mcu3-0-and-mcu2-0-gpio-interrupt-what-is-the-difference-between-mcu2_1-and-mcu3_0-in-using-interrupts

器件型号:TDA4VM

我们使用的是 SDK7.3。

我可以在 R5F MCU3_0中使用 GPIO 中断、中断触发正常、但无法使用移植到 MCU2_1的相同代码、并且无法触发中断。

我看到 GPIOMUX_INTR0_MUXCNTL_n 寄存器配置在 MCU3_0上可用、但在 MCU2_1或 MCU2_0上不可用。

我已经尝试将代码移植到 MCU3_1、并且可以触发中断

在使用中断时、MCU2_1和 MCU3_0之间有何区别?

为什么相同的测试代码中断在 MCU3_0和 MCU3_1上有效、但在 MCU2_0和 MCU2_1上无效?

    //使用银行4.                                     
   *(volatile uint32_t *) 0x11c12C = 0x50007 |(2 << 4);
   *(volatile uint32_t *) 0x11c130 = 0x50007 |(2 << 4);
   *(volatile uint32_t *) 0x11c134 = 0x50007 |(2 << 4);
   *(volatile uint32_t *) 0x11c138 = 0x50007 |(2 << 4);
   *(volatile uint32_t *) 0x11c13C = 0x50007 |(2 << 4);
   *(volatile uint32_t *) 0x11c140 = 0x50007 |(2 << 4);


   GPIO_socGetInitCfg (USE_DEF_PORTNUM、&GPIO_cfg);

   GPIO_cfg.baseAddr = CSL_GPIO4_base;

   intCfg = gpio_cfg.intCfg;
   intCfg[74].intNum= 176;//gpio0_74 in272
   intCfg[74].EventID=0;
   intCfg[74].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[74].intcMuxInEvent=0;
   intCfg[74].intcMuxOutEvent=0;

   intCfg[75].intNum= 176;/GPIO0_75
   intCfg[75].EventID=0;
   intCfg[75].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[75].intcMuxInEvent=0;
   intCfg[75].intcMuxOutEvent=0;    

   intCfg[76].intNum= 176;/GPIO0_76
   intCfg[76].EventID=0;
   intCfg[76].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[76].intcMuxInEvent=0;
   intCfg[76].intcMuxOutEvent=0;    

   intCfg[77].intNum= 176;/GPIO0_77
   intCfg[77].EventID=0;
   intCfg[77].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[77].intcMuxInEvent=0;
   intCfg[77].intcMuxOutEvent=0;

   intCfg[78].intNum= 176;/GPIO0_78
   intCfg[78].EventID=0;
   intCfg[78].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[78].intcMuxInEvent=0;
   intCfg[78].intcMuxOutEvent=0;

   intCfg[79].intNum= 176;/GPIO0_79
   intCfg[79].EventID=0;
   intCfg[79].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[79].intcMuxInEvent=0;
   intCfg[79].intcMuxOutEvent=0;

   GPIO_socSetInitCfg (USE_DEF_PORTNUM、&GPIO_cfg);
   
#if 0
   GPIO_socGetInitCfg (6、&GPIO_cfg6);
   GPIO_cfg6.baseAddr = CSL_GPIO6_BASE;
   intCfg = gpio_cfg6.intCfg;

   intCfg[64].intNum= 190;//GPIO0_64
   intCfg[64].EventID=0;
   intCfg[64].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[64].intcMuxInEvent=0;
   intCfg[64].intcMuxOutEvent=0;    

   intCfg[65].intNum= 190;//GPIO0_65
   intCfg[65].EventID=0;
   intCfg[65].intcMuxNum=invalid_intc_MUX_NUM;
   intCfg[65].intcMuxInEvent=0;
   intCfg[65].intcMuxOutEvent=0;
   GPIO_socSetInitCfg (6、&GPIO_cfg6);
#endif
   //*(volatile uint32_t *) 0xA00004 = 0x1010c
   GPIO_init();
#if 0
   int irqindex = 0;
   irqindex = 176;
   for (irqindex = 176;irqindex < 192;irqindex++){
       RET = GPIO_configIntRouter (irqindex、77、0、&GPIO_cfg、true);
      appLogPrintf ("\n\n**** irqindex =%d *** ret =%d **** \n",irqindex,ret);
   }
#endif
  /*使用 GPIO IRQ*/

    //register gpioPinConfigs num0~num5 to IRQ
   GPIO_setCallback (0、AppElmosCallbackFxn1);//RX1_IRQ
   GPIO_setCallback (1、AppElmosCallbackFxn2);//RX2_IRQ
   GPIO_setCallback (2、AppElmosCallbackFxn3);//RX3_IRQ
   GPIO_setCallback (3、AppElmosCallbackFxn4);//RX4_IRQ
   GPIO_setCallback (4、AppElmosCallbackFxn5);//RX5_IRQ
   GPIO_setCallback (5、AppElmosCallbackFxn6);//RX6_IRQ
    //启用 IRQ
   GPIO_enableInt (0);
   GPIO_enableInt (1);
   GPIO_enableInt (2);
   GPIO_enableInt (3);
   GPIO_enableInt (4);
   GPIO_enableInt (5);

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

    您好!

    您能否检查当传递到 GPIO_SoC.c 中 GPIO_socConfigIntraPath 中的 Sciclient_rmIrqSet 时、为 rmIrqReq 获取的值是什么?

    此致、
    Parth