2011-12-21 49 views
0

我正在研究一個大學項目,我需要將pic18f4550與i2c EEPROM連接。pic18f4550與i2c EEPROM的接口連接(24AA1025)

我讀了很多代碼,看到了很多關於這個主題的項目。我寫了一個MPLAB C18的示例代碼(我也嘗試了很多代碼),但沒有人與我一起工作。

我不在哪裏是問題。我的代碼和我的電路都可以運行,但是sck並沒有寫入時鐘,也沒有任何東西被寫入eeprom。所以如果任何人可以幫助我PLZ。

注意:由於我是新用戶,我無法發佈我的電路圖像! 下面是代碼:

#include "p18f4550.h" 
    #include "i2c.h" 
    #pragma config FOSC = HS 
    #pragma config PWRT = OFF 
    #pragma config BOR = OFF 
    #pragma config MCLRE = ON 
    #pragma config PBADEN = OFF 
    #pragma config ICPRT = OFF 
    #pragma config LVP = OFF 
    #pragma config WDT = OFF,DEBUG=OFF 

    unsigned char arraywr[] = {1,2,3,4,5,6,7,8,0}; 
    unsigned char arrayrd[20]; 
    //*************************************************** 
    void main(void) 
    { 
    OpenI2C(MASTER, SLEW_ON);// Initialize I2C module 
    SSPADD = 10; //400kHz Baud clock(10) @20MHz 
    while(1) 
    { 
    EEByteWrite(0xA0, 0x30, 0xA5); 
    EEAckPolling(0xA0); 
    EECurrentAddRead(0xA0); 
    EEPageWrite(0xA0, 0x70, arraywr); 
    EEAckPolling(0xA0); 
    EESequentialRead(0xA0, 0x70, arrayrd, 20); 
    EERandomRead(0xA0,0x30); 
    } 
    } 

在此先感謝

回答

2

它不看起來像你已經設置了用於數字輸入和輸出端口引腳。檢查數據表中哪些引腳用於I2C,並設置適當的TRIS位。您還應該檢查是否禁用了相同引腳的模擬功能(ANSEL寄存器)。啓用I2C模塊是不夠的。

+1

我回答之前,我發現它是一個重複http://electronics.stackexchange.com/questions/24038/interfacing-pic18f4550-with-i2c-eeprom-24aa1025 – Martin 2011-12-22 14:47:57