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.

[参考译文] CCS/CC2640R2F:I2C 地址已损坏/移位

Guru**** 2590930 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/606716/ccs-cc2640r2f-i2c-address-got-corrupted-shifted

器件型号:CC2640R2F
主题中讨论的其他器件:CC2640

工具/软件:Code Composer Studio

大家好、

我正在尝试实现 CC2640、以便通过 I2C 与外部 RTC 进行通信。  

有趣的是、我尝试使用11011110的从地址、但在示波器上显示了10111100、并且以下数据字节是正确的。 似乎某种程度上地址字节已损坏、就像向左移动一位一样。  

我还尝试使用地址11111111、示波器显示111111;使用10101010、示波器显示01010100。

有人以前遇到过类似的情况吗? 是否有其他设置来纠正此问题?

谢谢。

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

    您确定它不使用7位寻址吗?

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

    您好、JXS、

    我尝试通过 I2C 发送和接收的内容是:

    以下是我的 I2C 器件代码:

    如您所见、我在写入部分中将 WADDR 设置为控制字节0xDE (11011110)、将 txBuffer 设置为地址字节0x01 (00000001);将 RADDR 设置为控制字节0xDF (11011111)、将 rxBuffer 设置为数据字节。  

    我在示波器上得到的是:

    WADDR AS 10111100 (不正确):

    txBuffer 为00000001 (正确):

    RADDR AS 10111111 (不正确):

    我出了什么问题导致了该错误?

    谢谢

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

    请查看技术参考手册中的第21.3.1.2节:www.ti.com/lit/pdf/swcu117。 I2C 模块使用 Jeff 所说的7位寻址。 最后一个、第8个、位是数据方向位。 最后一位由驱动程序/HW 自动附加。 换句话说、当您输入一个8位地址时、会在这个地址后附加一个第9位、并使用8个 LSB。

    因此、您的 I2C 地址的长度应该为7位、并且不包括 R/S 位。

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