IIC总线由数据线SDA和时钟线SCL两条线构成通信线路
总线上各器件都采用漏极开路结构与总线相连,SCL和SDA均需接上拉电阻与总线相连,空闲状态总线保持高电平,总线上的各器件时线“与”关系
IIC通常工作在主从工作方式下,主器件启动数据的发送(发出启动信号),产生时钟信号,发出停止信号
IIC总线上数据有效性规定:时钟信号为高电平期间,数据有限上的数据必须保持稳定,只有在时钟信号为低电平期间,数据线上的高低电平状态才允许变化
IIC通信格式:
(1)主器件发送启动(始)信号
在SCL为高电平期间,SDA出现下降沿则为启动信号。从器件会检测到该信号,则通信开始。
(2)再由主器件发送寻址信号
器件地址有7位和10位两种。介绍7位地址寻址方式,寻址信号由一个字节构成,高7为为地址位,最低位为方向位,用以表明主机与从器件的数据传送方向,为0,表示主机接下来对从器件进行写操作,为1,表明主机接下来对器件进行读操作。
(3)应答信号
IIC总线中,每传送一个字节(含地址及命令字)后,都要有一个应答信号,以确定数据传送是否被对方收到。应答信号由接收设备产生,在SCL信号为高电平期间,接收设备将SDA拉为低电平,表示数据传输正确,产生应答。
(4)数据传输
主机发送寻址信号,并得到应答后,便可进行数据传输,每次传输一个字节都应在得到应答响应后在进行下一个字节传送
(5)非应答信号
主机接收设备时,主机对最后一个字节不应答,以向发送设备表示数据传送结束
(6)发送停止信号
全部数据接收完毕后,主机发送停止信号,即在SCL高电平期间,SDA上产生一上升沿信号。
用IO口模拟IIC总线时,需写出一下程序:
总线初始化(释放总线,即将总线拉高)
启动信号
应答信号
停止信号
写一个字节
读一个字节