درود به همگی.
من برنامه I2C با یه eeprom رو جواب گرفتم. ولی وقتی از یه باس مشترک برا دو تا eeprom استفاده میکنی، eeprom دوم نه مقداری مینویسه نه مقداری میخونه. اگه آدرس eeprom اول 0xA0 یا 160 باشه، eeprom دوم باید 0xA2 یا 162 باشه درسته ؟؟ حتی پایه A0 eeprom دوم رو به Vcc وصل کردم ولی باز جواب نمیده.
اینم برنامه.
من برنامه I2C با یه eeprom رو جواب گرفتم. ولی وقتی از یه باس مشترک برا دو تا eeprom استفاده میکنی، eeprom دوم نه مقداری مینویسه نه مقداری میخونه. اگه آدرس eeprom اول 0xA0 یا 160 باشه، eeprom دوم باید 0xA2 یا 162 باشه درسته ؟؟ حتی پایه A0 eeprom دوم رو به Vcc وصل کردم ولی باز جواب نمیده.
اینم برنامه.
کد:
/*------------------------------------------------------------------------------- www.ECA.ir LPC1768 Dev Board Rev.A --------------------------------------------------------------------------------*/ #include <lpc17xx.h> #include <stdio.h> #include "i2c.h" #define LCD_LPC1768 #define LCD_PORT_1 #define LCD_RS 14 #define LCD_RW 10 #define LCD_E 9 #define LCD_DB4 8 #define LCD_DB5 4 #define LCD_DB6 1 #define LCD_DB7 0 #include "lcd.h" extern uint8_t buf[32]; extern uint8_t bu[32]; void Delay(uint32_t delaydata) { uint32_t i,j,k; for(i=0;i<delaydata;i++) for(j=0;j<1000;j++) for(k=0;k<100;k++) ; } int main (void) { uint32_t i; //char blcd[16]; SystemInit(); LPC_GPIO2->FIODIR = 0x000000ff; /* LEDs PORT2 are Output */ LPC_GPIO0->FIODIR |= 0x03f80000; LPC_GPIO0->FIOSET = 0x03f80000; if ( I2CInit( (uint32_t)I2CMASTER ) == 0 ) /* initialize I2c */ { while ( 1 ); /* Fatal error */ } for ( i = 0; i < 8; i++ ) /* clear buffer */ { buf[i]=i+1; } //sprintf(buf,"Hello World !"); I2C_WriteNByte(0xa0, 1, 0x00, buf, 8); /* write buf array into EEPROM */ Delay(50); for ( i = 0; i < 8; i++ ) /* clear buffer */ { buf[i] =0; } I2C_ReadNByte (0xa0, 1, 0x00, buf, 8); /* read from EEPROM & save in buf array */ Delay(50); for ( i = 8; i < 15; i++ ) /* clear buffer */ { bu[i]=i+1; } //sprintf(buf,"Hello World !"); I2C_WriteNByte(0xa2, 1, 0x01, bu, 8); /* write buf array into EEPROM */ Delay(50); for ( i = 8; i < 15; i++ ) /* clear buffer */ { bu[i] =0; } I2C_ReadNByte (0xa2, 1, 0x00, bu, 8); /* read from EEPROM & save in buf array */ Delay(50); lcd_init(); lcd_clear(); lcd_gotoxy(1,3); lcd_putsf("I2C Example"); lcd_gotoxy(2,1); //lcd_putsf(buf); while(1) { for(i=0;i<8;i++) { /* LPC_GPIO2->FIOPIN = buf[i]; lcd_gotoxy(2,1); sprintf(blcd,"T=%c",buf[i]); lcd_putsf(blcd); Delay(100); */ lcd_puts(buf[i]); Delay(100); } for(i=8;i<15;i++) { lcd_puts(bu[i]); Delay(100); } } }
دیدگاه