老师您好!
我最近在用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模式的管脚时序。