关于时钟芯片8563T的问题

[复制链接]
3636|4
 楼主| 光阴似剑 发表于 2010-4-1 11:42 | 显示全部楼层 |阅读模式
本帖最后由 光阴似剑 于 2010-4-1 11:45 编辑

程序与电路板都用了一年多了,最近在市场上买了一批8563T后,在程序初始化时如以前为2009年10月23日 15时55分12秒,现在的芯片显示出来的却是20++年1+月2+日 3+时7+分7+秒,将其时间修改后还是显示如此内容。
卖器件的人说现在的芯片是厂家新的片子(芯片上没有点),我以前用的芯片上带点的属于旧的芯片,现在不生产了,程序方面我也加了适当的延时,但问题还是如此,请问有遇到此问题的吗?
 楼主| 光阴似剑 发表于 2010-4-1 21:33 | 显示全部楼层
请大家帮忙啊~
NE5532 发表于 2010-4-1 22:03 | 显示全部楼层
确认I2C应答是否正确。
 楼主| 光阴似剑 发表于 2010-4-2 09:30 | 显示全部楼层
这是应答函数,帮看看是否有问题,谢谢
/********************************************
输出ACK=0
********************************************/
void WriteACK(bit ack)
{
    SDA=ack;
    _nop_();
    SCL=1;
   _nop_();
    SCL=0;
}
/*-----------------------------------------------
调用方式:void ack(void)
函数说明:应答函数
-----------------------------------------------*/
void ack(void)
{
SDA=1;
SCL=0;
_nop_();  
SCL=1;
_nop_();
SCL=0;
_nop_();
}


/*-----------------------------------------------
调用方式:void no_ack(void)
无需应答位,在读程序中用到
-----------------------------------------------*/
void no_ack(void)
{
SDA=1;
_nop_();
SCL=1;
_nop_();
SCL=0;
_nop_();
}
john_light 发表于 2010-4-2 10:47 | 显示全部楼层
我觉得是芯片的问题,你可能买到漏嘢货(假片、旧片坏片之类)了。

从程序上排查的话,你应该仔细关注I2C总线本身的特性。

MCU作为发送者,在每次发送阶段的ACK位置总是把SDA线释放。
而PCF8563T作为接收者,在ACK位置必须拉低SDA线以示应答。

我从你贴出的代码中没有看到读入SDA线状态的语句,这样一来,芯片到底存不存在,是否工作正常均无从得知。
程序要改一改啦,另外有条件的话,利用示波器观察一下数据收发的过程应该会有所收获。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部