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.

[参考译文] Starterware/TDA2HV:Starterware 驱动程序可以为 I2C 事务写入的最大数据大小是多少? 是否限制为8字节?

Guru**** 2582405 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586915/starterware-tda2hv-what-is-the-maximum-size-of-data-that-the-starterware-driver-can-write-for-an-i2c-transaction-is-it-limited-to-8-bytes

器件型号:TDA2HV

工具/软件:Starterware

使用 starterware_01_03_00_09
hw_i2c.h  ld_hsi2c.c   
使用此 I2C 驱动程序时,i2c 驱动器是否存在写入限制?
驱动程序可以写入的最大数据大小是多少?
我们正在测试在一个事务中写入23个字节、但软件挂起。
请您分享您的经验。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将此主题移至 TDA 论坛。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ahmed、

    我已将您的问题转交给一位专家进行评论。

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

    您好、Ahmed、


    i2c 写入长度没有限制。

    您是在轮询模式还是中断模式下运行? 传输 API 是否返回任何错误?

    您能否进入函数内部查看执行挂起的位置?

    此致、
    Prasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是在轮询模式还是中断模式下运行?
    >>我们正在中断模式下运行。
    传输 API 是否返回任何错误?
    >>我们最多可以传输12个字节,在传输13个字节时,我们不会接收异步回调。

    请在下面找到我的观察结果、如果我错了、请纠正我的错误。
    我们的 I2C_FIFO_DEPTH 为16、这是只读参数。 根据 I2C_FIFO_DEPTH、我们将 I2CFIFOThresholdConfig 设置为7 (16/2 -1)。
    当我们传输12个字节的 Txstat (I2C_BUFSTAT)为16、这等于缓冲区深度、但当我们传输13个字节的 Txstat (I2C_BUFSTAT)为17时、
    这是否意味着我们超出了缓冲区深度、这就是我们没有接收异步回调的原因。
    由于我们已将阈值设置为7、因此我们应该在7?、
    我们的 Txstat 不应超过7?

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

    您好、Ahmad、

    您是否仍面临此问题?

    此版本之后、几乎没有错误修复。 您是否能够查看最新版本?

    此致、

    Prasad

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

    Prasad、您好!

    是的、我们仍面临此问题、您能否向我发送最新版本的位置来测试此问题?

    谢谢、

    Ahmed

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

    您好、Ahmed、

    最新的 Starterware 版本可从 CDDS 下载: https://cdds.ext.ti.com/ematrix/common/emxNavigator.jsp?objectId=28670.42872.35221.53312

    请注意、对于最新版本、Starterware 没有单独的软件包、这是 Vision SDK 版本的链接。 Starterware 01.07.02将出现在文件夹 ti_compons/drivers/starterware 中。


    此致、

    Rishabh

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

    我在尝试登录 CDDS 时收到错误消息。 看起来我需要创建一个帐户。 您可以帮助解决这个问题、也可以由谁来帮助?

    误差
    如果您看到此消息、则您没有 CDDS 用户帐户。
    请通过导航至 CDDS My Desk -> User Management -> User Requests (CDDS My Desk ->用户管理->用户请求)、联系您的设计团队经理、程序经理或报告经理以您的名义提交新的用户请求。 创建帐户后、请请求他们为您提供对所需数据的访问权限。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ahmed、

    您是如何在没有 CDDS 的情况下获得以前的 Starterware 版本的?

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

    这可能是我的另一位同事、我必须在这里询问谁可以访问。 是否很难访问此内容?

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

    对于需要下载权限的 CDDS 帐户、如果您没有 CDDS 帐户、请与当地 FAE (现场应用工程师)或 TI 客户计划经理联系以获取 CDDS 帐户。

    此致、
    Mariya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Mariya、好的、我将与 Tom Brown 一起了解这一点。


    我有另一个问题、是否可以在 Starterware 中仅集成 i2c 驱动程序? 或者我需要集成完整的 Starterware?

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

    您可以执行任一操作。
    这取决于您的要求。 我们希望您能迁移到最新版本。
    如果由于迁移工作、您希望坚持使用 starterware 01_03_xx、则可以集成新的 i2c 驱动程序。

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

    我们在 Starterware 中使用最新的 i2c 驱动程序进行了测试。 我们看到同样的问题。 请在下面找到我们的问题、该问题是从先前发送的消息中复制的。 您能提供帮助吗、我们还能检查什么?



    您是在轮询模式还是中断模式下运行?
    >>我们正在中断模式下运行。
    传输 API 是否返回任何错误?
    >>我们最多可以传输12个字节,在传输13个字节时,我们不会接收异步回调。

    请在下面找到我的观察结果、如果我错了、请纠正我的错误。
    我们的 I2C_FIFO_DEPTH 为16、这是只读参数。 根据 I2C_FIFO_DEPTH、我们将 I2CFIFOThresholdConfig 设置为7 (16/2 -1)。
    当我们传输12个字节的 Txstat (I2C_BUFSTAT)为16、这等于缓冲区深度、但当我们传输13个字节的 Txstat (I2C_BUFSTAT)为17时、
    这是否意味着我们超出了缓冲区深度、这就是我们没有接收异步回调的原因。
    由于我们已将阈值设置为7、因此我们应该在7?、
    我们的 Txstat 不应超过7?

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

    您好、Ahmad、

    您是在主模式还是从模式下运行?

    当您用13个字节启动传输时,您能否检查文件中的 ISR 函数 LLD_i2c_isr() /i2clib/LLD_hsi2c.c、被调用了吗? instObj->state 的值是什么?

    您还能布置 i2c_irqstatus 寄存器的值吗?

    ASYNC_CALLACK 应用程序回调函数是否正确?

    此致、

    Prasad

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

    首先、我们将显示文件\starterware_01_03_00_09_Valeo_001\drivers\hsi2c.c
    我们不使用文件:\starterware_01_03_00_09_Valeo_001\i2clib\LLD_hsi2c.c

    因此,我们无法检查 instObj->state,因为该对象在 drivers\hsi2c.c 中不存在

    这可能是个问题吗?

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

    请查找以下 I2C 调试数据

    TX 为 I2C_TX_BUFFER_STATUS
    BA 为 I2c4基地址
    ISR 是 ISR 状态 I2CMasterIntStatus()

    ISR =1004=4->Access READY IRQ 使能状态、它表示之前的访问被执行并且寄存器已准备好访问 Gain.1->总线被占用
    ISR =1008 ->接收可用数据,.1->总线被占用
    ISR =100 -> 1->总线是空闲的

    我想我们在传输更多字节时不会收到。


    这就是 ISR 状态在工作场景中对我们的期望:
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100


    这就是 ISR 状态在非工作情况下的外观、(传输15个字节):
    TX=23
    BA=4807a000、ISR =10



    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=4
    BA=4807a000、ISR =100
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=4
    BA=4807a000、ISR =100
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=4
    BA=4807a000、ISR =100
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=3.
    BA=4807a000、ISR =100
    TX=4
    BA=4807a000、ISR =100
    TX=2
    BA=4807a000、ISR =1004
    BA=4807a000、ISR =1008
    BA=4807a000、ISR =100
    TX=23
    BA=4807a000、ISR =10
    TX=7
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prasad、您好!  

    请注意、我们将在 M4_0内核上测试此 i2c 驱动程序。 您认为 i2cdriver 在 A15/M4上的行为是否不同?

    此致、

    Ahmed