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.

[参考译文] TCA9534:I2C驱动程序的实现

Guru**** 2390735 points
Other Parts Discussed in Thread: TCA9534

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/638504/tca9534-implementation-of-i2c-driver

部件号:TCA9534

大家好,

请您回答我的客户的问题吗?
请在下面找到问题。

1:TI只有一个I2C源代码,这一代码描述读写I2C EEPROM。
但我使用的是TI端口扩展器芯片TCA9534,因此我需要一个良好的代码模板,最好不使用中断服务例程。

2:现有文档非常狭窄,在"技术参考手册"中,甚至没有其他接口的常见示例,例如不包括发送/接收。 所以我需要帮助,如何实现I2C读取,在不同的总线参与者上进行“重复启动”。 这是确认扩展器芯片工作的最优雅方式。

3:仅当禁用总线并重新激活总线以读取和写入对TCA9534的访问时,我的当前实现才起作用。 这可以通过命令"I2cRegs.I2CMDR.bit.IRS = 1/0"实现。 是否允许这样做? 是否有更好的方法?

4:上述所有内容都应在具有多个CPU和多个TCA9534的多主机系统中运行。

提前非常感谢。

最佳,

Needhu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨,Needhu,
    遗憾的是,我们的团队(TRX)并不专注于产品的嵌入式处理方面。 我们主要支持模拟侧(原理图问题,为什么我们的波形看起来像这样,等等)。

    TI确实有一个部门专门负责嵌入式处理(包括编码),但只负责MSP430器件。 如果客户使用MSP430或TI处理器,他们将能够提供您所需的支持。

    很抱歉,我不能为您做更多事情了,
    -Bobby
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Bobby:

    我们能否将此帖子移至C2000组? 他们使用C2000进行嵌入式处理。

    感谢您的反馈。

    最佳,

    Needhu

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

    您能帮我解决这个客户问题吗?

    谢谢你。

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

    您正在使用哪个MCU?

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

    F2.8075万是客户正在使用的MCU。

    谢谢你。

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

    正如您所说,我们没有专门针对TCA9534的示例。 如果您能够明确地告诉您所面临的问题,我们可以尝试解决它。 我感觉您可以通过"重复启动"与TCA9534交谈。 为什么必须发出I2C重置才能重新激活?

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

    请查找我的客户的反馈。

    感谢您的回复。 以下是两个紧急问题:
    1.我们需要多主机模式的详细说明或源代码。 特别感谢有关"仲裁损失"位处理的信息。
    2.在两次传输之间,我使用“I2cRegs.I2CMDR.Bit.IRS”关闭I2C硬件。 它对我来说很好,但它是否允许这样做?


    谢谢你。

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

    您是否有反馈意见?

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

    尼德胡

    很遗憾,我们没有任何代码模板可供您共享。 根据您的消息,我感觉I2C在多主机设置中工作。 您不需要重置读写访问之间的I2C。 我不明白为什么必须在传输之间重置I2C模块。 可能是我漏掉了一些信息。

    从F2.8075万的角度来看,您只需在主模式下配置I2C (在多主模式下工作时)。 I2C总线仲裁应由I2C外设自动处理。 简而言之,当两个(或)多个I2C主控同时在I2C总线上开始传输时。 将SDA线保持在较低时间的I2C主控将赢得仲裁。 当I2C主设备失去仲裁时,它会自动切换到从属接收器模式并设置仲裁丢失位(I2CSTR.ARBL)。 在I2C一章的时钟同步和仲裁部分的F2.8075万 TRM中对此进行了详细说明。

    I2CMDR.RM = 1激活重复启动模式。

    此致,

    Manoj

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

    您好Manoj,

    我是Nedhu谈论的问题的客户。 您是否可以查看该代码,并作为专家给我一些建议?

    代码工作正常,但我需要知道这些驱动 程序功能有多好,有多可靠。

    谢谢

    弗兰克

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

    抱歉,我很乐意回答有关外设功能的具体问题。 但是,我无法查看您的代码。

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

    Manoj

    不用担心代码本身非常小,我唯一需要知道的是为什么必须在传输之间重置I2C单元。 明年我又回到办公室了

    祝您好运,明年再见

    此致

    弗兰克