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

关于DM6437的I2C模块

1、如图所示,I2C模块说明文档里说预分频模块时钟频率需介于6.7-13.3MHz之间,

      

        而EVM板板级支持库里的初始化却将预分频因子设为13,如此预分频模块时钟为27M/13,不在要求范围内,是哪里的问题?

        

2、我将该初始化代码嵌入到自己的程序中来对I2C模块进行初始化,修改其中的ICPSC、ICCLKL、ICCLKH数值,使其时钟速度成倍变大或变小,测试

      Int16 EVMDM6437_I2C_write( Uint16 i2c_addr, Uint8* data, Uint16 len )和Int16 EVMDM6437_I2C_read( Uint16 i2c_addr, Uint8* data, Uint16 len )

      用CCS3.3的profile工具查看它们的执行时钟数目并不改变,说明对模块的初始化并没有生效,这又是为什么呢?如何才能有效果呢?

Shine:

1. 这里确实是SDI的例程有问题,你自己写的时候,要遵循这个要求。例如

Int16 EVM6424_I2C_init( )
{
    I2C_ICMDR   = 0;                    // Reset I2C
    I2C_ICPSC   = 2;                   // Config prescaler for 27MHz
    I2C_ICCLKL  = 40;                    // Config clk LOW for 100 kHz
    I2C_ICCLKH  = 40;                    // Config clk HIGH for 100 kHz
    I2C_ICMDR  |= ICMDR_IRS;            // Release I2C from reset
    return 0;
}2. Profile工具的时钟是cpu clock不是I2C clock。

Weiliang Cheng:

回复 Shine:

你好,谢谢回复

第二个问题,profile工具看的是一段代码运行消耗的CPU周期数,CPU时钟是固定的,所以看的是代码的运行时间。而在两次不同的I2C模块配置时,前边2个接收字节和发送字节的函数运行时间是一样的,能说明I2C配置没有生效吧?

Shine:

回复 Weiliang Cheng:

I2C配置有没有生效量一下看一下时序对不对,收发的数据对不对。

Weiliang Cheng:

回复 Shine:

你好

数据收发没有问题,都是正确的,可就是测量速度时,发现配置貌似没有生效。可能的问题在哪里呢?

Shine:

回复 Weiliang Cheng:

执行完配置代码后,看一下相应的寄存器里的值有没有配置成功。

Weiliang Cheng:

回复 Shine:

谢谢回复。

嗯呀,看寄存器是配置生效了。

但是读取FPGA那头一定字节的数据,通过CCS profile测得的时间并不改变。

FPGA传递数据应该很快,关键路径不在它那边,难道是这种测量方法行不通吗?

赞(0)
未经允许不得转载:TI中文支持网 » 关于DM6437的I2C模块
分享到: 更多 (0)