2011-12-21 54 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