上图是SHT15的时序要求,我找了一些关于430模拟IIC通信的程序,比如其中的SHT15的启动程序是这样的
/*SHT15的启动程序要求是:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平*/
#define SHT11_SCK P1OUT //在接下来的程序里,sck=p1.0,sda=p1.1
#define SHT11_DATA P1OUT
void SHT15_Start()
{
SHT15_SCK|=0X01; //sck=1
SHT15_DATA|=0X02; //sda=1
__delay_cycles(5); //延时
SHT15_DATA&=0xfd; //sda=0;
__delay_cycles(5);
SHT15_SCK&=0xfe; //sck=0
__delay_cycles(5);
SHT15_SCK|=0X01; //sck=1;
__delay_cycles(5);
SHT15_DATA|=0X02; //sda=1
}
我对启动程序进行了软件调试,发现上述程序时间都是us级的,与typ中的ns相差挺大的,也就是说,上述程序并没有严格按照datasheet中的时序严格控制sck和sda,但在硬件调试的时候,上述程序也是可行的,并不会出现通信错误。
我对时序确实有点一知半解,希望有位老师能够解析一下时序以及时序中最容易犯的错误.谢谢!

