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.

[参考译文] MSP430I2020:I2C 处于10位寻址模式?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/678497/msp430i2020-i2c-in-10-bit-addressing-mode

器件型号:MSP430I2020
主题中讨论的其他器件: MSP430WARE

您好! 如何在10位寻址中使用 MSP430I2020 I2C? 是否有 driverlib 示例?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有尝试过,但是 SLAU335 sec 12.3.5.2.3让它看起来很简单--只需设置 UCB0CTLW0:UCSLA10和/或 UCA10,USCI 就会完成其余的工作。 图12-14和图12-12/13在 CPU 可见的指示中看起来非常相似。

    我的 driverlib 源文件的副本中没有提到 UCSLA10 (或 UCA10)、因此我认为 driverlib 并不直接支持它。

    但是、图12-17声称当 USCI 未处于复位状态时、您可以设置 UCSLA10、因此您可能只需在调用 init()后直接设置它。 (我在想大师级;如果你用 UCA10制作一个10位从器件、你可能需要一个不同的技巧。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我本应该进一步看一下--看来 EUSCI_B_I2C_setSlaveAddress()采用 uint8_t,所以你可能也必须显式设置 UCB0I2CSA。

    我现在看的是 msp430ware_3_80_03_07、因此可能自那时以来已经有所改进。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 我注意到它需要设置 UCA10、但它不知道外设是否处理正确的地址传输。

    控制器将是从器件、但我认为配置并不不同。

    这是 MSP430Ware 的最新版本、因此我必须通过寄存器设置地址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于一个10位从器件、SLAU335 sec 12.3.5.1.3 (类似地)建议、一旦您设置 UCA10、器件就会处理所有这些问题。 您的主管是否知道如何发送额外的 SLA 字节当然是一个单独的问题、但我假设这就是您达到这一点的方式。

    浏览 driverlib 源代码--我建议您 skim eusci_b_i2c.c 以查看其中的内容--在您调用 eUSCI_B_I2C_enable ()之前,UCSWRST 似乎不会被清除,因此您应该能够在 initSlave()和 enable()之间设置 UCA10。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的建议!