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

C6726模拟IIC相关问题求解

老师您好!

我最近在用C6726做一个项目,使用GPIO来模拟IIC通讯,所以用McASP中的PDIR、PDOUT、PDIN寄存器来分别配置管脚方向、输入、输出。请问这样会有什么弊端吗?

配置信息:

#define SDA_OUT      (MCASP0_PDIR  |= 0x00000010)
#define SCL_OUT      (MCASP0_PDIR  |= 0x00000008)
#define SDA_IN       (MCASP0_PDIR  &= ~0x00000010)
#define SDA_HI       (MCASP0_PDOUT |= 0x00000010)
#define SDA_LOW      (MCASP0_PDOUT &= ~0x00000010)
#define SCL_HI       (MCASP0_PDOUT |= 0x00000008)
#define SCL_LOW      (MCASP0_PDOUT &= ~0x00000008)
#define SDA_READ_HI  (MCASP0_PDIN  &= 0x00000010)

部分代码:

void start(void)
{
 SCL_OUT;
 SDA_OUT;
 SDA_HI;
 SCL_HI;
 Delay_1us(10);
 SDA_LOW;
 Delay_1us(5);
 SCL_LOW;
 Delay_1us(25);
}

1、对于这部分代码,比如说执行完SDA_HI;之后,这个SDA管脚能保持多久的高电平?在我没有执行SDA_LOW之前,他能一直保持高电平吗?

2、C6726有没有相关的库函数能直接操作引脚?

3、对于配置信息,因为涉及到高低电平的不断切换,所以会不断的寄存器赋值,这样会有什么不良后果吗?我这种赋值方法,会影响其他不必要位吗?

希望老师尽快回复,谢谢!

Shine:

1. 把McASP的管脚配成GPIO功能,就可以当GPIO管脚,设置成高电平后就可以一直保持高电平。2. 没有GPIO管脚配置成I2C的库函数。3. 没问题,只要reserved bit不要去操作。

CAUTIONWriting to Reserved BitsWriting a value other than 0 to reserved bits in this register may cause improperdevice operation. This includes bits that are not implemented on a particularDSP.

http://www.ti.com/lit/ug/spru878b/spru878b.pdf

user4980733:

回复 Shine:

老师您好:

很感谢一一解决我的问题!

但是现在问题来了,既然能保持高低电平,对reserve bit也没影响,那为什么我的IIC通讯不成功呢?

有个不情之情,能否帮我审查下IIC代码时序是否有问题?^_^

Shine:

回复 user4980733:

量一下时序,看模拟出来的时序是否正确。

user4980733:

回复 Shine:

如何量时序?ccs能出时序图吗?

Shine:

回复 user4980733:

用示波器量mcasp配置成GPIO模式的管脚时序。

赞(0)
未经允许不得转载:TI中文支持网 » C6726模拟IIC相关问题求解
分享到: 更多 (0)