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.

[参考译文] CCS/TMS570LS1224:12V 上拉 GPIOA 开漏输出不能运行#39;t 运行。

Guru**** 2482105 points
Other Parts Discussed in Thread: LAUNCHXL2-TMS57012

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/704527/ccs-tms570ls1224-12v-pull-up-gpioa-open-drain-output-don-t-operate

器件型号:TMS570LS1224
主题中讨论的其他器件:LAUNCHXL2-TMS57012

工具/软件:Code Composer Studio

你(们)好

12V 上拉 GPIOA7开漏不起作用。

gioInit() 源是

void gioInit (void)

/*用户代码开始(2)*/
/*用户代码结束*/

   /**使 GIO 模块脱离复位状态*/
   gioREG->GCR0  = 1U;
   gioREG->ENACLR = 0xFFU;
   gioREG->LVLCLR = 0xFFU;

   /**@b 初始化@b 端口@b a */

   /**-端口 A 输出值*/
   gioPORTA->DOUT=(UINT32)((UINT32)0U <<0U) /*位0 */
                  |(UINT32)((UINT32) 0U << 1U) /*位1 */
                  |(UINT32)((UINT32) 0U << 2U) /*位2 */
                  |(UINT32)((UINT32) 0U << 3U) /*位3 */
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 1U << 7U);/*位7 *

   /**-端口 A 方向*/
   gioPORTA->DIR =(uint32)((uint32) 1U <<0U) //位0 */
                  |(UINT32)((UINT32) 0U << 1U) /*位1 */
                  |(uint32)((uint32) 1U << 2U) /*位2 */
                  |(UINT32)((UINT32) 0U << 3U) /*位3 */
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(uint32)((uint32) 1U <<6U) /*位6 */
                  |(uint32)((uint32) 1U << 7U);/*位7 *

   /**-端口 A 开漏启用*/
   gioPORTA->PDR =(uint32)((uint32) 0U <<0U) //位0 */
                  |(UINT32)((UINT32) 0U << 1U) /*位1 */
                  |(UINT32)((UINT32) 0U << 2U) /*位2 */
                  |(UINT32)((UINT32) 0U << 3U) /*位3 */
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 1U << 7U);/*位7 *

   /**-端口 A 上拉/下拉选择*/
   gioPORTA->PSL =(uint32)((uint32) 0U <<0U) //位0 */
                  |(UINT32)((UINT32) 0U << 1U) /*位1 */
                  |(UINT32)((UINT32) 0U << 2U) /*位2 */
                  |(UINT32)((UINT32) 0U << 3U) /*位3 */
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 0U << 7U);/*位7 *

   /**端口 A 上拉/下拉使能*/
   gioPORTA->PULDIS =(uint32)((uint32) 0U <<0U) //位0 */
                     |(UINT32)((UINT32) 0U << 1U) /*位1 */
                     |(UINT32)((UINT32) 0U << 2U) /*位2 */
                     |(UINT32)((UINT32) 0U << 3U) /*位3 */
                     |(uint32)((uint32) 0U << 4U) //位4 */
                     |(UINT32)((UINT32) 0U <<5U) /*位5 */
                     |(UINT32)((UINT32) 0U << 6U) //位6 */
                     |(uint32)((uint32) 0U << 7U);/*位7 *

   /**@b 初始化@b 端口@b B */

   /**-端口 B 输出值*/
   gioPORTB->DOUT=(UINT32)((UINT32) 1U <<0U) /*位0 */
                  |(uint32)((uint32) 1U << 1U) /*位1 */
                  |(uint32)((uint32) 1U << 2U) /*位2 */
                  |(UINT32)((UINT32) 1U << 3U) /*位3 *
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 0U << 7U);/*位7 *

   /**-端口 B 方向*/
   gioPORTB->DIR =(UINT32)((UINT32) 1U <<0U) /*位0 */
                  |(uint32)((uint32) 1U << 1U) /*位1 */
                  |(uint32)((uint32) 1U << 2U) /*位2 */
                  |(UINT32)((UINT32) 1U << 3U) /*位3 *
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 0U << 7U);/*位7 *

   /**-端口 B 开漏启用*/
   gioPORTB->PDR =(UINT32)((UINT32) 0U <<0U) /*位0 */
                  |(UINT32)((UINT32) 0U << 1U) /*位1 */
                  |(UINT32)((UINT32) 0U << 2U) /*位2 */
                  |(UINT32)((UINT32) 0U << 3U) /*位3 */
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 0U << 7U);/*位7 *

   /**-端口 B 上拉/下拉选择*/
   gioPORTB->PSL =(uint32)((uint32) 0U <<0U) //位0 */
                  |(UINT32)((UINT32) 0U << 1U) /*位1 */
                  |(UINT32)((UINT32) 0U << 2U) /*位2 */
                  |(UINT32)((UINT32) 0U << 3U) /*位3 */
                  |(uint32)((uint32) 0U << 4U) //位4 */
                  |(UINT32)((UINT32) 0U <<5U) /*位5 */
                  |(UINT32)((UINT32) 0U << 6U) //位6 */
                  |(uint32)((uint32) 0U << 7U);/*位7 *

   /**端口 B 上拉/下拉使能*/
   gioPORTB->PULDIS =(uint32)((uint32) 0U <<0U)//位0 */
                     |(UINT32)((UINT32) 0U << 1U) /*位1 */
                     |(UINT32)((UINT32) 0U << 2U) /*位2 */
                     |(UINT32)((UINT32) 0U << 3U) /*位3 */
                     |(uint32)((uint32) 0U << 4U) //位4 */
                     |(UINT32)((UINT32) 0U <<5U) /*位5 */
                     |(UINT32)((UINT32) 0U << 6U) //位6 */
                     |(uint32)((uint32) 0U << 7U);/*位7 *

/*用户代码开始(3)*/
/*用户代码结束*/

   /**@b 初始化@b 中断*/

   /**-中断极性*/
   gioREG->POL =(uint32)((uint32) 0U <<0U)  //位0 */
               |(UINT32)((UINT32) 0U << 1U)  /*位1 */
               |(UINT32)((UINT32) 0U << 2U)  /*位2 */
               |(UINT32)((UINT32) 0U << 3U)  /*位3 */
               |(uint32)((uint32) 0U << 4U)  //位4 */
               |(UINT32)((UINT32) 0U <<5U)  /*位5 */
               |(UINT32)((UINT32) 0U << 6U)  //位6 */
               |(UINT32)((UINT32) 0U << 7U)  //位7 */
               |(uint32)((uint32) 0U << 8U)  //位8 */
               |(UINT32)((UINT32) 0U <<9U)  //位9 */
               |(UINT32)((UINT32) 0U << 10U) //位10 */
               |(UINT32)((UINT32) 0U << 11U) //位11 */
               |(UINT32)((UINT32) 0U << 12U) //位12 */
               |(UINT32)((UINT32) 0U << 13U) //位13 */
               |(uint32)((uint32) 0U << 14U) //位14 */
               |(uint32)((uint32) 0U << 15U);//位15 */


   /**-中断级别*/
   gioREG->LVLSET =(uint32)((uint32) 0U <<0U)  //位0 */
                  |(UINT32)((UINT32) 0U << 1U)  /*位1 */
                  |(UINT32)((UINT32) 0U << 2U)  /*位2 */
                  |(UINT32)((UINT32) 0U << 3U)  /*位3 */
                  |(uint32)((uint32) 0U << 4U)  //位4 */
                  |(UINT32)((UINT32) 0U <<5U)  /*位5 */
                  |(UINT32)((UINT32) 0U << 6U)  //位6 */
                  |(UINT32)((UINT32) 0U << 7U)  //位7 */
                  |(uint32)((uint32) 0U << 8U)  //位8 */
                  |(UINT32)((UINT32) 0U <<9U)  //位9 */
                  |(UINT32)((UINT32) 0U << 10U) //位10 */
                  |(UINT32)((UINT32) 0U << 11U) //位11 */
                  |(UINT32)((UINT32) 0U << 12U) //位12 */
                  |(UINT32)((UINT32) 0U << 13U) //位13 */
                  |(uint32)((uint32) 0U << 14U) //位14 */
                  |(uint32)((uint32) 0U << 15U);//位15 */


   /**-清除所有挂起的中断*/
   gioREG->FLG = 0xFFU;

   /**-启用中断*/
   gioREG->ENASET =(uint32)((uint32) 0U <<0U)  //位0 */
                  |(uint32)((uint32) 1U << 1U)  /*位1 */
                  |(UINT32)((UINT32) 0U << 2U)  /*位2 */
                  |(UINT32)((UINT32) 0U << 3U)  /*位3 */
                  |(uint32)((uint32) 0U << 4U)  //位4 */
                  |(uint32)((uint32) 1U <<5U)  /*位5 */
                  |(UINT32)((UINT32) 0U << 6U)  //位6 */
                  |(UINT32)((UINT32) 0U << 7U)  //位7 */
                  |(uint32)((uint32) 0U << 8U)  //位8 */
                  |(UINT32)((UINT32) 0U <<9U)  //位9 */
                  |(UINT32)((UINT32) 0U << 10U) //位10 */
                  |(UINT32)((UINT32) 0U << 11U) //位11 */
                  |(UINT32)((UINT32) 0U << 12U) //位12 */
                  |(UINT32)((UINT32) 0U << 13U) //位13 */
                  |(uint32)((uint32) 0U << 14U) //位14 */
                  |(uint32)((uint32) 0U << 15U);//位15 */

/*用户代码开始(4)*/
/*用户代码结束*/

gioSetBit (gioPORTA、7、0); //输出为0V

延迟(1000);

gioSetBit (gioPORTA、7、1); //输出为4V (12V 上拉1k Ω 电阻)

延迟(1000);

我想知道。 12V 电压不会输出。

请回答我的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能否提供有关您的硬件设置的更多信息。 您使用的是开发套件还是定制板? 正如我看到的、有一个连接到12V 的外部上拉电阻器。 您是将该电阻器连接到 GIOA7还是连接到由 GIOA7切换的外部电路? 如果您将 GIOA7上拉至12V、则可能会损坏器件。 如果您要切换外部电路,GIOA7应通过外部上拉电阻上拉至 I/O 电源电压(3.0至3.6V)。

    我使用1k 上拉电阻器将您在开发套件(LAUNCHXL2-TMS57012)中的设置尝试到3V3、输出按预期工作。

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

    GPIO 引脚的最大电压为4.6V、建议工作电压为3.3V。 正如 Miro 所说、在没有分压器的情况下向引脚施加12V 电压会损坏引脚。