首先,我自己学习过以后的直观感觉,通信协议是单片机的灵魂之一,只有规定好了通信协议我们才能够正确的接收到信息,才能实现更加深入的研究。所以这一部分是需要好好学习的。
本节借助一个可存储的芯片AT24C02,进行在I2C协议上的读取,实现掉电不丢失,永久存储数据并读取的工作。
一、I2C通信协议原理
24C02的通讯方式是I2C,所以这个芯片端口的连接直接按照I2C所需直接预留出来。WE是写入使能,即可以存储内容。P2_1,2是控制我们写入时机,和内容的控制端口。后续讲完I2C通讯流程,大家应该就懂了。E0~2直接接地,是I2C的地址。
上图是I2C通信协议开始和结束的信号标志。
开始标志:在SCL高电平的时候,将数据线SDA下拉,从高电平到低电平。随后SCL拉低
结束标志:在SCL高电平的时候,将数据线SDA上拉,从低电平到高电平。 SCL提前拉高
在收到开始信号以后,我们就可以发送数据了,现在讲数据怎么发送的。
开始信号后,SCL=0,SDA=0。在SCL=0的期间,我们将数据放在SDA上,在下一次SCL=1时,从机读取数据。
在讲数据怎么接收的。
开始前SCL=0,SDA=0。在SCL=0的期间,从机将数据放在SDA上,在下一次SCL=1时,主机读取刚才SDA写入的数据。注意,这里需要主机释放SDA线。
这一步其实是为了,确定从机是否接受,和确定从机是否发送完毕。保证系统通信的连贯和正确。