IO模拟IIC----结合AT24C02(IIC操作EEPROM)

本文详细介绍了如何通过STM32的IO模拟IIC协议,包括IIC的时序分析、开始和结束信号、数据交互以及应答非应答过程。同时,文章重点讲解了如何对AT24C02 EEPROM进行读写操作,强调了写操作的页限制和读操作的全片读特性,并提供了相关资料下载链接。
摘要由CSDN通过智能技术生成

IIC总线,是一种十分常见的总线通讯协议,他的又是主要是一条总线上可以存在多个主机和从机,这样就可以实现多对多的数据交互,我们通过IO模拟IIC的方式深入了解IIC基本知识,现在,很多MCU都是自带IIC,不过也有部分MCU是没有IIC功能的(例如51,本博没有用过51系列的MCU,有错误说法的请谅解),为了兼容此类IIC以及方便移植,我们通过IO模拟IIC的方式实现IIC总线协议。

1.IIC时序分析及其实现

IIC通常包括 开始、发送数据、应答(非应答)以及结束五个阶段,这些阶段都有严格的时序要求。

我们结合AT24C02的datasheet(下载链接)来实现我们的IIC,基本的IIC时序要对应相对应器件,主要改动的通常只是延时而已。

1.1开始

开始信号,我们要做的是三件事情,最重要是2步骤。1、3步骤不要是保证不受之前的时序影响,同时确保下一个时序的正确。

1.我们要将SDA、SCL置高,释放总线。

2.SCL保持高电平时刻、SDA要有从高到低的跳变过程

3.SCL置低占据总线

实现代码:


void IIC_Start(void){

	//输出模式
	SDA_OUTPUT();
	
	//1.总线空闲
	SDA_OUT = 1;
	SCL = 1;
	delay_us(5);
	
	//2.SDA电平跳变	H -> L
	SDA_OUT = 0;
	delay_us(5);
	
	//3.占据时钟总线
	SCL = 0;
	
}

1.2 结束

结束信号关注的同样是2步骤。

void IIC_Stop(void){

	//输出模式
	SDA_OUTPUT();
	
	//1.钳住总线同时SDA为零
	SDA_OUT = 0;
	SCL = 0;
	delay_us(5);
	
	//2.SCL、SDA电平跳变 L ->	H
	SCL = 1;
	SDA_OUT = 1;
	delay_us(5);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值