Цепляется к ниосу через avalon-mm как на рисунке
В ниосе делаю так:
Код
IOWR_8DIRECT(I2C_PORT_BASE,2,0);//Dasable i2c
IOWR_8DIRECT(I2C_PORT_BASE,0,0);//load prescaler (inclk=50MHz, out=100kHz*5)
IOWR_8DIRECT(I2C_PORT_BASE,1,0x63);
IOWR_8DIRECT(I2C_PORT_BASE,2,0x80);//Enable I2C
IOWR_8DIRECT(I2C_PORT_BASE,3,0xa0);//Device adress (24LC00)
IOWR_8DIRECT(I2C_PORT_BASE,4,0x90);//Start&WR
uuu=2;
while ((uuu&0x2)!=0) //Wait for complete
uuu=IORD_8DIRECT(I2C_PORT_BASE,4);
IOWR_8DIRECT(I2C_PORT_BASE,3,0xe);//memeory adress
IOWR_8DIRECT(I2C_PORT_BASE,4,0x10);//WR
uuu=2;
while ((uuu&0x2)!=0) //Wait for complete
uuu=IORD_8DIRECT(I2C_PORT_BASE,4);
IOWR_8DIRECT(I2C_PORT_BASE,3,0xa5);//Data
IOWR_8DIRECT(I2C_PORT_BASE,4,0x50);//WR&stop
uuu=2;
while ((uuu&0x2)!=0)//Wait for complete
uuu=IORD_8DIRECT(I2C_PORT_BASE,4);
IOWR_8DIRECT(I2C_PORT_BASE,0,0);//load prescaler (inclk=50MHz, out=100kHz*5)
IOWR_8DIRECT(I2C_PORT_BASE,1,0x63);
IOWR_8DIRECT(I2C_PORT_BASE,2,0x80);//Enable I2C
IOWR_8DIRECT(I2C_PORT_BASE,3,0xa0);//Device adress (24LC00)
IOWR_8DIRECT(I2C_PORT_BASE,4,0x90);//Start&WR
uuu=2;
while ((uuu&0x2)!=0) //Wait for complete
uuu=IORD_8DIRECT(I2C_PORT_BASE,4);
IOWR_8DIRECT(I2C_PORT_BASE,3,0xe);//memeory adress
IOWR_8DIRECT(I2C_PORT_BASE,4,0x10);//WR
uuu=2;
while ((uuu&0x2)!=0) //Wait for complete
uuu=IORD_8DIRECT(I2C_PORT_BASE,4);
IOWR_8DIRECT(I2C_PORT_BASE,3,0xa5);//Data
IOWR_8DIRECT(I2C_PORT_BASE,4,0x50);//WR&stop
uuu=2;
while ((uuu&0x2)!=0)//Wait for complete
uuu=IORD_8DIRECT(I2C_PORT_BASE,4);
Из статуса всегда читается 0, на линиях i2c нет никакой активности вообще.
Что сделано не так, подскажите кто пользовал ?