|
关于MSP430与EEPROM通信之间的问题
小弟我刚刚接触MSP430, 准备以后就在这个方向学习下去, 还希望贵地的单片机大神们能给予点滴指导.
问题如下:
在与EEPROM进行IIC通信的时候, 向EEPROM写入字节的时候发现MSP430无法得到EEPROM的回应, 不知道问题出在何处, 物理连线是应该没有问题吧.
以下部分代码:
// 检查从机应答
uchar IIC_ChkAck(void)
{
uchar ack;
SDA_H;
_NOP(); _NOP();
SCL_H;
_NOP(); _NOP();
SDA_IN;
_NOP(); _NOP();
ack = SDA_VAL;
SCL_L;
delay10nsec();
SDA_OUT;
if(ack)
return TRUE;
else
return FALSE;
}
// 向EEPROM写 N-BYTE N<=8
uchar EEPROM_Write_NByte(uchar address, uchar *out_ptr, uchar n)
{
uchar flag;
IIC_Start();
IIC_Write_Byte(DEVICE_ADDRESS);
if(IIC_ChkAck())
IIC_Write_Byte(address);
else
return 0;
if(IIC_ChkAck())
flag = IIC_Write_NByte(out_ptr, n);
else
return 0;
delay10msec();
if(flag)
return 1;
else
return 0;
}
EEPROM_Write_NByte函数运行的时候, 每次检查从机应答都是FALSE, 还希望大神指点.
另外, 对于_NOP(); 和delaynsec之类的延时函数, 具体有多大区别, 应该如何把握, 小弟也希望能得到解答.
不胜感激!
|
|