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.

[参考译文] ADS124S08:断电时的GPIO状态。

Guru**** 2540720 points
Other Parts Discussed in Thread: ADS124S08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/621485/ads124s08-gpio-state-during-power-down

部件号:

大家好,我想使用ADC的3个GPIO通过P MOSFET控制EEPROM的电源(以及CS和我们)。  但是,我需要:

1)了解断电模式期间GPIO引脚的状态。  它们是否保持在它们编程到的最后一个级别?  还是降至零或三角?

2)了解GPIO引脚在 发出唤醒命令后具有哪些行为。

3)了解GPIO引脚 在作为输出启用之前和之后的行为。  在启用之前,它们是否处于浮动状态(三态)?  如果我在GPIODAT寄存器中将输出指定为HIGH,然后使用GPIOCON寄存器启用GPIO引脚,则引脚是从以前的状态直接转到HIGH,还是先转到LOW?

这是一种正常的操作模式:打开PCBA电源时,我将向ADC发送一条命令(在启用CS并配置寄存器之后),以配置相应的GPIO引脚以打开电源并启用EEPROM。 然后,我将驱动CS高电平(CS仅与AtoD绑定),并通过SPI总线发送命令读取EEPROM数据。  然后,我将关闭EEPROM (使用ADC GPIO),驱动CS降低,并定期读取ADS数据。   

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

    您好,Scott:

    请参阅下面我对您问题的回答。  我想问您的一个问题是,如果您使用相同的SPI总线同时控制EEPROM和ADS124S08,则在启用EEPROM时如何防止总线争用?  在我看来,一旦EEPROM通电且CS处于活动状态,ADS124S08和EEPROM将在Miso上争用。

    此致,

    Bob B

    [报价用户="Scott Miller1"]

    部件号: ADS124S08

    大家好,我想使用ADC的3个GPIO通过P MOSFET控制EEPROM的电源(以及CS和我们)。  但是,我需要:

    1)了解断电模式期间GPIO引脚的状态。  它们是否保持在它们编程到的最后一个级别?  还是降至零或三角? [BOB] 即使在断电模式下,如果指定为输出,GPIO也将保持在已编程的级别。

    2)了解GPIO引脚在 发出唤醒命令后具有哪些行为。 [BOB]由于GPIO由寄存器设置控制,唤醒命令对GPIO的状态没有直接影响。

    3)了解GPIO引脚 在作为输出启用之前和之后的行为。  在启用之前,它们是否处于浮动状态(三态)?   [Bob] ADS124S08的GPIO引脚的默认设置为模拟输入和浮动。  如果我在GPIODAT寄存器中将输出指定为HIGH,然后使用GPIOCON寄存器启用GPIO引脚,则引脚是从以前的状态直接转到HIGH,还是先转到LOW? [BOB]将GPIOCON寄存器从模拟输入设置为GPIO时,GPIO的状态将直接转到 GPIODAT寄存器中给出的状态。 GPIO的默认设置为输出 和逻辑下限。 [Bob]对于默认情况,将GPIOCON寄存器从模拟输入更改为GPIO时,您将立即看到逻辑低输出。  如果希望输出状态为高,则应在更改GPIOCON寄存器之前,将所需引脚的GPIODAT寄存器设置为逻辑高。

    这是一种正常的操作模式:打开PCBA电源时,我将向ADC发送一条命令(在启用CS并配置寄存器之后),以配置相应的GPIO引脚以打开电源并启用EEPROM。 然后,我将驱动CS高电平(CS仅与AtoD绑定),并通过SPI总线发送命令读取EEPROM数据。  然后,我将关闭EEPROM (使用ADC GPIO),驱动CS降低,并定期读取ADS数据。   

    [/引述]

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

    感谢Bob的详尽回答。  

    为了回答您的后续问题,我的微控制器将仅直接(硬件)控制AtoD上的CS (而不是EEPROM CS)。  EEPROM CS将由AtoD控制。  逻辑流程:

    1)接通PCBA的电源。  AtoD GPIO是模拟输入和浮动的。  EEPROM电源由P-ch MOSFET栅极上的上拉电阻器禁用。  这并不重要,但EEPROM CS由电阻器保持高电位

    2)通过SPI消息配置AtoD (包括将EEPROM CS GPIO引脚设置为高,然后设置为输出)

    3)使用AtoD完成SPI操作,4除外  

    4)向AtoD发送命令,以通过AtoD GPIO启用EEPROM CS。  

    5)将AtoD CS升高至高(禁用)。  

    6)读取/写入EEPROM。

    7)停止与EEPROM的SPI通信  

    8)启用AtoD CS

    9)向AtoD发送SPI命令以禁用EEPROM CS (01h,11h -假定CS位于GPIO 0上)。  

    10)发送SPI命令以关闭EEPROM (将AtoD GPIO引脚调高以关闭MOSFET)。

    11)将GPIO引脚设置为输入以节省电源(MOSFET栅极上的上拉电阻将保持P通道MOSFET关闭)。

    我在这里看到的唯一SPI总线争用风险是在步骤8和9之间,此时EEPROM在步骤9中看到命令,其CS仍处于启用状态。  但是,假设AtoD GPIO立即响应,则EEPROM CS应在命令后几乎立即禁用。  eeprom命令集以0000或1000 (二进制)开头,后跟进一步定义命令的第二个半字节。  由于我向AtoD发送0001 (二进制)加一些东西以禁用EEPROM的CS,我应该可以,对吗? 当然,只要EEPROM输出的所有数据流量都已停止,就可以执行此操作。

    我要考虑的另一件事是,当EEPROM关闭时,它是否可以承受SPI引脚上的电压。  我将与ST核实,因为我在数据表中找不到任何有关这方面的指示。  如果它不能承受电压,我必须放弃关闭EEPROM的计划(以节省电源),只需将其保持在待机模式(2-3 uA)。

    此外,EEPROM (ST M9.5256万-W)数据表规定,断电期间,"芯片选择S应允许跟随施加在VCC上的电压"。  因此,我会将CS上拉电压与MOSFET提供给EEPROM的功率相连,而不是将其与PWA的Vcc相连。

    最后,需要注意的一件重要事情是,我使用的是AtoD的最小实现,即我不使用AtoD的专用DRDY引脚。  这应该不会有任何后果,因为一旦AtoD CS高电 平,DOUT/DRDY引脚将处于高阻抗状态。

    此外,我之前没有提到这一点,但我计划使用AtoD GPIO控制EEPROM的写入启用(我们)引脚。  我不想让步骤1到9变得复杂,因为这(似乎)是不必要的细节。

    我的逻辑中有一个你可以看到的缺陷吗?

    侧问题:关闭EEPROM电源并执行步骤11后,AtoD GPIO引脚基本上成为未使用的引脚。  由于在控制EEPROM CS的AtoD GPIO引脚上上拉,我们将被绑定到EEPROM电源(通过MOSFET),这些引脚将是浮动输入,根据AtoD数据表上的10.0 5,这是一个NO-NO。  您推荐什么?  在控制EEPROM CS和我们引脚的AtoD GPIO上施加强上拉(5k)和弱下拉(50k),并将两者配置为输入?  这应符合AtoD 10.0 5的指令,且有源高压符合EEPROM数据表(0.7 Times VCC)。 通过MOSFET为EEPROM供电的AtoD引脚通过前面提到的上拉电阻器被拉高。  

    我的假设是 ,从功耗角度来看,保持在断电模式下控制功率和CS (以及我们) MOSFET和EEPROM的GPIO更好

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

    您好,Scott:

    请记住,GPIO由ADS124S08的AVDD电源供电,因此我不确定您使用的EEPROM和数字电源的电压电平,但它们应该匹配。  如果AVDD大于DVDD,则可能存在问题。

    EEPROM和ADS124S08的输出驱动程序将在步骤8和9之间发生冲突。  当一个设备输出逻辑高电平,而另一个设备输出 逻辑低电平时,会出现问题。  即使在短期内,也很难预测这种情况可能产生的长期影响。  

    如果将GPIO保留为输出,则在输出驱动时不需要上拉或下拉。  如果更改为GPIO输入,则必须不允许输入浮动(可能导致电流过大)。  但是,如果您更改为模拟输入,则可以让它们浮动。

    此致,

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢Bob的周到回应。 我计划使用3.3 V为一切供电。 因此,电源不匹配应该是个问题。

    我没有关注miso争用... SPI规范指出,即使在CS降低到SPI从属设备开始传输之前,从属miso也具有高阻抗。 如果在两个CS都启用时,两个从属设备都不传输(仅在步骤8和9之间),则应该不会出现问题

    但是,我发现我的建议存在另一个潜在问题。 对于EEPROM的大多数命令,我的策略都可以。 在正常操作中,我只是从EEPROM读取数据,然后关闭电源。 但在工厂中,我需要写入EEPROM (仅一次)以存储数据。 EEPROM上的大多数写入和读取命令不需要CS PIN的任何特殊计时(事实上,读取和写入操作可以读取和写入连续存储器位置,甚至无需切换CS)。 但是,有一个特定的eeprom命令对下一个CLK边缘之前的CS会很敏感,即写状态寄存器命令(http://bit.ly/2vsqUJB 部分6.4)。 这是一种鸡肉/蛋类…。我需要切换到SPI时钟,向At-D发送指令,以设置EEPROM CS高电平,但当我在设置EEPROM CS高电平之前切换SPI时钟时,它忽略了我发送的更新EEPROM写入状态寄存器…的命令 所以我认为这是我上述建议的一个问题,除非我通过进一步仔细阅读确定我不需要写入EEPROM写入状态寄存器。

    但是,这里有一个新的想法:反转控制AtoD的CS,然后将其馈入EEPROM。 只要为AtoD启用CS (低),EEPROM就会被禁用;每当为EEPROM启用CS时,AtoD CS就会被禁用(高)。 逆变器将由与EEPROM相同的电源供电(MOSFET,由AtoD GPIO控制),使CS能够(希望)在关闭EEPROM电源时跟随EEPROM电源。

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

    您好,Scott:

    信不信由你,我建议使用反向的CS概念来实现EEPROM。  使用此方法将防止争用。  当CS变低时,ADS124S08的输出驱动程序处于活动状态。  来自移位寄存器的输出将在SCLK的上升沿上发生变化,并在下降沿上保持有效。  DOUT/DRDY只有在CS较高时才具有高阻抗。

    此致,

    Bob B