I2C总线;at24c02

本文详细介绍了如何利用I2C总线与AT24C02芯片进行通信。内容包括AT24C02的引脚说明、设备地址与数据地址的设定、延时函数的实现以及读写操作的步骤。通过示例代码展示了如何初始化、发送起始和停止信号、读写数据,并提供了简单的主函数示例。
摘要由CSDN通过智能技术生成
    I2C是串行总线的一种只用两根双向信号线就可以进行数据传送,在任何器件上只要支持I2C协议,就可以按照相同的方法进行编程。以AT24C02为学习芯片进行编程。
AT24CO2芯片的引脚说明:
SERIAL CLOCK (SCL): The SCL input is used to positive edgeclock data into each  EEPROM device and negativeedge clock data out of each device.
SERIAL DATA (SDA): The SDA pin is bidirectional for serialdata transfer. This pin is  open-drain driven andmay be wire-ORed with any number of other open-drain oropencollector  devices.
DEVICE/PAGE ADDRESSES (A2, A1, A0): The A2, A1 and A0 pins aredevice  address inputs that are hard wired for theAT24C01A and the AT24C02. As many as  eight 1K/2Kdevices may be addressed on a single bussystem 
    02(2K)芯片不存在分页的问题所以A2,A1,A0,都可以用来作为硬件的地址,如果只有一个02芯片的话,这三个引脚通常全部接地。同理AT24C04的数据容量为4K(512* 8bit)最后一个引脚A0则用来分页(每页2K)A2 A1用来做硬件地址,A0悬空。
设备地址和数据地址
    控制芯片通过设备地址来找到被控芯片,对于02芯片来说7位寻址前四位1010是固定的,后三位有A2,A1,A0决定,如果全部接地则设备地址为1010000;
    数据地址:02芯片的总容量为2Kbit8位数据位一个BYTE 因此 2K的数据可分为256个字节,字节头的地址为
0x00~0xff;编程时需要考虑读写数据的地址。

void delay_1ms(unsigned int x)
{
    unsigned int i,j;
    for(i=0;i<x; i++)
        for(j=0; j<148; j++) ;
}
短暂的延时函数,用在读数据和写数据之间,如果读写之间间隔较短,则芯片来不及反应,读不出数据

void delay(void)
{
    _nop_(); _nop_(); return;
}    
更短的延时函数大概2us,在时钟周期里做延时函数,不能太长,曾经用for()循环写延时函数,结果延时过长,使时钟周期,和数据周期被破坏。还有一种延时的方法是 { ; ;}   用两个空语句来延时。

void at24c02_init(void)
{
    sda = 1;
    // delay();
    scl = 1;
    //  delay(); //可以不延时
    return;
}
初始化函数


void start()
{
    sda = 1;
    delay();
    scl = 1;
    delay();
    sda = 0;
    delay();
    scl &#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值