目前的问题是:
应用IO口模拟时序,可以设置时间,并可以正确读取设置的时间。
但是时钟不走,尝试过的解决:
1,考虑是否晶体与芯片离得太远造成起震困难,但是PCB上,确实离得很近了。
2,考虑是时钟芯片是否损坏,更换时钟芯片——仍然不走
3,考虑是否晶振不好使,或不利于起震,更换新的晶振——仍然不走
4,考虑晶振是32.768kHZ,而原先买的不知道是khz,还是Mhzde,重新买了个圆柱晶体换上仍然不走。
5,考虑是否是软件问题,由于可以正确写入和读取数据,重点考虑初始化是否有问题:
init_1390()
{
spi_start();
spi_write_b(0x8d);
spi_write_b(0x18); //0x8d control
spi_write_b(0x00);//0x8e statues
spi_write_b(0x00); //0x8f
spi_stop();
}
BIT7 BIT6 BIT5 BIT4 BTI3 BTI2 BIT1 BIT0
EOSC 0 BBSQ1 RS2 RS1 INTCN 0 AIE
0 0 0 0 0 1 0 0
EOSC=0使能晶振
BBSQ1 使能SQW/INT引脚:方波或中断输出
RS2和RS1方波输出的频率控制
INTCN=0时 SQW/INT引脚输出方波
INTCN=1时计时计数器与报警值比匹配时,激活SQW/INT引脚,相关报警标志位置位,忽略INTCN的状态,该位默认为0
AIE报警中断使能AIE=1,
另外还涉及状态寄存器和TRICKLE CHARGER寄存器。
暂时没有别的思路了。望高手指点迷津! |