找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7448|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

關(guān)于I2C與EEPROM地址的問(wèn)題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

圖一 為啥說(shuō)地址為0x50   1010000  如果原型是0101 0000   那最后一位的讀寫(xiě)位不就沒(méi)有了嗎
那如果有讀寫(xiě)位  A0~A2都接地 應(yīng)該 位 0xA0 啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:10193 發(fā)表于 2019-6-24 07:45 | 只看該作者
讀地址是0Xa0,寫(xiě)地址是0xa1。
回復(fù)

使用道具 舉報(bào)

板凳
ID:401564 發(fā)表于 2019-6-24 08:22 | 只看該作者
圖片上說(shuō)的是錯(cuò)的,或者是說(shuō)不嚴(yán)謹(jǐn),
24C02的讀寫(xiě)的地址是:0A0H和0A1H
回復(fù)

使用道具 舉報(bào)

地板
ID:538271 發(fā)表于 2019-6-24 10:49 | 只看該作者
Y_G_G 發(fā)表于 2019-6-24 08:22
圖片上說(shuō)的是錯(cuò)的,或者是說(shuō)不嚴(yán)謹(jǐn),
24C02的讀寫(xiě)的地址是:0A0H和0A1H

0A0H是什么= =    不應(yīng)該是0XA0  或者 0XA1嗎      關(guān)鍵這個(gè)人寫(xiě)程序的時(shí)候  用了0X50 還尋到了
回復(fù)

使用道具 舉報(bào)

5#
ID:401564 發(fā)表于 2019-6-24 16:56 | 只看該作者
我說(shuō)的是匯編上,你說(shuō)是C里面,但編譯好像是通用的
他的程序應(yīng)該是在寫(xiě)入的時(shí)候是用到了位移了
你看一下輸入函數(shù)有沒(méi)有位移的語(yǔ)句
回復(fù)

使用道具 舉報(bào)

6#
ID:401564 發(fā)表于 2019-6-24 17:00 | 只看該作者
24C02是一個(gè)很常用的IIC器件,你隨便找一下24C02程序,大多都是0XA0  或者 0XA1的
回復(fù)

使用道具 舉報(bào)

7#
ID:538271 發(fā)表于 2019-6-24 21:50 | 只看該作者
Y_G_G 發(fā)表于 2019-6-24 17:00
24C02是一個(gè)很常用的IIC器件,你隨便找一下24C02程序,大多都是0XA0  或者 0XA1的

void E2Read(unsigned char *buf, unsigned char addr, unsigned char len)
{
    do {                       //用尋址操作查詢(xún)當(dāng)前是否可進(jìn)行讀寫(xiě)操作
        I2CStart();
        if (I2CWrite(0x50<<1)) //應(yīng)答則跳出循環(huán),非應(yīng)答則進(jìn)行下一次查詢(xún)
        {
            break;
        }
        I2CStop();
    } while(1);
    I2CWrite(addr);            //寫(xiě)入起始地址
    I2CStart();                //發(fā)送重復(fù)啟動(dòng)信號(hào)
    I2CWrite((0x50<<1)|0x01);  //尋址器件,后續(xù)為讀操作
有左移的  但是我看不懂什么意思  
回復(fù)

使用道具 舉報(bào)

8#
ID:483407 發(fā)表于 2019-6-24 21:59 | 只看該作者
0xa0或0xa1,前7位為24C02的器件地址(前4位固定為1010,后3位取決于A2、A1、A0三個(gè)引腳在電路中的連接),后1位為讀寫(xiě)方向。
此圖中,把24C02的地址描述為0x50,沒(méi)毛病。讀寫(xiě)位加到后面,0x50要左移1位,就成了0xa0或0xa1。
至于0x50和0x62,是尋到的什么器件,沒(méi)圖,天知道。不過(guò)可以確定,決對(duì)不是本圖中的24C02。
回復(fù)

使用道具 舉報(bào)

9#
ID:418269 發(fā)表于 2019-6-25 11:05 | 只看該作者
zzh985514474 發(fā)表于 2019-6-24 10:49
0A0H是什么= =    不應(yīng)該是0XA0  或者 0XA1嗎      關(guān)鍵這個(gè)人寫(xiě)程序的時(shí)候  用了0X50 還尋到了

0x50是24c02地址沒(méi)錯(cuò),但需要在讀寫(xiě)操作時(shí)<<1,讀地址(0x50<<1),寫(xiě)地址 (0x50<<1|0x01)
回復(fù)

使用道具 舉報(bào)

10#
ID:401564 發(fā)表于 2019-6-25 11:28 | 只看該作者
zzh985514474 發(fā)表于 2019-6-24 21:50
void E2Read(unsigned char *buf, unsigned char addr, unsigned char len)
{
    do {                ...

我就說(shuō)他有位移的語(yǔ)句了,沒(méi)見(jiàn)過(guò)這么扯的
本來(lái)讀寫(xiě)24C02就已經(jīng)要用位移了,生怕位移多了數(shù)據(jù)可能會(huì)對(duì)不上號(hào),他可好,生拉硬扯的搞個(gè)0X50這玩意出來(lái)
回復(fù)

使用道具 舉報(bào)

11#
ID:538271 發(fā)表于 2019-6-25 11:55 | 只看該作者
wangwing 發(fā)表于 2019-6-24 21:59
0xa0或0xa1,前7位為24C02的器件地址(前4位固定為1010,后3位取決于A2、A1、A0三個(gè)引腳在電路中的連接), ...

我有完整的程序  但有點(diǎn)長(zhǎng) 您介意我單獨(dú)私聊你不
回復(fù)

使用道具 舉報(bào)

12#
ID:538271 發(fā)表于 2019-6-25 15:47 | 只看該作者
Y_G_G 發(fā)表于 2019-6-25 11:28
我就說(shuō)他有位移的語(yǔ)句了,沒(méi)見(jiàn)過(guò)這么扯的
本來(lái)讀寫(xiě)24C02就已經(jīng)要用位移了,生怕位移多了數(shù)據(jù)可能會(huì)對(duì)不 ...

unsigned char I2cSendByte(unsigned char dat)
{
        unsigned char a=0,b=0;//最大255,一個(gè)機(jī)器周期為1us,最大延時(shí)255us。               
        for(a=0;a<8;a++)//要發(fā)送8位,從最高位開(kāi)始
        {
                SDA=dat>>7;         //起始信號(hào)之后SCL=0,所以可以直接改變SDA信號(hào)
                dat=dat<<1;
                Delay10us();
                SCL=1;
                Delay10us();//建立時(shí)間>4.7us
                SCL=0;
                Delay10us();//時(shí)間大于4us               
        }

unsigned char I2cReadByte()
        unsigned char a=0,dat=0;
        SDA=1;                        //起始和發(fā)送一個(gè)字節(jié)之后SCL都是0
        Delay10us();
        for(a=0;a<8;a++)//接收8個(gè)字節(jié)
        {
                SCL=1;
                Delay10us();
                dat<<=1;
                dat|=SDA;
                Delay10us();
                SCL=0;
                Delay10us();


請(qǐng)問(wèn)這發(fā)送的過(guò)程是不是 主機(jī)發(fā)送DAT這個(gè)數(shù)據(jù) 然后通過(guò)SDA的數(shù)據(jù)線給到從機(jī),那這時(shí)不用像讀取函數(shù)那樣先給SDA=1嗎?
讀取函數(shù)這個(gè)的過(guò)程 是不是從機(jī)通SDA給到主機(jī)數(shù)據(jù)DATA 那這一步dat<<=1; dat|=SDA;什么意思 將data 0000 0000  變?yōu)?111 1111 ?,
回復(fù)

使用道具 舉報(bào)

13#
ID:160500 發(fā)表于 2019-6-25 17:08 | 只看該作者
地址0x50是沒(méi)錯(cuò),你說(shuō)的那個(gè)0xA0、0xA1是加上了讀寫(xiě)位的。不是一回事
回復(fù)

使用道具 舉報(bào)

14#
ID:401564 發(fā)表于 2019-6-25 17:24 | 只看該作者
dat是一個(gè)變量,實(shí)際上就是一個(gè)地址,而SDA是一個(gè)位
l是按位或的運(yùn)算,而不是或運(yùn)算
按位或運(yùn)算只會(huì)改變相對(duì)應(yīng)該的位,其它位不變的
如果dat=0000 0000,SDA=1,按位或運(yùn)算之后就是dat=0000 0001
回復(fù)

使用道具 舉報(bào)

15#
ID:571958 發(fā)表于 2019-6-25 18:52 | 只看該作者
                 SDA=dat>>7;         //起始信號(hào)之后SCL=0,所以可以直接改變SDA信號(hào) ,這是發(fā)送給slave的。

  那這一步dat<<=1; dat|=SDA  ,這樣一般是 數(shù)據(jù)左一位,SDA上狀態(tài)讀入。洌幔簟。猓椋簦
  這樣做八次剛好得到1 byte數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

16#
ID:18297 發(fā)表于 2019-6-25 20:11 | 只看該作者
這個(gè)只是一個(gè)認(rèn)識(shí)上的問(wèn)題。
其實(shí)很簡(jiǎn)單,1)有人把0xa0(讀)和0Xa1(寫(xiě))當(dāng)作地址,直接發(fā)送這兩個(gè)。
                  2)例外有人把0X50當(dāng)成地址,但是發(fā)送前先左移一位,(0x50<<1+0)=0xa0(讀)
                      (0x50<<1+1)=0xa1(寫(xiě)),再發(fā)送給EEPROM。
                  看吧,結(jié)果都是一樣的。
                 只是程序?qū)懙貌煌选W约好靼拙秃。到底你給發(fā)送的是什么?
                 如果你不移位,只發(fā)送0x50,就錯(cuò)了。
回復(fù)

使用道具 舉報(bào)

17#
ID:483407 發(fā)表于 2019-6-25 20:51 | 只看該作者
我的理解:沒(méi)有主機(jī),沒(méi)有從機(jī)。這2個(gè)函數(shù),從其名字上來(lái)理解,前者功能是向某總線上發(fā)送一個(gè)字節(jié),后者為從總線上讀一個(gè)字節(jié),如此而已(多好的程序呀,向這段代碼的作者致敬)。
建議:如果你要用這個(gè)函數(shù),放到自己的程序中能夠?qū)崿F(xiàn)功能,這就夠了,不必深究;如果你是學(xué)習(xí),就想把這段代碼搞明白,那么你要做的有2個(gè),一是把時(shí)序整明白,二是。。。。。。。(dat<<=1; dat|=SDA;//dat前移一位,讀總線,把結(jié)果放在dat的最后一位)
回復(fù)

使用道具 舉報(bào)

18#
ID:307020 發(fā)表于 2019-6-26 00:18 | 只看該作者
按DataSheet,讀為0xA1,寫(xiě)為0xA0;理由是R/W

QQ截圖20190626001007.png (78.84 KB, 下載次數(shù): 56)

QQ截圖20190626001007.png
回復(fù)

使用道具 舉報(bào)

19#
ID:907706 發(fā)表于 2023-7-18 11:45 | 只看該作者
認(rèn)真的去看這些文字,他講的是24C01的 地址是7位 其中高4位是固定的1010(A2 A1 A0) 我們需要補(bǔ)R/W位(是讀寫(xiě)位),補(bǔ)0和補(bǔ)1是你自己決定的  補(bǔ)完后就是 1010 0000
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表