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

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

I2C函數(shù)怎么理解?

作者:wangyibo 欄目:單片機
I2C函數(shù)怎么理解?
使用pic的i2c模塊,有點問題,想請教大家,這是在他官方網(wǎng)站下的程序,是從I2C decive讀8個字節(jié)的函數(shù):
EE_SEQU_Read(unsigned CHAR CTRL,unsigned CHAR addr,unsigned CHAR length,unsigned CHAR *dptr)
{


    IdleI2C();                         // ensure MODULE is idle
      StartI2C();                        // Start condition
    I2C_Done();                        // Wait Start condition completed


    WriteI2C(CTRL);                    // Write CONTROL to EEPROM  
    
    while(SSPCON2bits.ACKSTAT) ;       // TEST for ACK condition, if
    I2C_Done();                        // Clear SSPIF flag
    
    
    WriteI2C(addr);                    // Write Address to EEPROM
    //SSPBUF=addr;        
    while(SSPCON2bits.ACKSTAT);      // TEST for ACK condition, if
    I2C_Done();                        // Clear SSPIF flag

       RestartI2C();                      // initiate Restart condition
    I2C_Done();

    i=0;
    WriteI2C(CTRL+1);                // Write CONTROL to EEPROM             
    while(SSPCON2bits.ACKSTAT) ;      // TEST for ACK condition, if received
    I2C_Done();                        // Clear SSPIF flag

    while (length!=0)
    {
        *dptr=ReadI2C();            // Enable I2C RECEIVER & Store EEPROM data to Point buffer
        I2C_Done();    
        dptr++;    
        length--;
                
        if (length==0) NotAckI2C();
        else AckI2C();                // Continue read next data, send a acknowledge to EEPROM
        
        I2C_Done();
    }

    StopI2C();                      // send STOP condition
    I2C_Done();                        // wait until stop condition is over
    
}


2樓: >>參與討論
wangyibo
I2C函數(shù)怎么理解?(續(xù))
使用pic的i2c模塊,有點問題,想請教大家,這是在他官方網(wǎng)站下的程序,是從I2C decive讀8個字節(jié)的函數(shù):
EE_SEQU_Read(unsigned CHAR CTRL,unsigned CHAR addr,unsigned CHAR length,unsigned CHAR *dptr)
{


    IdleI2C();                         // ensure MODULE is idle
      StartI2C();                        // Start condition
    I2C_Done();                        // Wait Start condition completed


    WriteI2C(CTRL);                    // Write CONTROL to EEPROM  
    
    while(SSPCON2bits.ACKSTAT) ;       // TEST for ACK condition, if
    I2C_Done();                        // Clear SSPIF flag
    
    
    WriteI2C(addr);                    // Write Address to EEPROM
    //SSPBUF=addr;        
    while(SSPCON2bits.ACKSTAT);      // TEST for ACK condition, if
    I2C_Done();                        // Clear SSPIF flag

       RestartI2C();                      // initiate Restart condition
    I2C_Done();

    i=0;
    WriteI2C(CTRL+1);                // Write CONTROL to EEPROM             
    while(SSPCON2bits.ACKSTAT) ;      // TEST for ACK condition, if received
    I2C_Done();                        // Clear SSPIF flag

    while (length!=0)
    {
        *dptr=ReadI2C();            // Enable I2C RECEIVER & Store EEPROM data to Point buffer
        I2C_Done();    
        dptr++;    
        length--;
                
        if (length==0) NotAckI2C();
        else AckI2C();                // Continue read next data, send a acknowledge to EEPROM
        
        I2C_Done();
    }

    StopI2C();                      // send STOP condition
    I2C_Done();                        // wait until stop condition is over
    
}

1,關(guān)于函數(shù)WriteI2C(CTRL); 可否該為:SSPBUF=CTRL. 其實WriteI2C(CTRL);最終也是將CTRL給值給SSPBUF寄存器的.我改過,好象有問題,不一樣.
2,但外部的i2c decive沒有插上時,或者沒上電時(設(shè)計有這個要求),那么程序就在死循環(huán)了,當(dāng)然我可以在while(SSPCON2bits.ACKSTAT) ; 加語句改,但是死循環(huán)還沒到這句就已經(jīng)開始了,實際上在調(diào)這句WriteI2C(CTRL); 是就開始,那么出現(xiàn)這樣情況怎么從死循環(huán)推出了?(WriteI2C(CTRL); 是系統(tǒng)提供的庫函數(shù),是不沒辦法改造。浚

謝謝!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
HT-PICC與CCSC效率初步比較
GPIO不能更改的問題,幫忙解釋一下
dspic 穩(wěn)定性如何
區(qū)別
求助。。。。。。。。。
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號