我SOPC上建了两个PIO做I2C,一个output (SCL), 一个bidir(SDA) ,在NIOS中的等待应答
alt_u8 wait_ack(void)
{
IOWR_ALTERA_AVALON_PIO_DATA(SCL_BASE,0);
delay_us(2);
IOWR_ALTERA_AVALON_PIO_DIRECTION(SDA_BASE,IN);
IOWR_ALTERA_AVALON_PIO_DATA(SCL_BASE,1);
delay_us(2);
if(IORD_ALTERA_AVALON_PIO_DATA(SDA_BASE)){
IOWR_ALTERA_AVALON_PIO_DATA(SCL_BASE,0);
return 0;
}
IOWR_ALTERA_AVALON_PIO_DATA(SCL_BASE,0);
return 1;
}
以上的代码始终返回0,用示波器看过在SCL高电平时,SDA是低电平,要抓狂了,不知道怎么回事,跪求大神帮忙 |