打印

实时时钟

[复制链接]
837|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guyan1987|  楼主 | 2014-9-25 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好!最近在捣鼓MSP430FR5723的硬件SP1口与CF2123实时时钟芯片,做一个实时时钟,现在问题是读不出时间,不知道在哪出来问题。
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);

   }

相关帖子

沙发
guyan1987|  楼主 | 2014-9-25 15:43 | 只看该作者
PCF2123时钟芯片

使用特权

评论回复
板凳
dirtwillfly| | 2014-9-25 23:02 | 只看该作者
好像重复贴

使用特权

评论回复
地板
songchenping| | 2014-9-26 16:01 | 只看该作者
你可以先用示波器量一下SCLK信号电平,再有就是看看芯片初始化了没有。最后就要看你的SPI时序了。

使用特权

评论回复
5
Unshining| | 2014-9-26 16:37 | 只看该作者
我想问LZ一个问题啊,这款MSP430自带实时时钟,为什么还要外接实时时钟芯片呢。

使用特权

评论回复
6
someontime| | 2014-9-26 21:32 | 只看该作者
不知道该怎么办了

使用特权

评论回复
7
guyan1987|  楼主 | 2014-9-26 22:04 | 只看该作者
Unshining 发表于 2014-9-26 16:37
我想问LZ一个问题啊,这款MSP430自带实时时钟,为什么还要外接实时时钟芯片呢。 ...

MSP430自带时钟,准确度不够。

使用特权

评论回复
8
guyan1987|  楼主 | 2014-9-26 22:12 | 只看该作者
songchenping 发表于 2014-9-26 16:01
你可以先用示波器量一下SCLK信号电平,再有就是看看芯片初始化了没有。最后就要看你的SPI时序了。 ...

用的MSP430硬件SPI口,4种时钟极性与采样都试过

使用特权

评论回复
9
specialfrin| | 2014-9-26 22:19 | 只看该作者
需要增加什么进行调试

使用特权

评论回复
10
songchenping| | 2014-9-26 22:43 | 只看该作者
guyan1987 发表于 2014-9-26 22:12
用的MSP430硬件SPI口,4种时钟极性与采样都试过

和这个关系不大。还是要看时钟芯片。

使用特权

评论回复
11
Unshining| | 2014-9-27 11:49 | 只看该作者
guyan1987 发表于 2014-9-26 22:04
MSP430自带时钟,准确度不够。

时钟的准确度与振荡器的准确度是相关的,与芯片本身关系反而不大。为MSP430弄一个外接的高准确度32768HZ振荡器是能达到高精度的。而且MSP430内置时钟是可以调节偏移的,经过校准后准确度非常高。

使用特权

评论回复
12
Unshining| | 2014-9-27 11:53 | 只看该作者
另外建议CE=1后进行一下延时再进行SPI通信

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

133

帖子

2

粉丝