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.

[参考译文] I2C 通信 I2C0 --> I2C1

Guru**** 2559900 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612627/i2c-communication-i2c0-----i2c1

器件型号:TMS320C6713B

工具/软件:TI C/C++编译器

您好!

我正在尝试在 TMS320C6713 DSK 套件上的 I2C0和 I2C1之间建立通信。 I2C0配置为主器件、I2C1配置为从器件。 以下是我为其编写的代码:

/********* ///I2C0

寄存器配置、作为主

器件/*************** //
先前定义的宏寄存器
//将 I2C0置于复位状态*/
I2C0MDR_REG &&(~(1UL <<5));

I2C0OAR_RE= 0x0;
I2C0IER_REG = 0x0;//禁用中断

//预分频寄存器分频器,FP = SYSCLK2/(PSC+C04
);I2C0PSC_REG = 0x4 // SYSCLK2 = 55、SO FP = 11MHz (必须在6.8到13.3MHz 之间)

//I2C 时钟= 220khz
I2C0CLKH_REG = 20;
I2C0CLKL_REG = 20;

I2C0SAR_REG = 0x50;//将 I2C1作为从

器件 I2C0CNT_REG = 3;//以组形式发送到传输

///I2C1

寄存器配置、作为从

器件/*************** /
DEVCFG_REG |= 1;//在器件配置寄存器中启用 I2C1。 McBSP1禁用

I2C1OAR_REG = 0x50;//主器件使用的自身地址
I2C1IER_REG = 0x0;//禁用中断

//将 I2C1启用为从
器件 I2C1MDR_REG = 0x2020;//也仅使用0x0020进行尝试。

//在开始停止条件
I2C0MDR_REG = 0x2e20时将 I2C0作为主器件启用

;while (~(I2C0STR_REG 和0x1000));//等待总线空闲

//写入数据发送
I2C0DXR_REG = 0x11;

//等待位被传输
,而~(I2C0STR_=== 0x00=)=/==== 0x00REG=

/***
程序始终停留在上述 while 循环中。 这些位不会被传输。 此外、在数据传输期间、在 SCL 上观察不到时钟。
***/ 

如上一条注释所述、使用示波器时、SCL 线上未检测到时钟、I2C0STR 寄存器的 ICXRDY 位始终为0、表示位尚未传输。 请告诉我配置中可能存在错误的地方。

此致、

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

    我已通知软件团队。 他们的反馈将在此处发布。

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

    n`t、这是一个非常旧的 DSP 内核、因此我们没有评估平台、但 C674x/OMAPL13x 器件上提供了相同的 I2C 接口、因此我们可以为您提供一些 I2C 代码、以便您使用 CSL 进行参考。 请在此处查看 I2C EEPROM 和 IO 扩展器示例:
    processors.wiki.ti.com/.../QuickStartOMAPL1x_rCSL

    希望这对您有所帮助。

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但不幸的是、我没有任何基于 C674x 的套件。 我相信 C6000平台中使用的 I2C 模块是相同的。 因此、为任何平台编写的代码很可能会发挥作用。 寄存器地址很可能会有所不同。 您能否检查可能出现错误的代码(因为 C6000处理器可能包含相同的 i2c 模块)??