TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28374S: 关于I2C的TI例程咨询

Part Number:TMS320F28374SOther Parts Discussed in Thread:C2000WARE

在TI例程中,看到了如下两个语句:

for(i=I2C_Params->NumOfAddrBytes-1;i>=0;i–)
{
I2C_putData(base, (temp >> (i*8U)) & 0xFF);
}

I2C_sendStartCondition(base);

for循环里应该是把数据送入I2C_O_DXR,数据发送寄存器

这里有几个困惑:

1.这里使用for循环来给DXR寄存器赋值是什么意思呢?for循环内,下一次送入的数据岂不是会把上一次送入DXR寄存器的数据覆盖了吗?

2. 最后一个语句是发送START启动数据发送信号,这个是不是应该放在for循环的前面?因为从I2C的数据发送时序图来看,先发送了START后,才开始传输DXR中的数据的

3. 这里的移位操作为啥是先发送temp的高8位,然后逐步右移8位呢

Yale Li:

具体是哪个例程?提供一下路径

,

user980814:

感谢大佬回复。

该TI例程是位于C2000Ware_4_02_00_00\driverlib\f2837xs\examples\cpu1\i2c里的i2c_ex6_eeprom_interrupt工程

相关截图如下

,

Yale Li:

1. 请看一下spruhx5g_TMS320F2837xS Microcontrollers Technical Reference Manual (Rev. G)第2205页19.6.2.9 I2CDXR Register:

数据被写入I2CDXR寄存器后,就被送入了发送移位寄存器I2CXSR;

如果使用的是FIFO模式,I2CDXR则相当于是发送FIFO缓存器;

2. 使用的是FIFO模式:

i2cLib_FIFO_master_interrupt.c,第143行:

3. 我已经咨询了相关工程师:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1259661/tms320f28374s-function-i2c_transmitslaveaddress_controlbytes-in-i2c_ex6_eeprom_interrupt

,

user980814:

感谢大佬回复!

,

Yale Li:

客气了~相关的工程师正在休假,我们等一下他的回复。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28374S: 关于I2C的TI例程咨询
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1