|
引用:写道:
我现在也比较迷茫,不知道怎么解决,我现在第8个脉冲下降沿3us后SDA拉高,我想问一下,你那边ACK低电平持续多长时间?
另外您说的发送端我的同事说做不到释放SDA与第8个脉冲下降沿同时到达,因此我现在不知道是不是他们之间的延迟太大的原因?可否帮我分析一下呢?真的麻烦你了。
还由您说的设为Master recieve 方式还能接收,是因为会自动变为slave recieve方式,我不太明白,在寄存器里CMDR设好工作在哪种方式应该就不会变了吧?怎么会自动变呢?另外是否工作在ack方式除了设置寄存器I2C_I2CMDR_NACKMOD_ACK,还有哪些地方需要设置呢?可否把你工作在此方式下寄存器设置发给我看一下,发到邮箱也行,我在对比一下,不胜感激 我这边从第8个时钟的下降沿开始到第9个时钟的下降沿为止SDA全部是低电平。只是在第8个时钟的下降沿处SDA有瞬间的高电平。
关于自动转换工作方式请参考C6000 I2C的文档,Arbitration一节。
寄存器方面我已经和你的程序对照过了,应该是一样的。
I2C_Config C6713_I2C_Config = {
// Uint32 i2coar;
I2C_FMKS(I2COAR,A,OF(DSP_ADDRESS)), // test用アドレス
// Uint32 i2cimr;
I2C_FMKS(I2CIMR,ICXRDY,MSK) |
I2C_FMKS(I2CIMR,ICRRDY,UNMSK) |
I2C_FMKS(I2CIMR,ARDY,MSK) |
I2C_FMKS(I2CIMR,NACK,MSK) |
I2C_FMKS(I2CIMR,AL,MSK),
// Uint32 i2cclkl;
I2C_FMKS(I2CCLKL,ICCL,DEFAULT),
// Uint32 i2cclkh;
I2C_FMKS(I2CCLKH,ICCH,DEFAULT),
// Uint32 i2ccnt;
I2C_FMKS(I2CCNT,ICDC,DEFAULT),
// Uint32 i2csar;
I2C_FMKS(I2CSAR,A,DEFAULT),
// Uint32 i2cmdr;
I2C_FMKS(I2CMDR,NACKMOD,ACK) |
I2C_FMKS(I2CMDR,FREE,BSTOP) |
I2C_FMKS(I2CMDR,STT,START) |
I2C_FMKS(I2CMDR,STP,NONE) |
I2C_FMKS(I2CMDR,MST,SLAVE) |
I2C_FMKS(I2CMDR,TRX,RCV) |
I2C_FMKS(I2CMDR,XA,7BIT) |
I2C_FMKS(I2CMDR,RM,NONE) |
I2C_FMKS(I2CMDR,DLB,NONE) |
I2C_FMKS(I2CMDR,IRS,NRST) |
I2C_FMKS(I2CMDR,STB,NONE) |
I2C_FMKS(I2CMDR,FDF,NONE) |
I2C_FMKS(I2CMDR,BC,BIT8FDF),
// Uint32 i2cpsc;
I2C_FMKS(I2CPSC,IPSC,DEFAULT)
};
|
|