Добрый день.
Возникла следующая проблема при использовании Opencore I2C: при чтении данных из регистра постоянно выводит одно и тоже значение (например 0хff или 0xa1). ACK на шине присутствует. Ниже представлен пример кода, быть может, делаю что не так? Если кто сталкивался с такой проблемой буду благодарен за помощь. Версия Quartus и NIOS - 10.0.
Код
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "priv/alt_busy_sleep.h"
#include "opencores_i2c.h"
void main()
{
int data;
int i;
alt_u32 dd;
printf("Start");
I2C_init(OPENCORES_I2C_0_BASE,ALT_CPU_CPU_FREQ,400000);
//alt_busy_sleep(5000000);
printf("Write\n");
data=I2C_start(OPENCORES_I2C_0_BASE,0xD0,0);
//printf("Start ACK = x%x\n",data);
data = I2C_write(OPENCORES_I2C_0_BASE,0x26,0);
//printf("write ACK = x%x\n",data);
data = I2C_write(OPENCORES_I2C_0_BASE,0x1f,1);
//printf("write ACK = x%x\n",data);
printf("Read\n");
data=I2C_start(OPENCORES_I2C_0_BASE,0xD0,0);
//printf("Start ACK = x%x\n",data);
data = I2C_write(OPENCORES_I2C_0_BASE,0x26,0);
//printf("write ACK = x%x\n",data);
I2C_start(OPENCORES_I2C_0_BASE,0xD0,1);
data = I2C_read(OPENCORES_I2C_0_BASE,1);
printf("%x \n",data);
}
}