因为是刚学习STM32,所以也看到很多人对这行代码不是很理解,我就来说说我自己的理解吧,也不知道是不是就这么,不对的话大神们多多指正,
首先因为EPPROM有不同型号,24C02 地址1010 A1 A2 A3 R/W 而其他的型号 A1 A2 A3 则变为 a10 a9 a8 。
其实0XA0相当于一扇门,而这一扇门里面有256位住户,也就是一个字节。WriteAddr/256这句话,就当于超过了一个字节,则需要移位了。
1010 A1 A2 a8 0 就等于另外一扇门, 里面也有256位住户。若再超过,则使用A2的门地址,依次类推。
不知道我的理解正不正确。请大家多多指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
注意:一般页写可以连续写8个数据。主机每发送一个字节都要接受从机的应答信号。
该类器件是采用iic总线进行操作的,器件地址根据容量的不同稍有不同,如下
对于芯片的A0,A1,A2脚:
24C01/02,A0,A1,A2都是从设备地址。
24C04,A1,A2是从设备地址,A0没用
24C08,A2是从设备地址,A0,A1没用
24C16及以上,A0,A1,A2都没用了。
其中,A表示期间地址,p表示也地址,在读写的时候首先是起始条件+器件地址
器件地址如上所示在16k中,需要两个字节表示内部地址,正是p2/1/0 和8位具体的地址
---------------------------------
只能说编程就死编程了,多联系下生活嘛,你发送东西给人家,是不是希望人家回应一下,东西收到了,人家发送东西给你,你是不是也要礼貌回应一下东西收到了,你发送数据,还发应答,你的假应答仍然代替不了别人的真应答,假的就是假的,有和没有一样。所以你写,就等待应答,读就发送应答,合情合理。
---------------------------------
原子哥,程序中的IIC_Wait_Ack();等待应答,我都修改为IIC_Ack(); 应答信号,程序也能够正常运行,那么为什么要用IIC_Wait_Ack()呢?
使用iic_wait_ack()我感觉方便查错
一周热门 更多>