音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

lpc900 I2C問題

作者:leslie34 欄目:MCU技術(shù)
lpc900 I2C問題
我用I2C操作EEPROM 2402,程序如下
#include"reg932.h"
#include"hi2c.h"
#define uCHAR unsigned CHAR
#define cat2402 0xa0            //定義cat2402從機(jī)地址
uCHAR dat,sla,suba,num;
uCHAR mtd[20];
uCHAR mrd[20];


void delay()
{
    int i,j;
    i=1000;
    j=1000;
    while(i--)
    {
        while(j--);
        j=1000;
    }    
}

void main(void)
{
      uCHAR i;
      P1M1=0x0c;                    
      P1M2=0x0c;
      sla=cat2401;
    suba=0x20;    
    for(i=0;i<20;i++)
    {
        mtd[i]=i;
    }
    iwrnbyte(sla,suba,mtd,20);
    delay();
    irdnbyte(sla,suba,mrd,20);    
      while(1) ;
}
我用的是從ZLG網(wǎng)站上下載的I2C軟件包.但出來的結(jié)果不對(duì).mtd是發(fā)送了內(nèi)容,mrd是接收的內(nèi)容.mtd和mrd在仿真器中觀察,內(nèi)容不一致.
請(qǐng)高手解答.

2樓: >>參與討論
zlg900
可能是超過頁長度
對(duì)2402連續(xù)送數(shù)據(jù)時(shí),該芯片會(huì)默認(rèn)為頁寫模式,頁長度為16字節(jié)。如果連續(xù)寫入的數(shù)據(jù)超過16個(gè)字節(jié),則第16個(gè)字節(jié)以后的數(shù)據(jù)會(huì)自動(dòng)覆蓋先前寫入的數(shù)據(jù)。您的錯(cuò)誤可能在此。
處理該問題的方法是每寫入16個(gè)字節(jié)后,重新啟動(dòng)總線,發(fā)送地址,然后再寫入。

3樓: >>參與討論
LESLIE34
謝謝!!!
果然是這個(gè)問題,把寫數(shù)據(jù)的個(gè)數(shù)設(shè)為小于16就行了.

4樓: >>參與討論
andrewpei
2402的頁長度不一定都是16字節(jié)。
事實(shí)上,就我看到的資料而言,只的Catalyst公司的2402其頁長度是16個(gè)字節(jié),ATMELMICROCHIP2402其頁長度都是8字節(jié)。

另外我認(rèn)為,用戶在寫入多字節(jié)數(shù)據(jù)時(shí),必須對(duì)自己要寫的起始地址指定一個(gè)明確的地址值,最好是從每一頁的頁頭寫起(即地址0x???? ?000B或0x???? 0000B)。因?yàn)槿绻恢付ㄆ鹗嫉刂返脑挘?a target="_blank" href="http://m.58mhw.cn/stock-ic/2402.html">2402里的地址寄存器有可能是指向一個(gè)頁的中間地址,在這種情況下多字節(jié)寫入,將產(chǎn)生卷繞。

5樓: >>參與討論
z_bing
我改成5個(gè)字節(jié)都不行。——我用的是AT24C04
下面的程序,如果運(yùn)行正確,LDE應(yīng)該閃爍。先寫24C04,再讀24C04,比較讀到的數(shù)據(jù)與寫入的數(shù)據(jù)一致,則LED取反;若不一致則沒有現(xiàn)象。LED一直滅。取下24C04放到編程器上讀,發(fā)現(xiàn)寫入正確。

#include<reg932.h>
#include"Hi2C_C51.h"
#define I2CADDR 0xA0
typedef unsigned CHAR uCHAR;
sbit LED=P0^1;
void Delay()
{
    unsigned int i=0x07FFFF;
    do
    {
        i--;
    }
    while(i!=0);
}
main()
{
    uCHAR s[32],d[32];
    uCHAR i;
    for(i=0;i<32;i++)
    {
        s[i]=i;
        d[i]=i+3;
    }
    P1M1=0xFF;
    P1M2=0xFF;
    P0M1=0xFF;
    P0M2=0xFF;
    P1=0xFF;
    while(1)
    {
        ISendStr(I2CADDR, 0x20, s, 5);
        IRcvStr(I2CADDR, 0x20, d, 5);
        if(s[4]!=d[4])
            //LED=!LED;
            Delay();
        else
            LED=!LED;
            Delay();

    }
}

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
9401開發(fā)板,怎么把hex文件下載到單片機(jī)?
LPC9xx加密位的疑惑!!!
我用lpc908作了一批東西 有死機(jī)現(xiàn)象,用匯編寫的 利用
如何正確可靠地對(duì)mCU系統(tǒng)進(jìn)行測(cè)試,歡迎各位發(fā)表自己的方法..
為什么LPC900系列當(dāng)時(shí)不做成2。7-5。5V的寬電壓呢?
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)