alieve 发表于 2012-2-17 13:34

时钟日历芯片NXP8563写字地址无应答,求教

本帖最后由 alieve 于 2012-2-17 16:00 编辑

MCU是飞思卡尔8位单片机MC9S08DZ48。
IIC成功初始化。
发启动信号后,发送器件地址0xa2,此时8563有应答。
其后,再发字地址,无论是哪一个,都没有应答信息。
疑惑……求教各位。

alieve 发表于 2012-2-17 15:09

什么情况,楼上晓得其中猫腻?
贴一段代码过来。void Send_Data(uchar ch)
{
IICS_IICIF |= 1;
IICD = ch;
while(!IICS_IICIF);
}

void Wait_Ack(void)
{
while(IICS_RXAK);
}

void main(void) {
byte second = 0;
byte i, temp;

Init_MCG();
IICF_MULT = 0b00;
      // 00 mul=1
IICF_ICR = 0x1D;
      // 011101 ICR = 160
      // IIC baud rate is: 8M/(1*160)=50kb
IICC1_IICEN |= 0b1;
while(IICS_BUSY);
// start IIC in master transmit mode
IICC1 |= 0x30;
while(!IICS_BUSY);
Send_Data(0xa2);
Wait_Ack();
Send_Data(0x0);
IICS_IICIF |= 1;
Wait_Ack();
IICS_IICIF |= 1;
Send_Data(0x0);
IICC1_RSTA |= 1;
Send_Data(0xa3);
Wait_Ack();
IICC1_TX &= 0;
IICD;
for(i = 0; i < 16; ++i) {
    IICS_IICIF |= 1;
    second = IICD;
}
IICC1_MST &= 0;
EnableInterrupts; /* enable interrupts */
for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
/*
** MCG in PEE mode
** using external oscillator
** oscillator clock 16MHz
** bus system clock 8MHz
*/
void Init_MCG(void)
{
/* set system clock */
MCGC2 = 0x36;
      // 00 BDIV divide-by-1
      // 1RANGE high frequency range
      // 1HGO external oscillator for high gain operation
      // 0
      // 1EREFS a crystal is being used
      // 1ERCLKEN ensure the external reference clock is active
      // 0
while(!MCGSC_OSCINIT);
MCGC1 = 0xB8;
      // 10 CLKS select external reference clock as system clock source
      // 111 RDIV divide-by-128
      // 0   IREFS select the external referenceclock
      // 00
while(MCGSC_IREFST);
while(MCGSC_CLKST != 0b10);
MCGC1 = 0xA0;
MCGC3 = 0x44;
      // 0
      // 1PLLSselect the PLL
      // 0
      // 0
      // 0100VDIVmultiply-by-16 1MHz reference * 16 = 16MHz
while(!MCGSC_PLLST);
while(!MCGSC_LOCK);
MCGC1 = 0x20;
while(MCGSC_CLKST != 0b11);
}16M晶振, 8M总线频率。
用示波器查看SCL, SDA时序,与寄存器反应的情况相符合:发A2H, slave device有应答,然后是字地址00H无应答。SDA第9位高电平。

求教是哪个地方原因。程序中有错误也恳请指出。
页: [1]
查看完整版本: 时钟日历芯片NXP8563写字地址无应答,求教