Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
16 years ago

Help me to config ADV7181B with I2C core on DE2 kit

Hi all,

I try using SOPC with Nios II and Microtronix I2C core to configure ADV7181B (video convert IC on DE2 kit) , but it not work.

Could anyone help me to fix this problem. Thanks for reading!

This `s my C code:

# define I2C_BASE 0x00000020# define OUT_LED (unsigned char *) 0x01003000

int i2c_write_adv(unsigned char slave_addr);

void write_byte (unsigned char reg_addr, unsigned char data);

int main()

{

i2c_write_adv(0x20);

return 1;

}

int i2c_write_adv(unsigned char slave_addr)

{

int i;

// ADV Address

IOWR_MTX_AVALON_I2C_ADDR(I2C_BASE, slave_addr);

// Start Condition

IOWR_MTX_AVALON_I2C_CONTROL(I2C_BASE,MTX_AVALON_I2C_ENABLE | MTX_AVALON_I2C_MASTER_STANDARD | MTX_AVALON_I2C_START );

// Wait for event

while( !(IORD_MTX_AVALON_I2C_STATUS(I2C_BASE) & MTX_AVALON_I2C_IRQ) );

// Clear interrupt

IOWR_MTX_AVALON_I2C_STATUS(I2C_BASE, 0);

// Check if ADV responded

if (IORD_MTX_AVALON_I2C_STATUS(I2C_BASE) & MTX_AVALON_I2C_NACK)

{

printf("ADV not found.\n");

return 0;

}

write_byte (0x15,0x10);

// Stop Condition

IOWR_MTX_AVALON_I2C_CONTROL(I2C_BASE,IORD_MTX_AVALON_I2C_CONTROL(I2C_BASE) | MTX_AVALON_I2C_STOP);

// Wait for event

while( !(IORD_MTX_AVALON_I2C_STATUS(I2C_BASE) & MTX_AVALON_I2C_IRQ) );

// Clear interrupt

IOWR_MTX_AVALON_I2C_STATUS(I2C_BASE, 0);

// Disable

IOWR_MTX_AVALON_I2C_CONTROL(I2C_BASE, 0);

return 1;

}

void write_byte (unsigned char reg_addr, unsigned char data)

{

// write address

IOWR_MTX_AVALON_I2C_DATA(I2C_BASE, reg_addr);

// Wait for event

while( !(IORD_MTX_AVALON_I2C_STATUS(I2C_BASE) & MTX_AVALON_I2C_IRQ) ) ;

// write a byte(fill transmit buffer)

IOWR_MTX_AVALON_I2C_DATA(I2C_BASE, data);

// Wait for transmit buffer empty

while( !(IORD_MTX_AVALON_I2C_STATUS(I2C_BASE) & MTX_AVALON_I2C_IRQ) ) ;

}

my project is attach
No RepliesBe the first to reply