Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
21615 Discussions

Help me to config ADV7181B with I2C core on DE2 kit

Altera_Forum
Honored Contributor II
1,040 Views

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
0 Kudos
0 Replies
Reply