打印

关于时钟芯片8563T的问题

[复制链接]
2628|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_();
}

使用特权

评论回复
5
john_light| | 2010-4-2 10:47 | 只看该作者
我觉得是芯片的问题,你可能买到漏嘢货(假片、旧片坏片之类)了。

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

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

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

使用特权

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

本版积分规则

6

主题

17

帖子

0

粉丝