IIC模拟读写EEPROM

本文详细介绍了如何使用IIC模拟方式对EEPROM进行读写操作,包括起始和终止信号的生成、发送字节的时序以及硬件模拟的步骤。通过函数i2c_SendByte实现数据发送,并给出了51单片机发送一个字节的函数IIC_Sendate。在模拟过程中,需要注意初始化GPIO和IIC结构体,遵循EEPROM的读写时序,并确保适当的时间延迟以避免数据冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起始信号和终止信号 

IIC发送时序

函数:

void i2c_SendByte(uint8_t _ucByte)
{
    uint8_t i;

    /* 先发送字节的高位bit7 */
    for (i = 0; i < 8; i++)
    {        
        if (_ucByte & 0x80)        取出最高位,如果最高位是1,给数据线输入数据1
        {
            EEPROM_I2C_SDA_1();
        }
        else
        {
            EEPROM_I2C_SDA_0(); 最高位不是1数据线输入0;
        } 
        i2c_Delay();
        EEPROM_I2C_SCL_1();//拉高SCL在SCL高电平时候读取数据,SCL低电平期间不允许数据变化
        i2c_Delay();    
        EEPROM_I2C_SCL_0();
        if (i == 7)
        {
             EEPROM_I2C_SDA_1(); // 释放总线/i=7即第八位写数据第八位为1;
        }
        _ucByte <<= 1;    /* 左移一个bit */
        i2c_Delay();
    } 


}

51 发送一个字节(8位)

void IIC_Sendate(uint8_t byte)

{

unsigned char i;

for(i=0;i<8;i++)

{

IIC_SDA=byte&(0x80>>i);//取出最高位

IIC_SCL=1;

IIC_SDA=0;

}

发送函数

IIC硬件模拟的步骤:

1、初始GPIO和IIC相关的结构体

2、写入一个字节(根据EEPROM的写入时序进行写入的操作)

3、读取数据(EPPROM的读取时序)

4、等待函数,避免出现还没写完就开始读数据

(硬件模拟的时候一直卡在EV5事件出不来,原因是初始化IIC结构体的时候把开启时钟放到了后面)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值