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.

[参考译文] MSP430FR2355:I2C 时钟拉伸...如何使用???

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1121691/msp430fr2355-i2c-clock-stretching-how-to-use-this

器件型号:MSP430FR2355

我正在 I2C 上以100kHz 的频率与 SenseAir CO2传感器进行通信。  我在写寄存器后很难读回寄存器...我通常读回00或 FF ...这种读回似乎与 R/W 寄存器集相关联,因为我可以从寄存器的只读块中获取数据... 组件按预期进行堆叠和堆叠、即使在数据上也是如此。  我尝试将时钟降低到50kHz 和25kHz,但仍然有同样的问题…

我认为这可能是一个时钟拉伸的问题,我想尝试一下,但用户指南中关于如何执行此操作的内容非常少...有人能告诉我如何使用 UCSCLLOW 位吗?

谢谢

Steve

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

    在 MSP430端、时钟扩展是自动的、在没有 UCCLTO 的情况下、如果从器件扩展、主器件将永远等待。

    我找到了 K20-K50的文档"I2C 通信指南2_15"。 图7表明、它可能会将时钟拉伸40ms。 在 I2C 世界中、这 确实是一段很长的时间、并且比任何 UCCLTO 超时都要长。

    如果您使用的是 UCCLTO、我怀疑您需要将其关闭、并希望获得最佳效果。

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

    你好,Bruce。。。

    那么、我猜 UCSCLLOW 位是由从器件写入的、而不是主器件写入的、这是正确的吗?   

    我正在使用 CCLTO 上的超时,但我从未进入过那里...由于上电,组件会将地址封装几次,但随后它会在读取和写入时同时将地址和所有数据封装...我看到的问题是,只有在我不这样做时,才会执行写入操作 切换使能行...我说"不接受"仅是 bcz、即使组件 ACK 的所有内容、对该寄存器的后读也会生成默认值... 正如我说的那样,我试着减慢了时钟,但没有任何结果。。。。我是用 UCSCLLOW 位到达的,老实说,我很高兴我没有需要用它来做猴子。。。  我会查看你建议的文档,看看我是否能收集任何内容…

    我已经尝试延长使能开始和停止时的前端和后端、但没有结果...我认为如果我能够以100kHz 的频率读取和写入、使能始终处于开启状态、则时钟拉伸可能不重要??? (您在这里的想法)

    Steve

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

    我找到的文档没有提到"启用"行。 这就像芯片选择吗? (某些 I2C 器件上确实会出现 CS。) 它甚至可能不适用于您的器件、但我不知道这是什么。  我会说使用什么方法。

    我的文档还提到(第3.6节)、如果它很忙、它将会 NACK ("这不是错误")。

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

    抱歉...部分是  
    https://senseair.com/products/power-counts/sunrise-hvac/

    它使用使能端...至少需要35mS 的等待时间...我在使能端的前端和后端尝试了61ms,但没有任何可用...就像我说过的,如果我在配置期间启用,然后不关闭使能端,我可以读取和写入寄存器。   

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

    您好、Steve、

    听起来 MSP430上的 I2C 通信工作正常。   它听起来不需要时钟扩展、听起来传感器是正确的 ACK / NACK、只是不会返回您期望的数据。   因此问题就在于 SenseAir 传感器的行为。  是这样吗?  如果是、我可能不会做出太多贡献、但继续在这里进行对话是可以的。   

    您是否有 I2C 线路以及 EN 和 RDY 线路的任何 LSA 捕获?  当我将 I2C 调试到任何传感器时、我发现这样做非常有帮助。   

    Thannks、

    JD

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

    JD…

    我附上了一份包含很多照片的文档...非常显而易见...您会注意 到:

    不切换使能的图片--这些看起来不错

    PICS 切换使能等待35mS --设备不能通过,我认为 bcz 它处于唤醒状态--这里的读数与写操作不匹配

    PICS 切换使能等待15ms ----设备在唤醒前将地址插回,然后将所有其他设备插回----这里的读操作与写操作不匹配

    需要注意的是...当启用拉低时切换时,我注意到数据变为低电平,然后时钟创建起始...线路保持低电平,直到您在启用时启动以后的读写操作,使能变为高电平。 时钟变为高电平、然后数据变为高电平、等待35或15ms、并首先开始执行事务。

    最后一张图片显示,即使线路保持在低电平,我似乎也能够读取设备上的只读寄存器....设备有一个只读块,然后有一个读取块/WRITE....no无法确定数据是否良好,因为它们不建议任何默认值....所有 我知道、在 R/W 寄存器部分 、当通过使能切换进行读取时、我总是返回 FF 或00。

    e2e.ti.com/.../CO2_5F00_I2C.docx

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

    TDE7318 (修订版11)第12页使 EN=0听起来像一个相当重的锤子("所有易失性存储器丢失")。 我想这就是您的寄存器设置所在的位置。

    是的、虽然第13页的流程图提到了"之前的传感器状态数据"、但在认知方面存在着不一致的情况、因此可能是寄存器被(重新)加载的地方。

    您似乎希望始终保持 EN=1、至少直到您的器件运行得越来越少。

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

    嗯...是的...是的,我使用的是文档流程图,并且完全忽略了这一说法...但是,我使用 MSP430fr2355开发 BD 的3.3V 电压为 VDDIO 和 VBB 以及线路上的上拉电阻器供电...我是从 MSP 控制 EN。  请参阅 TDE7318的顶部图第6页、仅差分是 MSP 驱动使能。  DVCC 是稳压器的输出、根据 p 12。

    '当 EN 引脚被驱动为低电平时、内部电压稳压器将电路断电、并且所有易失性存储器都将丢失。 "

    在这种配置中,我没有使用 DVCC……从 TDE7318第6页的图片中,我认为 DVCC 正在为 VDDIO 供电,而 VDDIO 又在为电路供电。  我认为 VDDIO 是内部电路的电源..... 但是、我不确定是否正确、因为 PSP12440第3页建议 VDDIO 仅为 nRdy 和 TXD/SCL 供电...

    我想我会尝试写、读、然后断电以查看结果是否不同...顺便说一句、我的物理配置现在是 TDE7318第6页的底部图。