微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > bp32000寄存器的值读不出来

bp32000寄存器的值读不出来

时间:10-02 整理:3721RD 点击:

TI的工程师你好

         我在用bq32000时现在寄存器的值读不出来,晶振已经起振,电源供电没问题,数据写入的时序也是对的,可RTC数据就是读不出来,全是00;我现在都不确定这个芯片有没有工作,有办法确认么?

bq32000芯片不是I2C接口么,他是标准的I2C协议么,是不是我单片机每给它发送一个8位的数据,它都会返回一个ACK,只有接收到ACK后才能发送吓一跳数据

是标准的I2C。你的I2C的时钟是多少?时序满足手册第8页的要求吗

   我是用IO口模拟的,是40KHz,25us

SCL和SDA都通过上拉电阻上拉到Vcc了吗?时序图发上来看下吧,是的,每次发送完数据都会有一位应答信号的。

    SCL和SDA都得外接上拉电阻么,我是直接接到单片机管脚上的,单片机内部管脚有上拉电阻吧

至于时序图今天发不了了,明天吧,不过我发现不焊接bq32000时时序是对的,当焊上bq32000时,IO口的输出高电平是有时候会只有一半的电压,不知道是怎么回事

1. SCL和SDA应该都外接上拉电阻

2. 确认一下 你的单片机内部管脚 有没有 上拉电阻,有的话 将其使能激活

3. IO出现一半电压,常见的原因就是 由于未接上拉电阻 导致处于高阻态或者OC(OD)态

是的,SCL和SDA都是开漏输出,需要上拉,如果你和单片机的I2C或GPIO连接的话,可看下内部是否已经上拉,否则的话必须上拉到Vcc。

SCL和SDA已接上拉电阻,下面是我的时序图

  未焊接bq32000芯片时单片机的输出,写分钟寄存器

  焊接上bq3200后单片机的输出,写分钟寄存器

  这是读取分钟寄存器的内容时序

现在秒寄存器和年寄存器已经可以写进去并且读出来了,可分钟、小时、月等寄存器的值能读出来,但是写不进去,下面的图片是写分钟寄存器的时序图,请帮忙看一下时序是否有问题,我快疯了,为什么同样的写程序,有的能写进去,有的写不进去

   其中只有高电平一半的脉冲冒失是接收到的ACK信号

并且我还发现一个问题:当秒计数到60时分钟寄存器的值也是不变的,是不是芯片坏了啊,还是需要通过irqn信号来重新写寄存器啊

 貌似是由于ACK的信号达不到高电平导致的,当我单片机发送8位的数据后,再把输出拉高就不行了,只能达到高电平的一半,是设计问题还是我程序有问题啊

  已经确认问题点,是SCL信号和SDA信号相互干扰,当SCL为低是SDA不能拉高,而当SDA为高,想要SCL为低时,SDA就变为原来的一半,不知道你们有没有遇到过这种情况,是不是跟这两个信号通过上拉电阻接到同一个VCC有关

两个信号都上拉到同一个Vcc是没问题的,不过这种波形确实没见过,你发的第一个时序图看着还是正常的啊。

  第一个是没有接bq32000芯片的时序,只是单片机IO口的输出

单片机IO口是几位的呢?

是8bits么?

是8位的,不过这好像跟它的位数没有关系吧,只是用了其中两路来模拟I2C的SCL 和SDA 信号

是用单片机的IO口配置的I2C 吗,那么需要看下内部是否已经做了上拉,如果已经上拉的话,BQ32000的SCL,SDA再上拉的话,总电阻减小,可能就不足以将DATA线拉低,所以看到的ACK信号有幅值

   貌似不是这个导致的,我提到一个现象不知道你看到没有,就是在发送8位的数据的时候数据都是正常的,

1、当最后一位为高,这时我要是把SCL拉低,那么SDA就会被拉低为原来的一半;

2、当8位数据发送完成以后,SCL为低时,如果我拉高SDA(也就是释放SDA时)SDA也只有高电平的一半;

3、我看了秒接收到的数据,当为0时为高电平的一半,为1时就是高电平

我觉得这应该不是我时序或者说程序的问题了,而是硬件除了问题,可就是不知道问题在哪

LZ所用单片机的型号?

msp430f5328

按照BQ32000的DATASHEET的Page 3,SCL、SDA、IRQ的上拉阻值应该是4.7K;而参照MSP430F532x的DATASHEET的Page 44,其端口内含的上拉阻值是20~35~50K。

建议:屏蔽MSP430F532x端口内含的上拉电阻,在SCL、SDA、IRQ 外加4.7K电阻

根据手册

当IO口作为输出时,应该不用管PxREN寄存器吧,只有当作为输入时,才根据需要配置上拉或者下拉吧

并且我试过了,无论输入还是输出,我都强制配置PxREN为0,也就是关闭上拉下拉寄存器,可输出还是一样(外部接了4.7K的上拉电阻)

问题已解决,所有寄存器已经能够正常读写,谢谢大家的帮助,原来是返回的ACK信号错了,返回成NACK信号

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top