[信息] 关于AT24CXX器件地址的问题,帮忙指点下

[复制链接]
 楼主| jcky001 发表于 2021-3-22 14:41 | 显示全部楼层 |阅读模式
uint8_t at24cxx_ReadOneByte(uint16_t addr)
{
        uint8_t temp;
        i2c_Start();

        if( EE_TYPE > AT24C016 ) //双字节地址
        {
                i2c_SendByte(0xA0);
                i2c_WaitAck();
                i2c_SendByte(addr>>8);  //发送数据地址高位
               
               
        }
        else     //单字节地址                              
        {                                       
                i2c_SendByte(0xA0+((addr/256)<<1);  //器件地址+数据地址
        }                                                                                
        i2c_WaitAck();
        i2c_SendByte(addr%256);         //数据地址低8位地址
        i2c_WaitAck();


        i2c_Start();
        i2c_SendByte(0xA1); //
        i2c_WaitAck();

        temp = i2c_ReadByte(0);//
         i2c_Stop();

         return temp;
}


假设以AT24C16为例,读的流程应该是
开始
发送器件地址i2c_SendByte(0xA0+((addr/256)<<1);  //器件地址+数据地址,为什么多加了一个数据地址
应该是响应完才发啊?
AT24C16的器件地址就是固定的A0 ?

AT24C08的器件地址就是固定A0 或者A8?



115708cw990k868pkw0pdp.png.thumb.jpg
资料上说AT24C16的P0 P1 P2三位没有用作器件地址,用作data word address

,如果这3位接地,那么字地址的高三位就是固定的000?

[url=] favorite.png [/url]0


QQ图片20150327112832.png (43.78 KB, 下载次数: 38)






[url=] 114401v84nlxmrtxnntbkn.png.thumb.jpg [/url]



walton1226 发表于 2021-3-22 15:37 | 显示全部楼层
i2c_SendByte(0xA0+((addr/256)<<1);  //器件地址+数据地址

if(addr<0x100)器件地址+数据地址=0xA0,即访问00~FF 地址空间用0xA0
else if((addr>=0x100)&&(addr<0x200))器件地址+数据地址=0xA2,即访问100~1FF 地址空间用0xA2
else if((addr>=0x200)&&(addr<0x300))器件地址+数据地址=0xA4,即访问200~2FF 地址空间用0xA4
else if((addr>=0x300)&&(addr<0x400))器件地址+数据地址=0xA6,即访问300~3FF 地址空间用0xA6
else if((addr>=0x400)&&(addr<0x500))器件地址+数据地址=0xA8,即访问400~4FF 地址空间用0xA8
else if((addr>=0x500)&&(addr<0x600))器件地址+数据地址=0xAA,即访问500~5FF 地址空间用0xAA
else if((addr>=0x600)&&(addr<0x700))器件地址+数据地址=0xAC,即访问600~6FF 地址空间用0xAC
else if((addr>=0x700)&&(addr<0x800))器件地址+数据地址=0xAE,即访问700~7FF 地址空间用0xAE
文句子 发表于 2021-3-22 23:18 | 显示全部楼层
本帖最后由 文句子 于 2021-3-22 23:23 编辑

Ax表示硬件引脚地址Px表示页地址(多数时候可看做后面addr无法表示的更高一位)
对于某一型号器件,当规格书中使用Px代替Ax,这意味着被替代Ax就不再有原来的控制意义了(器件的可级联数也会相应减少)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1636

主题

5575

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部