完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在关于IIC的程序这里原来有问题 现在解决了一些 还剩下一点
u8 AT24CXX_ReadOneByte(u16 ReadAddr){ u8 temp=0; IIC_Start(); if(EE_TYPE>AT24C16){IIC_Send_Byte(0XA0); //发送写命令IIC_Wait_Ack();IIC_Send_Byte(ReadAddr>>8);//发送高地址 }else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据 IIC_Wait_Ack(); IIC_Send_Byte(ReadAddr%256); //发送低地址IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(0XA1); //进入接收模式 IIC_Wait_Ack(); temp=IIC_Read_Byte(0); IIC_Stop();//产生一个停止条件 return temp;} 我看过了24c02的中文手册 关于发送0XA0我理解了 就是选定器件地址 为写的命令 如果是0XA1就是为读 但是还是不理解为什么要加上((ReadAddr/256)<<1) 这个东西 手册说 先接受器件地址 然后是字地址 不理解啊 字地址的高地址为什么可以直接加到0XA0上面去了?发送0XA0不是一个命令么。。。24C02的容量是256 右移八位岂不是为0了。。。 我再补充下我的疑惑。。。水平菜大家见谅。。 0XA0加上高字节。。首先A2 A1 A0都是接在地上的 为什么可以改变 还有 如何可以加上去 是不是我拨打115就是拨打110报警顺便告诉他们我住警察局旁边第五号? |
|
相关推荐
2个回答
|
|
因为我们的代码是兼容24Cxx全系列的.并不是针对24C02一个.
|
|
|
|
24c02的A2、A1、A0均接地是其中常用的一种接法,此情况下读取地址为0xA1写地址为0xA0,但3者均接地并不是唯一的接法,可根据需要将相应位接高电平;正如你的图中所示,24c02有七位地址码,和读/写(R/W),,首先发送0XA0的确是一个命令(即相当于告诉24c02要来读取数据);但发送完成后还要发送字地址。((ReadAddr/256)<<1) 此处为取地址的最高位放在A0位置
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1786 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1622 浏览 1 评论
1089 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
730 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1939浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
736浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
571浏览 3评论
597浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
560浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 07:48 , Processed in 0.807038 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号