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.

[参考译文] TM4C1294KCPDT:当我使用 EPI 从 adc1175读取数据时,芯片变热,但数据是正确的,EPI 配置是否有问题?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1195461/tm4c1294kcpdt-when-i-use-the-epi-to-read-data-from-the-adc1175-the-chip-becomes-very-hot-but-the-data-is-just-correct-is-there-something-wrong-in-the-epi-config

器件型号:TM4C1294KCPDT
主题中讨论的其他器件: ADC1175

当我使用 epi0s0-s15从两个 adc1175s (8Bit ADC)中读取数据时、epi0s30配置为 CS、并连接到 adcclk 引脚以为 两个 ADC 提供时钟。 我发现  TM4C1294KCPDT 的 IO 吸收了很多电流,数据信号的高电平只有2.7V (如下图所示),芯片发热,所以我只需禁用 epi0s0-s15,然后将其配置为 GPIO 输入, 然后它会正常、 数据信号的高电平再次为3.3V。

我不知道为什么, 当我使用 EPI 读操作时,接收到的数据是正确的, 太热了, 可能会很快达到90摄氏度。

以下是我将 EPI 配置 为主机总线16位模式的代码:

静态 内联  void  ADCInterfaceInit()
   //IOfunction 已经在 Pinout ()中
   MAP_SysCtlPeripheralEnable (SYSCTL_Periph_EPI0);
   while (SysCtlPeripheralReady (SYSCTL_Periph_EPI0));
 
  ///EPIDividerSet (EPI0_BASE、 10);//
   EPIModeSet (EPI0_BASE、EPI_MODE_HB16);
   EPIConfigHB16Set (EPI0_BASE、EPI_HB16_MODE_ADDEMUX|EPI_HB16_CSCFG_CS、0);
   EPIAddressMapSet (EPI0_BASEEPI_ADDR_PER_BASE_A|EPI_ADDR_PER_SIZE _256B);//将 addr 映射设置为数据表的建议值(不重要),因此我只从 adc1175读取数据。
   while (HWREG (EPI0_BASE  +  EPI_O_STAT&  EPI_STAT_INITSEQ);//等待
 以下是 EPI 从 adc1175读取数据时的信号(黄线为 epi0s3、ph3,红线为 epi0s30 (CS)、PN3):
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     EPI I/O 配置为8mA 驱动强度。 当您同时驱动16个 I/O 时、它将消耗相当多的电流。 如果您有另一个 MCU、我怀疑您会遇到类似情况。 它可能更轻、但不会太多。 我不认为您的代码是错误的、因为它已经在正确读取数据。 我唯一能想到的是尝试较低的驱动强度。 请参阅 TivaWare driverlib 中 GPIO.c 文件中的以下内容。 从8mA 更改为4mA、看看温度是否会降低一点。  

    无效
    GPIOPinTypeEPI (uint32_t ui32端口、uint8_t ui8引脚)

    //
    //检查参数。
    //
    assert (_GPIOBaseValid (ui32Port));

    //
    //使引脚被外设控制。
    //
    GPIODirModeSet (ui32端口、ui8引脚、GPIO_DIR_MODE_HW);

    //
    //为标准推挽操作设置焊盘。
    //
    GPIOPadConfigSet (ui32端口、ui8引脚、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD);

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

    您好、Charles、

     ℃您的建议、当我同时驱动16个 IO 时、将 IO 驱动强度更改为2mA,、温度下降至大约40 μ s 后、它的剂量工作正常、 但 我不认为该解决方案从根本上解决了问题,因为这种情况不同于正常的输入配置。

    我将在下面解释我的问题:

    此屏幕截图中的黄色线是来自 ADc1175数据引脚的高电平信号、该引脚连接到 MCU 的 PH3引脚:

    其中 有一些脉冲,  输入状态似乎与 EPI 时钟或 cs 有关  (实际上正如您在上面第一张图片中看到的那样)。 当 CS 引脚变为低电平时、数据信号在3.3V 高电平时变为正常状态、 而当 CS 引脚为高电平时、数据引脚的高电平将仅为3.11V)。  

      相比之下,如果我只是将这些引脚配置为 GPIO 输入模式,这种情况不会发生,那么高电平 始终只有3.3V,这就是为什么我没有意识到应该更改驱动强度的原因。 我认为输入模式是高阻态或无源的,不应该驱动,而且,就像你说的,当我使用另一个 MCU 时,我 没有  遇到过这样的情况--- 我始终认为  IO 的灌电流或拉电流应该很小、因为它们被配置为输入。

    让我感到困惑 的是、我只从外设,读取数据、因此我认为 EPI 的 IO 在整个时间内只会处于高阻态,与 GPIO 输入模式类似、但似乎 EPI 会在某个时间开始将 IO 切换为驱动输出。  我是否错过了数据表中的某些内容?

    再次感谢您的回复。 我只是想弄清楚它、因为我认为我可能仍然以错误的方式使用它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="552452" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1195461/tm4c1294kcpdt-when-i-use-the-epi-to-read-data-from-the-adc1175-the-chip-becomes-very-hot-but-the-data-is-just-correct-is-there-something-wrong-in-the-epi-config/4509303 #4509303"]

     相比之下,如果我只是将这些引脚配置为 GPIO 输入模式,这种情况不会发生,那么高电平 始终只有3.3V,这就是为什么我没有意识到应该更改驱动强度的原因。 我认为输入模式是高阻态或无源的,不应该驱动,而且,就像你说的,当我使用另一个 MCU 时,我 没有  遇到过这样的情况--- 我始终认为  IO 的灌电流或拉电流应该很小、因为它们被配置为输入。

    让我感到困惑 的是、我只从外设,读取数据、因此我认为 EPI 的 IO 在整个时间内只会处于高阻态,与 GPIO 输入模式类似、但似乎 EPI 会在某个时间开始将 IO 切换为驱动输出。  我是否错过了数据表中的某些内容?

    [/报价]

    如果你看看我为  GPIOPinTypeEP()粘贴的代码,它有下面一行。 EPI 管脚由 EPI 模块目录控制。  换言之、管脚的方向由 EPI 模块动态控制。 当 EPI 进行写操作时、它会将管脚更改为输出。 当 EPI 正在读取时、它会将引脚更改为输入(高阻态)。 尽管您只执行读取操作、但 I/O 缓冲器已经配置为8mA 缓冲器强度、这将消耗更多的功率。  

    GPIODirModeSet (ui32端口、ui8引脚、GPIO_DIR_MODE_HW);

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

    好的,谢谢,我 已经理解了你的意思。 也许修复硬件设计对我来说是一个更好的解决方案