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.

[参考译文] TMS320F28.0025万C:I2C没有时钟线以及如何设置初始化

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1087806/tms320f280025c-i2c-does-not-have-a-clock-line-and-how-to-set-initialization

部件号:TMS320F28.0025万C

大家好,

以下是客户提出的问题,可能需要您的帮助:

使用F2.8025万C芯片的I2C模块。 开发板是主板(I2CA模块是主板),客户的项目板是从板(I2CB模块是从板)。 尝试使用例程i2c_Ex5_MASTER_SLAVE_INTERRUPT。 使用示例2:I2CA作为主接收器和I2CB工作从发射器。 运行时,逻辑分析器获取以下信号线:仅SDA信号线,无SCL信号线。 客户想知道原因是什么。

还有一些问题:

1)引脚配置:在日常SDA中,SCL被配置为输入和上拉,为什么要配置? 这两个引脚一般不应配置为漏极开路输出?

2) I2C模块具有FIFO功能,FIFO具有中断,I2C本身具有TX和RX中断。 在例程中为两个都打开了中断,如何区分它?

3)客户不打算使用FIFO功能,那么如何初始化主从设置?  

您可以帮助检查此问题吗? 谢谢。

此致,

樱桃

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

    樱桃,

    运行时,逻辑分析器获得以下信号线,仅不使用SCL信号线。 客户想知道原因是什么。[/QUOT]

    示例对SDA/SCL引脚使用GPIO26 / 27。 为什么要探测GPIO43?

    #define device_gPIO_PIN_SDAA       26U // I2C SDAA的GPIO编号
    #define DEVICE_GPIO _PIN_SCLA       27U // I2C SCLA的GPIO编号

    1)28.0025万set-initialization"]1)引脚配置:在例程中,为什么要配置SCL,为什么要配置为这种输入和初始化? 这两个引脚一般不应配置为漏极开路输出?[/QUOT]

    I2C_GPIO _INIT中的以下语句将它们配置为SDA / SCL外设,并使输入引脚配置无效。 您不需要启用openDRAIN。 I2C_GPIO _INIT函数中提供的配置说明了如何将GPIO配置为I2C引脚。

       GPIO_setPinConfig (DEVICE_GPIO CFG_SDAA);
       GPIO_setPinConfig (DEVICE_GPIO CFG_SCLA);

    2) I2C模块具有TX,中断和I2C初始化功能,并且它本身具有I2C中断。 在例程中为两个都打开了中断,如何区分它? [/引述]

    WREAD中断源寄存器用于确定中断源的WRITE_READ_TX_RX_FIFO函数

    3)108.7806万set-initialization"]3)客户28.0025万客户不打算使用Master函数,然后如何初始化从属设置?  [/引述]

    如果客户不打算使用FIFO,此示例可能不有用。 客户是否希望使用轮询(或)中断选项。

    客户是否希望逐字节进行事务处理?

    此致,

    Manoj

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

    您好 ,Manoj,

    感谢你的帮助。

    客户使用开发板作为主板(I2CA模块作为主SCL:GPIO27,SDA:GPIO26),项目板作为从板(I2CB模块作为从,SCL:GPIO3,SDA:GPIO2)。 使用TI的函数对例程i2c_Ex5_MASTER_SLAVE_INTERRUPT,引脚设置和I2C初始化进行实验。

    ----------------
    //! 信号| I2CA  | I2CB
    //! ----------------
    //! SCL | GPIO27 | GPIO3
    //! SDA | GPIO26 | GPIO2
    //! ----------------

    // Example2:I2CA作为主接收器和I2CB工作从发送器//

    // I2CA =主接收器
    // I2CB =从属发射器
    // I2CA生成
    // 1)启动条件
    //2) I2CB地址(从属地址)+写入模式
    // 3) I2CB_TXdata的传输起始地址
    // 4) I2CA生成重复的启动条件+读取模式
    // 4) I2CB (从属)传输I2CB_TXdata的内容
    // 5) I2CA接收到的数据存储在I2CA_RXdata阵列中
    // 6) I2CB_TXdata和I2CA_RXdata的内容应匹配

    示例2:I2CA作为主接收器和I2CB工作从发射器例程此时无法调试。 通过刻录到程序进行初始化后,由于SCL过低(I2C线路繁忙),无法进行通信。 以下是2个问题:

    1)如何将I2CA的初始化设置为主接收器(开发板上的I2CA模块作为主接收器)

    2)如何设置I2CB工作从变送器的初始化(项目板为从变送器(I2CB模块为从变送器)

    3)此外,您能否帮助指定以下四个功能及其应用场景所实现的主要功能?  

    答 I2C_MasterReceiver (&I2CA);  

    B.  I2C_MasterTransmitter (&I2CA);

    c. handleI2C_ErrorCondition (&I2CA);

    D. write_read_tx_RX_FIFO (&I2CA);

    谢谢,此致,

    樱桃

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

    樱桃,

    在先前的POST中,您无法探测SCL信号。 你能解决这个问题吗? 此外,您是否尝试使用轮询方法执行字节到字节事务? 请回答这些问题。

    1)如何4033如何在主板上将开发模块设置为I2CA (I2CA初始化主模块)

    I2C_MasterReceiver (&I2CA)功能负责将I2CA配置为主接收器  

    2)如何设置从属模块(ICB/I2CB/I2从属 模块的初始化)

    当I2C主控(i2CA)传输I2CB从地址时, i2cBIR中断会被触发,因为I2CB被寻址为从控。  handleI2C_ErrorCondition函数随后检测中断源并检查I2CA (主控)是否需要读/写操作(基于SDIR位)。 然后,I2CB在handleI2C_ErrorCondition函数中被配置为从属发射器/接收器。

    d.</s>403.3642万 write_read_tx_RX_FIFO (&I2CA);
    [/quote]

    a) b) c)已在中说明。  使用WRITE READ_TX_RX_FIFO函数读取TX / RX FIFO的内容并根据上下文填充相应的缓冲区(传输模式/接收模式)

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

    您好 ,Manoj,

    在4034在之前的帖子中,您无法探测信号。 你能解决这个问题吗? 此外,您是否尝试使用轮询方法执行字节到字节事务? 请回答这些问题。[/QUET]

    是的,现在他们能够探测它,但只有一个字节:start+SlaveID。  因为从属设备的SCL始终较低。  此外,他们还没有尝试使用轮询进行字节到字节的事务。

    I2CA_MasterReceiver28.0025万set-initialization/4034326#4034326"]I2CA_MasterReceiver (403.4326万 ( &quote403.4326万&quote配置接收器)[I2CA]

    然后如何进行轮询? 例如,他们想要在计时器中设置一个500-MS时钟,每500 MS读取一次从属数据。 需要什么设置,什么功能被称为?

    I2C28.0025万set-CB/4034326]I2C中断403.4326万中断主控器(i2IR_I2I   )在初始化过程中检测中断时,是否需要以I2ISR/I2ISR_从控制器的地址来检测中断(i2I),并检测中断,并检测I2ISR_I2ISR_信号源的中断,从而检测中断时检测中断的状态(i2ISR_I2ISR_I2I) 然后,I2CB在handleI2C_ErrorCondition函数内配置为从属发射器/接收器。
    [/quote]

    您能否帮助指定如何将 I2CB设置为从属设备初始化的步骤? 对于他们当前使用的例行程序,SCL线始终为低,无法 传输数据。

    28.0025万set-CB/4034326#4034326"]当403.4326万当I2C403.4326万I2C从控制器(i2ISR/I2CA/ 中断)初始化时,I2ISR[由于I2ISR]发出I2ISR/中断,I2ISR]发出I2ISR[中断,I2ISR]中断,I

    关于此陈述,客户有以下问题:

    1)在TI例程中,有两种中断模式且都已启用,如何确定是否触发了i2cISR中断或i2cAFIFOISR? 此外,手册中规定只能选择两个中断中的一个。  那么,为什么在官方TI例程中使用了两个中断?

    2)如果中断成功触发,从机从哪个功能向主机发送数据? 当主机接收数据时,他们可以从哪个功能接收从机的数据?

    3)您能否帮助提供更多有关I2C的文档,客户希望了解更多信息。

    28.0025万set-initialization/4034326#4034326"]使用403.4326万使用Write_Read_TX_TX_reflecters/tranfifef_contents403.4326万Write_Read_TX_TX_reflecters/tranfifef_contents (根据接收器的模式和上下文)

    此功能是否可以在其他地方使用,例如,在定时器中设置500-MS时钟,CAN it be used?

    Thanks and regards,

    Cherry

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

    樱桃,

    我很困惑。

    您是否正在尝试获取I2CA和I2CB彼此通信的示例(或者)您是否正在尝试使用其中一个I2C与另一个从属设备通信?

    如果您正在与另一个从属设备(而不是I2CB)通信,您是否从从属设备收到了ACK?

    您正在尝试通信哪个从属设备?

    此致,

    Manoj

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

    您好 ,Manoj,

    请参阅说明:他们从未尝试与另一个从属设备通信,现在他们的项目是将F28.0025万C用作从属设备。  

    谢谢,此致,

    樱桃

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

    如果F28.0025万C I2C是从属设备,主设备是什么? 当寻址时,F28.0025万C I2C是否正确发送了ACK信号。

    此外,解释您要实现的目标是什么? 需要传输(或)接收多少I2C字节? 尝试从F28.0025万 I2C (在从属配置中)读取什么?