完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、什么是EEPROM?和FLASH有什么区别?
1)就是一个存储芯片,可以按字节进行读写操作,最常用的是AT24Cxx系列,比如AT2464/C128。 本项目用的是ATC24C128,根据芯片手册描述,内存总共有131072个Bit大小,除以8就是Byte,再除以1024就是KB。 2)和Flash有什么区别?
2、单片机和EEPROM接线图 3、IIC协议 1)物理层传输 IIC总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL线高低电平时序的控制,来产生IIC总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。 2)软件层协议 这个也是IIC协议的关键,因为大多数需要自己写程序实现。 协议主要就是控制SCL和SDL的电平变化来进行MCU和外设的数据交互,双方保持一直才能正确的进行交流。 就好比双方要确定好语言,比如都用中文的方式沟通,就能明白彼此的意思,如果一个中文一个英文,这样沟通就懵逼,跟前面RF单口通讯有点像。 软件协议时序的几个部分: 1、起始和结束时序图 起始条件:数据的传输之前必须要以一个起始信号作为开始条件,当SCL为高电平的时候,SDA线上由高到低的跳变被定义为起始条件,起始条件的目的是告诉双方可以开始正常交流了。 结束条件:当SCL为高电平的时候,SDA线上由低到高的跳变被定义为停止条件,要注意起始和终止信号都是主机发出的。 起始和结束时序代码实现,用模拟IIC的方式 static void I2C_Start(void) { hal_I2C_SDA(1); I2C_delay(1); hal_I2C_SCL(1); I2C_delay(1); hal_I2C_SDA(0); I2C_delay(1); } static void I2C_Start(void) { hal_I2C_SDA(0); I2C_delay(1); hal_I2C_SCL(1); I2C_delay(1); hal_I2C_SDA(1); I2C_delay(1); } 2 数据有效性 当发送完起始信号后,接下来就到了传输数据的环节。 IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平才允许变化。 3 应答和非应答 每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,已确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答。 4 字节写 前面讲了底层传输的时序意义,时序明白以后就要封装称写一个字节这种时序的函数。 Device_Address共由8bit组成,设备地址的高4bit都固定为“1”“0”序列,如下图所示。低4位bit4固定是"0", 其他3位是由2位的设备地址位以及1位的读写位组成。 这个Device_Address每个芯片是不一样的,每个容量大小也是不一样的,具体看芯片手册。 比如上图就是不同型号的EEPROM的地址定义。 未完待续。 |
|
|
|
只有小组成员才能发言,加入小组>>
3308 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9049 浏览 16 评论
4083 浏览 18 评论
1167浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 09:41 , Processed in 1.121215 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号