标题: IIC总线的几种信号与单片机程序 [打印本页]

作者: 羽一生    时间: 2019-8-1 10:37
标题: IIC总线的几种信号与单片机程序
IIC 总线的几种信号1.起始和终止信号:

从时序图可以看出,起始信号为,SCL=1,SDA下降沿;终止信号为SCL=1,SDA为上升沿,保持的时间是有限制的:


具体的程序实现如下:
起始信号:SDA=1保持时间大于4。7us,随后SDA=0保持时间大于4us
?
1
2
3
4
5
6
7
8
9
/*SDA下降沿*/
void start()
{
SDA = 1; //顺序不能反了,先是SDA=1;
SCL = 1;
delay();
SDA = 0;
delay();
}



终止信号:SDA=0保持时间大于4us,随后SDA=1保持时间大于4。7us
?
1
2
3
4
5
6
7
8
9
/*SDA上升沿*/
void end()
{
    SDA = 0;        //顺序不能反了,先是SDA=0;
    SCL = 1;
    delay();
    SDA = 1;
    delay();
}



2.应答信号:


传送的每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答信号(即一帧共有9位)。
如:主机往总线上发送一个字节的数据后,释放总线,从机会把总线拉低(即应答信号),以表示这一字节发送成功
同理主机从总线上读取完一个字节的数据后,主机会把总线拉低,"告诉"从机这一字节的数据接收成功



程序实现
应答信号:
?
1
2
3
4
5
6
7
8
9
void ack()
{
    uchar i = 0;
    SCL = 1;
    delay();
    while(SDA == 1 && i < 250)i++;
    SCL = 0;            //SCL=0,SDA可以改变
    delay();
}





作者: zxy2266    时间: 2019-8-14 21:21
进来研究下,这几天被1602  IIC搞晕了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1