学习的时候没有联系到前段时间学的《微机原理》,其实里面有讲到总线,时序图。
但学的时候没想到,而且总觉得这个东西跟串行口通信差不多,结果我错了。
AT24C08是个存储器啊,我学东西怎么迷迷糊糊的。跟着锐志开发板视频做了下这个实验。
其实就是把数据存到AT24C08中,来实现记忆功能,然后让数码管显示一下上面的数字。
很简单。刚开始稀里糊涂的,不知道干嘛的。
I2C总线操作要注意什么呢?其实就是将时序图看懂,《微机原理》里的时序图。
首先,主机(51单片机)要通知存储器AT24C08,我要开始发送数据了。于是就有了个start函数。
而发送信号是:SCL为1,SDA实现一个负跳变,由1到0;其中还要告诉存储器主机是读还是写操作)通知完毕后,再传送地址信息,传完地址信息后,
这里都是一个字节一个字节传送的,每传送一个字节,主机要知道存储器是否接受到了地址信息,所以存储器要
发送一个信息给主机,表示我已经收到你发的地址信息了。这个信号是:SCL=1;SDA(存储器)=0;其实做这个实
验中返回信息并没有体现他的用处,也没检测,只是返回了一下SDA(存储器)的信息,并没检测它是否为0;为0又怎样?以后深入学习要会用到吧?返回信号告诉主机,我收到你的地址信息了。那么第三步,主机向存储器指定的地址传送数据,即总线写操作。也是一个字节一个字节传送的,每传送完一个字节都存储器都要发个信息给主机告诉主机我已接受完毕。其实这个过程我还不清楚,关于存储器发回信息给主机。感觉很模糊。
总线在空闲状态下,SCL=SDA=1;
值得注意的是,在SCL=0是SDA才能发生变化,防止读写错误。但微机原理没有这么规定啊?
对于其中的读写代码,多看几遍了。
|