I2C总线

-是一种双向二线制同步串行总线。
-SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.
-stm32通过I2C总线外接24C02。

-stm32建立于24C02的通讯:
1.配置I/O口,确定并配置I2C的模式,使能GPIO和I2C时钟。
2.写:

检测SDA是否空闲。
按I2C协议发出起始讯号(SCL线是高电平时 SDA线从高电平向低电平切换)。
发出7位器件地址和写模式(0)。
发出要写入的存储区首地址。
用页写入方式和字节写入方式写入数据。

单片机进行写操作时,首先发送该器件的7位地址码和写方向位”0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送一个字节的被写入存储器的首地址,收到存储器器件的应答后,单片机就逐个发送数据字节,但每发送一个字节后都要等待应答。AT24C系列片内地址在接收到每一个数据字节地址后自动加1,在芯片的“一次装载字节数”限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。

3.读:

检测SDA是否空闲。
按I2C协议发出起始讯号。
发出7位器件地址和写模式(伪写)。
发出要读取的存储区首地址。
重发起始讯号。
发出7位器件地址和读模式(1)。
接收数据。

单片机先发送该器件的7位地址码和写方向位“0”(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为回应。

然后,再发一个字节的要读出器件的存储区的首地址,收到应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。

数据的有效性:SDA线上的数据必须在SCL的高电平周期保持稳定。SDA线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。

起始条件:SCL线是高电平时 SDA线从高电平向低电平切换;
停止条件:SCL线是高电平时 SDA线由低电平向高电平切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值