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.

[参考译文] AM623:AM623

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1513359/am623-am623

器件型号:AM623
《Thread 中讨论的其他器件:ADS131A04》

工具/软件:

您好:

我在 MCU_SPI0上连接了3个 ADS131A04器件。 这些是根据数据表的第10.1.3.1节设置的、其中第一个器件配置为异步中断模式、其他两个器件配置为同步从模式。 我还有一个用于启动 M4F 的程序。 该程序使用 RPMSG 来启动/停止 M4、因此我可以通过停止/启动 M4来加载和测试新代码。 我的程序向 ADC 发出多条命令、如随附的日志中所列。 它首先发出解锁命令、然后静置再归零、直到从每个器件返回 FF04。

第一次加载代码时就可以完成、并且寄存器转储不会显示任何错误。 但是、如果我停止/启动 M4、则我的下一次运行将无法从全部3个 ADC 获得 FF04。 我从第一个器件获得 FF04、但第二个器件报告2220、我认为这是 SPI 故障。 可能无法访问第3个设备。 现在、如果我再次停止/启动 M4、那么这次我将从器件1和2获得 FF04、但器件3现在会报告 SPI 故障。 在 M4第3个停止/启动时、所有3个 ADC 都会报告 FF04、我的代码会完成其他命令序列。 我的代码只能 在启动时进行这些调用:

  MCSPI_init ();
  drivers_mcspiOpen()
是否知道为什么停止/启动 M4会导致此行为? 每次程序启动时、我是否还应该执行其他操作? 谢谢。
-艾曼
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    请允许我在数据表中查看您指定的模式。

    此致、

    Vaibhav

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

    您好、

    由于问题说明中未指定该参数、因此我意识到您参考的是外设的数据表、而不是 AM62x 的数据表。

    我假设您讨论的是以下部分:

    我正在检查这一点、并排显示了应该相对于 AM62x MCSPI 控制器完成的配置。 请在2-3个工作日内回复。

    此致、

    Vaibhav

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

    感谢您对此进行研究。 是的、我提到了 ADS131A04数据表的配置部分。 只需阐明几个方面:
    1.在命令序列结束之前,第一次运行实际上不会成功完成。 查看最后2个空值、第一个空值成功返回之前的 RREG 0x5的状态、但下一个 NULL 返回2204 (对于 ADC 2和3)。 指示 F_RESYNC 故障、如数据表的表18所示。 不太确定在两个 NULL 命令之间会引入该故障的原因。

    此时,我尝试了两个选项:

    a.如果我此时对电路板进行下电上电、则下一次运行将成功完成整个命令序列 、但最后一个 NULL 命令将从 ADC 2和3返回2204。

    b.如果我要重新启动 Linux 而不是重启、那么下一次运行将展示我在原始帖子中描述的行为、其中只有第一个 ADC 报告就绪、并需要 M4进行几次停止/启动以使所有3个 ADC 都就绪。

    再次感谢。

    -艾曼

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

    尊敬的 Ayman:

    感谢您的等待。

    我一直在查看寄存器映射以及与 ADS 交互的方式。 我已经完成了几个初始化步骤、我看到您在上面附加了日志、这些日志证明了这些步骤的正确性。

    我知道、这3款器件产生的 FF04意味着您可以放心使用。 如果您说命令的数据输出:

    cmd:0x0655  len:0x0c  状态:0xff04ff04ff04、表示 ff04 ff04分别用于第一个、第二个和第三个器件、或者第三个、第二个和第一个器件? 希望您回答了我的问题。

    我还看到一种模式、在经过几次严格的下电上电后、这些值似乎会自行重复、并且 init 会正确发生。

    我已经仔细阅读了数据表、但我需要将更多时间花在相同方面、并了解可以采取哪些不同做法、因为您使用的外设对我来说也是新手。  

    注意:

    在本应用手册上、您能否继续分享 example.syscfg 文件、以便在我的最后进行快速健全性检查 如果您是在 Processor SDK Linux 上进行开发、则不提供此 example.syscfg。 请告诉我有关这个问题。

    此致、

    Vaibhav

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

    此外、您能告诉我以下0x2204值如何映射到表18吗?

    0x2204为 10 0010 0000 0100b

    在这里、我看到位2已设置、因此 F_RESYNC 是合理的。 我们如何从8:13映射这里的其余位?

    此致、

    Vaibhav

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

    我读取0x2204的方式是:

    0x22      读取寄存器2 (STAT_1寄存器)

    0x04      STAT_1寄存器中的值、该值映射到 F_RESYNC

    我不确定这是 SPI 错误、还是我们从恢复的瞬间故障。 我正在尝试在代码中添加逻辑、以便每次在 M4上加载程序时对 ADC 进行硬复位、希望这样可以解决问题。 发布它。

    现在、我正在努力解决我发布在另一个主题上的另一个问题。 基本上、所有3个 ADC 的 DRDY 都连接到一个 GPIO、该 GPIO 应在 DRDY 生效时产生中断、表示 ADC 已准备好转换数据。 我的代码在 M4上运行、ADC 上的 DRDY 引脚连接到  MCU_GPIO0_7引脚、该引脚映射到  MCU_UART0_CTSn (A6)。 是否有一个示例说明如何在 M4F 上配置 GPIO 中断? 我尝试遵循 examples/drivers/gpio/gpio_input_interrupt、但到目前为止没有运气。

    这是我的另一个主题: AM623:如何设置 GPIO IRQ 处理程序-处理器论坛-处理器- TI E2E 支持论坛

    谢谢。

    -艾曼

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

    尊敬的 Ayman:

    [引用 userid="647872" url="~/support/processors-group/processors/f/processors-forum/1513359/am623-am623/5832105 #5832105"]I 在 M4上加载我的程序、并有望解决该问题。 稍后再介绍。

    请告诉我这是如何实现的。

    请继续在其他论坛上讨论 GPIO。 对于 GPIO 问题、请通读以下内容、了解它是否在一定程度上为您提供帮助: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1504886/processor-sdk-am62x-gpio-toggling-delay-inaccuracy-on-am62x-m4f-core?tisearch=e2e-sitesearch&keymatch=gpio%20interrupt%20on%20m4f#

    此致、

    Vaibhav