我正在开展一项大学项目,我需要将pic18f4550与i2c EEPROM接口。
我阅读了很多代码,并在这个主题上看到了许多项目。我从MPLAB C18中编写了一个示例代码(我也尝试了很多代码),但没有人和我一起工作。
我不知道问题出在哪里。我的代码和我的电路一切都很好,但是sck并没有把clk用于写作,并且没有任何东西可以用于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);
}
}
提前致谢
答案 0 :(得分:2)
看起来您没有为数字输入和输出设置端口引脚。检查数据表中哪些引脚用于I2C并设置相应的TRIS位。您还应检查相同引脚的模拟功能是否被禁用(ANSEL寄存器)。单独启用I2C模块是不够的。