stm32(十三)IIC

1、介绍

IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的。

IIC是一种芯片与芯片之间进行数据传输的一种协议,芯片和芯片之间的一种“交流语言”。编程者主要熟悉IIC协议的“语法”即可使用IIC进行芯片与芯片之间的交流。

2、IIC器件接线

IIC的总线两条:①SDA(Serial Data):串行数据管脚用于传输数据(二进制数据);②SCL(SCK) :(serial clock)串行时钟管脚。

IIC总线上需要挂载两个上拉电阻:常见的上拉电阻的阻值是4.7K和10K。

IIC通讯协议有两个对象:

①主机:主机负责产生时钟,主机可以发送数据给从机,也可以接收从机的数据;

②从机:从机可以接收来自于主机的数据,也可以发送数据给主机。

IIC的数据传输是在时钟节拍控制下进行位传输:一个时钟脉冲(一个方波)可以传输1位数据。传送8个字节的数据需要8个时钟。

IIC也有一种“名字”机制来区分多个从机,这个机制叫“设备地址”,主机根据IIC的设备地址来区分和那个从机进行数据交互。

3、IIC通讯协议

IIC的通讯协议,也就是IIC数据传输协议

(1)起始信号:标志着IIC设备之间的通讯开始

(2)在8个时钟的作用下传输8位数据,传输数据要求先传输高位(MSB),再传输低位

(3)ACK : 应答,IIC的设备进行数据传输时,需要用一个应答机制。①主机给从机写一个字节的数据后,从机需要给主机一个应答;②从机传输一个字节的数据给主机之后,主机需要给一个应答。情景:老师--学生对话,一问一答。在第九个时钟控制下进行应答传输。

(4)停止信号:标志IIC数据传输过程结束。

3.1、IIC协议基本时序信号

  1. 起始信号:当SCL为高电平时,SDA由高电平向低电平跳变。情景:两个人碰面:吃了没?
  2. 设备地址:IIC的设备地址是7位+1位最低位(方向位:0表示写方向,1表示读方向),举例:假如有一个IIC设备,其地址为1110 100B,则该设备“读地址”是1110 1001B;“写地址”是1110 1000B。
  3. 应答信号:在第9个时钟时,如果SDA为低电平则表示“应答”(ACK);在第9个时钟时,如果SDA为高电平则表示“非应答”(NACK);如果主机给从机写数据时,从机回应是“非应答”,则IIC数据传输无法进行(IIC从机故障,IIC从机正在做其他事情,数据传输结束)。IIC的通讯过程中,每接收到8位数据的一方需要给对方发送一个应答信号。
  4. 结束信号:当SCL为高电平时,SDA由低电平向高电平跳变。
  5. 当SDA和SCL都位高电平时,则总线空闲;
  6. IIC的数据传输是在时钟方波的低电平准备数据,高电平可以读取数据。

①主机读取从机的数据:从机在时钟方波的低电平是准备1位数据,主机在时钟的高电平读取数据。

②主机发送数据给从机:主机在时钟方波的低电平是准备1位数据,从机在时钟的高电平读取数据。

   7. IIC主从机的数据交互过程如下:

①主机给从机发送数据:主机发送起始信号--》主机发送一个字节的“写地址”--》从机在第九个时钟时给主机应答--》主机写数据给从机--》可以循环写--》写完之后,主机发送结束信号表示整个通讯过程结束。

②主机读取从机的数据:主机发送起始信号--》主机发送一个字节的“读地址”--》从机在第九个时钟给主机应答信号--》紧接着,从机会返回一个字节的数据给主机--》主机接收到8位的数据后,给从机一个应答--》从机可以循环的将数据发给主机--》主机发送结束信号,表示通讯过程结束。

4、IIC通讯速度

IIC的通讯速度是指IIC的时钟频率,常用的有100kbit/s (100KHZ),400kbit/s (400KHZ),时钟没有不会很严格,可以偏差。

举例:如果IIC的时钟频率为100KHZ,那么一个时钟的周期是 T= 1/F  , T = 1/100000 = 10us。

可以通过控制SCL时钟方波的高电平时长为5us,低电平时长为5us,则产生的时钟频率就是100KHZ。

即:

SCL_H;
Delay_us(5);
SCL_L;
Delay_us(5);

5、AT24C02

5.1、简介

AT24C02是一个存储器,掉电后,数据不丢失,存储空间为255个字节。(地址范围:0x00~0xFF)。

AT24C02的“页”:8个字节的空间为1页。

通讯接口是IIC接口

可按字节写,也可以按“页”写

如果“页”写,地址可以自动递增。举例:向AT24C02的内部的地址为0x20的空间写1页(8个字节),这8个字节会存储在0x20~0x27。

5.2、硬件图&设备地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值