TI中文支持网
TI专业的中文技术问题搜集分享网站

PCF2123实时时钟

用的是MSP430FR5723的硬件SP1口与PCF2123实时时钟芯片通信,现在问题是读不出时间,不知道在哪出来问题。
SP1主要通信如下:unsigned char SPITransfer(unsigned char aout)
{
    unsigned char data1;
    while (!(UCB0IFG&UCTXIFG));    UCB0TXBUF=aout;
    while (!(UCB0IFG&UCRXIFG));    data1= UCB0RXBUF;
    return(data1);
}
unsigned char RTCReadReg(unsigned char aReg)
{
    unsigned char result;
    P2OUT |=  BIT4;                           //ce=1;
    SPITransfer(aReg|0x90);                  //读数据指令
    result=SPITransfer(0xff);               //度一字节返回数据
    P2OUT &=  ~BIT4;                       //ce=0;
    return(result);
}
void RTCWriteReg(unsigned char aReg,unsigned char aValue)
{
    P2OUT |=  BIT4;              //ce=1;
    SPITransfer(aReg|0x10);     //写指令
    SPITransfer(aValue);   
    P2OUT &=  ~BIT4;            //ce=0;
}
时钟配置:
void RTCConfigure()
{           
    RTCWriteReg(0x00,0x00);
    RTCWriteReg(0x01,0x00);

    RTCWriteReg(0x02,0x04);
    RTCWriteReg(0x04,0x02);
    RTCWriteReg(0x03,0x03);

    RTCWriteReg(0x07,0x01);
    RTCWriteReg(0x05,0x01);
    RTCWriteReg(0x08,0x00);
   // RTCWriteReg(0x00,0x00);
}

int main(void){

  WDTCTL = WDTPW + WDTHOLD;                          // Stop watchdog timer to prevent time out reset
  sys_clock();
  GPIO_Init();  SPI_Init();
  RTCConfigure();
//__enable_interrupt() ;
  while(1)
  {    sec=RTCReadReg(0x02);
    min=RTCReadReg(0x03);
    hou=RTCReadReg(0x04);    day=RTCReadReg(0x05);
    mon=RTCReadReg(0x07);
    year=RTCReadReg(0x08);

   }

灰小子:

自己动手丰衣足食,已解决

赞(0)
未经允许不得转载:TI中文支持网 » PCF2123实时时钟
分享到: 更多 (0)