嵌入式学习--step9 IIC学习

来源:互联网 发布:淘宝画师招聘 编辑:程序博客网 时间:2024/06/06 03:20
 介绍如何使用STM32F4的普通IO口模拟IIC时序,并实现和24C02之间的双向通信,在本章的实验中我们将使用STM32F4的普通IO口模拟IIC时序,来实现24C02的读写,并将结果显示在TFTLCD模块上。

IIC简介:
IIC总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,在CPU与被控IC之间,IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。
IIC总线在传送数据过程中共有三种类型信号,分别是:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
1、空闲状态,SDA与SCL两条信号线同时处于高电平,规定为空闲状态。
2、开始信号,当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
3、停止信号,当SCL为高期间,SDA由低到高的跳变。
这里写图片描述
4、应答信号,接收器在第9个时钟脉冲之前的低电平器件将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
这里写图片描述
5、数据的有效性,数据在SCL的上升沿到来之前就需要准备好,并在下降沿到来之前必须稳定。
6、数据传输

——————-

**开发板板载的EEPROM芯片型号为24C02,该芯片的总容量是256个字节,该芯片通过IIC总线与外部链接,我们这次实验通过STM32F4来实现24C02的读写。**

——————-

用软件模拟IIC,最大的好处就是方便移植,同一个代码兼容所有MCU,任何一个单片机只要有IO口,就可以很快移植过去,而且不需要特定的IO口。


我们通过GPIO来模拟IIC,myiic.c 文件用来存放iic底层驱动,新增了24cxx.c文件用来存放24C02的底层驱动。EEPROM(24C02)

这里写图片描述


这里写图片描述
上面代码是IIC驱动代码,实现主要包括IIC的初始化(IO口)、IIC开始、IIC结束、ACK、IIC读写等功能,在其他函数里面,只需要调用相关的IIC函数就可以和外部IIC器件通信了,这里不限于24C02,可以用于在任何IIC设备上。

0 0
原创粉丝点击