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.

[参考译文] TCA8418:GPIO使用

Guru**** 2455360 points
Other Parts Discussed in Thread: TCA8418

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/616615/tca8418-gpio-usage

部件号:TCA8418

我使用的设计具有多个GPIO输入和输出连接到TCA8418。 浏览完数据表后,我有几个问题,我还想确认我没有任何误解。

产出

以下是我对如何在POR之后配置/使用GPIO输出的理解:

  1. 写入GPIO _DIR#寄存器以将引脚配置为输出
  2. 写入GPIO _DAT_OUT#寄存器以打开/关闭输出

这就是我可以从数据表中得到的全部信息。 POR之后,每个引脚默认为GPIO模式(根据KP_GPIO #寄存器),因此我认为没有其他操作。  

输入

我尝试尽可能简单地配置输入—没有FIFO,没有中断,没有去抖,没有类似的东西。 以下是流程的内容:

  1. 写入GPIO _Pull#寄存器以配置上拉
  2. 读取GPIO _DAT_STAT#寄存器以轮询输入状态

同样,这似乎足够简单。 引脚默认为GPIO模式(KP_GPIO #),并且在POR上禁用中断(GPIO_INT_EN#),因此这似乎足够了。  

我还想知道如何从GPIO DAT_STAT#寄存器中读取数据。 数据表显示以下内容:

这些寄存器在读取输入和输出时显示GPIO状态。 阅读两次以清除它们。

最后一句话对我来说毫无意义。 "清除"此登记簿意味着什么? 对我来说,这意味着这些值在设置时会锁定,但我在数据表中的任何地方都找不到这一点。 这些寄存器是否反映GPIO输入的当前状态? 或者,是否需要读取它们两次(清除)才能获得当前状态?

谢谢!

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

    Matthew,您好!

    让我看看您的问题,稍后再与您联系。

    Francis Houde

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

    Matthew,您好!

    很抱歉耽误你的时间。  这个岗位从我的雷达上掉下来了。

    下面是您的问题摘要,我的答案以粗体显示:

    产出

    以下是我对如何在POR之后配置/使用GPIO输出的理解:

      1. 写入GPIO _DIR#寄存器以将引脚配置为输出

    是的,它将GPIO配置为输入(设置为0,低)或输出(设置为1,高)。 默认值为0,因此默认状态都是输入。

     

      1. 写入GPIO _DAT_OUT#寄存器以打开/关闭输出

    GPIO _DAT_OUT1/2/3寄存器将每个给定IO的输出设置为1 (高)或0 (低),但如果IO设置为输入,则不会执行任何操作。 必须将其配置为gPIO_DIR1/2/3寄存器中的输出。

    这就是我可以从数据表中得到的全部信息。 POR之后,每个引脚默认为GPIO模式(根据KP_GPIO #寄存器),因此我认为没有其他操作。  

    输入

    我尝试尽可能简单地配置输入—没有FIFO,没有中断,没有去抖,没有类似的东西。 以下是流程的内容:

      1. 写入GPIO _Pull#寄存器以配置上拉

    默认情况下,GPIO具有上拉电阻器。 如果将它们设置为输入,则不应将其保留为浮动,否则可能会由于流过而产生异常高的电流。

     

      1. 读取GPIO _DAT_STAT#寄存器以轮询输入状态

    是的,这是正确的。

    同样,这似乎足够简单。 引脚默认为GPIO模式(KP_GPIO #)和I

    在POR上禁用了nterrupts (GPIO_INT_EN#),因此这似乎足够了。  

    我还想知道如何从GPIO DAT_STAT#寄存器中读取数据。 数据表显示以下内容:

    这些寄存器在读取输入和输出时显示GPIO状态。 阅读两次以清除它们。

    我不确定这是否是打字错误。 我需要看看这个。 我不知道这意味着什么才能将其清除。 我很快就会告诉你我所知道的。

    最后一句话对我来说毫无意义。 "清除"此登记簿意味着什么? 对我来说,这意味着这些值在设置时会锁定,但我在数据表中的任何地方都找不到这一点。 这些寄存器是否反映GPIO输入的当前状态? 或者,是否需要读取它们两次(清除)才能获得当前状态?

    Francis Houde