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.

[参考译文] CCS/TMS320F28027:I2C 模块中没有 SCL?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/776440/ccs-tms320f28027-no-scl-in-i2c-module

器件型号:TMS320F28027

工具/软件:Code Composer Studio

大家好、

我使用 I2C 连接到具有以下时序图的从器件(MCP9808):

我对 TMS320F28027中的 I2C 模块有一组问题:

1是否设置 I2caRegs.I2CSAR = 0x18;这意味 着我不应该只发送从器件地址寄存器地址、而 MCU 将自动发送!! 从器件是否以2 ACK (1表示从器件地址、1表示寄存器地址)进行响应?

2为什么设置时钟后看不到 SCL 的频率? 即使没有完成发送和接收、我也应该看到 SCL 时钟、对吧!?

//================================================================================ 配置 I2C 模块时钟。

I2caRegs.I2CMDR.bit.IRS = 0;//将 I2C 模块置于复位状态以配置时钟

I2caRegs.I2CPSC.all = 5;//将 IPSC 设置为5会产生10MHz 的模块时钟(模块时钟= CPU 时钟/(IPSC + 1))

//主时钟
// Tmod *(ICCH +)*和 TCL +(ICCH) 公式、其中 Tmod = 1/模块时钟、d = 5//
高电平和低电平时间均为12.5us、从而产生25us 的周期性时间、相当于40kHz I2C 频率
I2cRegs.I2CCLKL=10;//120;
I2cRegs.I2CCLKH = 5;//120;
/I2cARM.I2CMT.1;I2CMT.R = 1; //在每个停止条件
I2caRegs.I2CMDR.bit.IRS = 1之后复位;//使 I2C 模块退出复位状态 

3 在 EEPROM 示例中,我在 SCL 中得到以下信号,它是否应该是这样!?

谢谢、

此致、

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

    1.是的。 一旦 I2CSAR 被配置、模块就会在通信期间注意发送从器件地址。

    2.初始系统时钟频率是多少?

    3.我会检查这个

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

    配置 I2CSAR 后、只有 I2caRegs.I2CMDR.bit.STT 设置为1、通信才会开始、对吧! 另外、在发送寄存器地址之前、在 I2CSAR 配置完毕后、我是否应该检查传感器的 ACK?

    2.初始系统时钟频率为60MHz、我的传感器的 SCL 可以达到400kHz。
    设置 I2caRegs.I2CMDR.bit.MST 后、时钟是否出现在 SCL 上? 根据《TMS320F2802x Piccolo 技术参考手册》第523页:"当 I2C 模块被配置为 I2C 总线上的一个主器件时、主时钟出现在 SCL 引脚上。"

    SCL 空闲时是否有时钟? 我是说在停下来后!

    我没有在那里使用任何 EEPROM、我只是想查看 SCL 时钟、那是输出。


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

    1.你是对的、除非有一个通过设置起始位(I2caRegs.I2CMDR.bit.STT)启动的传输、否则你将看不到 SCL 引脚上的时钟。 关于 ACK、是的、您应该在继续传输前检查传感器的 ACK 或 NACK。 此信息可在 I2CSTR (状态)寄存器中找到。

    2、时钟只在启动一个传输时出现在 SCL 上。 当模块空闲时、SCL 引脚上不会有时钟。

    3.时钟看起来刚刚好,但是时钟的形状取决于用于 I2C 总线的上拉电阻。 如果与总线电容相比、上拉电阻器较弱、则 I2C 总线顶部稳定至1所需的时间将较短。 您可以创建强拉(通过减小拉电阻值)以获得更好的时钟形状。

    此致、
    Praveen