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.

[参考译文] TM4C1294NCPDT:ADS7142器件功能模式

Guru**** 2473260 points
Other Parts Discussed in Thread: TM4C1294NCPDT, ADS7142

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/679781/tm4c1294ncpdt-ads7142-device-functional-modes

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: ADS7142

我已随当前用于执行单个寄存器读取和写入函数的每个.c 文件附上了字文档。  一个标记为“工作”的数据从分析仪上的寄存器0x20中得到正确的0x03数据,如下所示:

下面的分析器屏幕截图来自我在 main 中使用预先声明的函数(该函数当前不起作用):

导致不工作代码中错误的原因似乎是存在 UART 语句,这些语句在“工作”文档的第7页中突出显示。  这两条语句中的一条语句为处理器或内核提供了足够的延迟或条件、以便正确地传输和接收数据。  

为便于参考,我已附上 ADS7142数据表和 TM4C1294NCPDT 数据表。  在代码中、我只是读取 AUTO_SEQ_CHEN (0x20)寄存器的复位值:其复位值为(0x03)。  单个寄存器读取操作码为0x10。  非常感谢您的帮助

e2e.ti.com/.../SingleRegisterRead_5F00_working.docxe2e.ti.com/.../SingleRegisterRead_5F00_notworking.docxe2e.ti.com/.../ads7142.pdfe2e.ti.com/.../tm4c1294ncpdt.pdf

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

    读过您的帖子+代码后的初步问题对于正在工作的示例、您能否尝试注释掉 UART 数据的发送、以便我们可以在 UART 未将从地址集添加到读取寄存器的延迟时查看其是否工作或失败?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    修改了以下代码、这样除了从器件的寄存器映射接收预期加电复位数据所需的两个 UART 语句之一之外、所有 UART 语句都被删除。  我附加了这一修改后的代码并突出显示了导致异常的 UART 语句。   

    更详细地说、ADS7142数据表中的图49和50是我们使用该代码开发的 I2C 事务。  我建议打印第28页和第29页以供参考。  TM4C1294NCPDT 数据表的第1290-1293页包含主机发送/接收单个或多个数据字节。  据我所知、i2c.c 源文件中缺少错误服务流程、但我相信、无需实施错误检查/错误服务、即可完成此代码构建块。

    我将发布不同寄存器(0x2C)的另一个复位值的结果、以验证当前代码配置。

    将此代码压缩到函数中以从 main 调用后、我将提供更新:但 UART 异常非常奇怪!

    此致、祝您一切顺利、

    将会

    e2e.ti.com/.../ADS7142RegisterMap.docxe2e.ti.com/.../i2c.c.docxe2e.ti.com/.../i2c.h.docx

    e2e.ti.com/.../SingleRegisterRead_5F00_functioningbutwithuartinthere_2800_justtheoneline_2900_.docx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于硬件、我将使用 TM4C1294NCPDT Launchpad 和 ADS7142 BoosterPack、如 launchpad 产品页面上所示进行连接、并使用一个 salae 逻辑分析仪进行调试(任何采样速度高于100-200kHz 的分析仪都应该执行此操作、我将以标准100kHz 的频率运行 I2C。

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

    尊敬的 William:

    [引用 USER="William Santos56"]因此,详细地说 ,ADS7142 数据表中的图49和50是我们使用此代码开发的 i2c 交易。

    您是否有任何完全开发的示例、您可以与我分享 Saleae 捕获数据、以便我有一个比较基准? 可能来自另一个 MCU、只需查看预期工作的 I2C 信号应显示为什么。

    另外、我有 Saleae 自己、因此将 Saleae 捕获文件包含在您的帖子中、而不是图片中、实际上会非常有帮助。 此外、我更喜欢获取.c 文件而不是.docx 文件、因为我所做的只是将其复制粘贴到 Notepad++中、以便我可以清晰地读取代码...

    通常、如果 UART 延迟导致某种情况起作用、则要么速度太快(此处不是这样、因为您使用的是100kbps、这很好!)、要么从器件需要更多的时间来回复... 通过全面了解 ADS7142正常工作的 Saleae 捕获以及 TM4C 的故障将帮助我了解 I2C 驱动器可能生成的任何时序问题、并查看停止/启动条件以及在每种情况下触发它们的时间 (根据您的屏幕截图、我无法完全查看工作示例)。

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

    拉尔夫

    我发现、根据勘误表、在每个 I2CMasterControl()函数调用之后插入一个 SysCtlDelay(100)可以解决这里的问题、但我现在遇到了另一个问题。  我无法从 salae 分析器附加.logicdata 文件、因为论坛不接受此文件扩展名。  谢谢

    此致、

    将会

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

    不确定是否将它们隐藏在.zip 中可以解决此问题。 不管怎样、我通常会建议使用分接盒或 Google Drive、但由于我们都是 TI、所以只需通过电子邮件向我发送文件即可。

    不管怎样、如果您想继续在新主题中讨论新问题、那么我不介意、我没有意识到这些问题是不相关的。 只需将您之前的答案标记为分辨率、我们就可以将其关闭。

    对于任何未来的读者、所提及的勘误表为 I2C_08。