您的位置 首页 元件

I^2C总线EEPROM编程心得

相比起学校教材所用的8031+锁存器+存储芯片的组合搭建(不过貌似这种组合只有教科书才用),8952+AT24CXX的组合已经完全够用而且可以很明确

相比起校园教材所用的8031+锁存器+存储芯片的组合树立(不过形似这种组合只要教科书才用),8952+AT24CXX的组合现已彻底够用并且可以很明确地将AT24CXX功用定位在掉电数据存储。
自己在进行电子钟的编程中,将AT24C02作为了闹钟守时保存的存储,由于操作便利,很合适作为程序附加功用的拓宽,比方电子暗码贮存部件等等。关于没触摸过的人来说,仅有头痛的便是I^2C总线的软件模仿编程,尽管只要SCL和SDA两条通讯线以及凹凸电平,上下沿几种状况加以组合,可是单调得难以了解,特别延时应该是多少,应对怎样完成这些问题都很困扰。I^2C总线是AT24CXX硬件自带,而常见8952不自带的,所以进行交互通讯时,需要在8952上运转软件模仿。相关的原了解说网上许多,这儿树立在了解了原理的基础上,进行程序剖析:在确保程序能正常作业的前提下,进行了延时最短处理

//24C02的初始化
void c02_init()
{
scl=1;
sda=1;
}
//敞开I^C总线
void start()
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}
//中止I^2C总线
void stop()
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}

//前面总线开关操作和初始化好了解,看着说明书的原理波形就可以写出

//发送8位数据

//之前还真不知道数据是这样一位位赋值传递的
void s_byte(uchar s_dat)
{
uchar i;
for(i=0;i<8;i++)
{
s_dat<<=1;//最高位再左移就会写入到 CY
scl=0;
nop();
sda=CY;//如此类推将每次左移读CY值,直到读完8位
scl=1;//SCL=1,保存数据。SCL=0,改动数据。
nop();
}
scl=0;
nop();
sda=1;
nop();
}

//读取8位数据
uchar r_byte()
{
uchar i,k=0;
for(i=0;i<8;i++)
{
scl=1;
nop();
k<<=1;
if(sda)
{
k++;
}
scl=0;
nop();
}
return k;
}

//从件应对
void ack()
{
uchar i;
scl=1;
nop();

scl=0;
//参阅了许多程序仍是这个好了解,有应对时SDA==0跳出,没有应对等候i累加结束也退出。

//可是应对这样用形似没有什么含义。在无应对时,是不是该转入其他操作?

while((sda==1)&&i<(200))i++;
scl=0;
nop();
}

//写入函数

void c02_write(uchar w_add,uchar w_dat)
{
start();
s_byte(0xa0);
ack();
s_byte(w_add);
ack();
s_byte(w_dat);
ack();
stop();
delay(5);
}

//读取函数,这个是恣意地址的读取函数。包括了当时地址读取的操作
uchar c02_read(uchar r_add)
{
start();
//这儿要注意,向从件写入一个地址(r_add),让接纳器材自己比对是否相同.故先送一个写入驱动(0xa0)

s_byte(0xa0);
ack();
s_byte(r_add);
ack();

//进行读写入驱动前,都要从头敞开总线 start();
start();

//确认了地址之后,才进行真实的写入操作。
s_byte(0xa1);
ack();
return r_byte();
stop();
delay(10);
}

其间应对许多人说可有可无,假设EEPROM是作为完成单一功用的首要元件,比方暗码锁的存储器,有必要做到功用的一无是处,我觉得是要的。假设像我相同作为电子钟许多附加程序的其间一个,为了节约运算时刻,无法地不应对也能承受吧?吧?吧?不知道哩……

最终运用write(w_add,w_dat);和read(r_add);就可以便利调用了。记住在这两个函数运用前先调用初始化函数。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/256760.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部