TI的工程师你好
我在用bq32000时现在寄存器的值读不出来,晶振已经起振,电源供电没问题,数据写入的时序也是对的,可RTC数据就是读不出来,全是00;我现在都不确定这个芯片有没有工作,有办法确认么???
Lion chang:
bq32000芯片不是I2C接口么,他是标准的I2C协议么,是不是我单片机每给它发送一个8位的数据,它都会返回一个ACK,只有接收到ACK后才能发送吓一跳数据
Seasat Liu:
回复 Lion chang:
是标准的I2C。你的I2C的时钟是多少?时序满足手册第8页的要求吗
Lion chang:
回复 Seasat Liu:
我是用IO口模拟的,是40KHz,25us
Kailyn Chen:
回复 Lion chang:
SCL和SDA都通过上拉电阻上拉到Vcc了吗?时序图发上来看下吧,是的,每次发送完数据都会有一位应答信号的。
Lion chang:
回复 Kailyn Chen:
SCL和SDA都得外接上拉电阻么,我是直接接到单片机管脚上的,单片机内部管脚有上拉电阻吧
至于时序图今天发不了了,明天吧,不过我发现不焊接bq32000时时序是对的,当焊上bq32000时,IO口的输出高电平是有时候会只有一半的电压,不知道是怎么回事
WEN JAMES:
回复 Lion chang:
1. SCL和SDA应该都外接上拉电阻
2. 确认一下 你的单片机内部管脚 有没有 上拉电阻,有的话 将其使能激活
3. IO出现一半电压,常见的原因就是 由于未接上拉电阻 导致处于高阻态或者OC(OD)态
Kailyn Chen:
回复 Lion chang:
是的,SCL和SDA都是开漏输出,需要上拉,如果你和单片机的I2C或GPIO连接的话,可看下内部是否已经上拉,否则的话必须上拉到Vcc。
Lion chang:
回复 Kailyn Chen:
SCL和SDA已接上拉电阻,下面是我的时序图
未焊接bq32000芯片时单片机的输出,写分钟寄存器
焊接上bq3200后单片机的输出,写分钟寄存器
这是读取分钟寄存器的内容时序
Lion chang:
回复 Kailyn Chen:
现在秒寄存器和年寄存器已经可以写进去并且读出来了,可分钟、小时、月等寄存器的值能读出来,但是写不进去,下面的图片是写分钟寄存器的时序图,请帮忙看一下时序是否有问题,我快疯了,为什么同样的写程序,有的能写进去,有的写不进去
其中只有高电平一半的脉冲冒失是接收到的ACK信号
并且我还发现一个问题:当秒计数到60时分钟寄存器的值也是不变的,是不是芯片坏了啊,还是需要通过irqn信号来重新写寄存器啊
Lion chang:
回复 Lion chang:
貌似是由于ACK的信号达不到高电平导致的,当我单片机发送8位的数据后,再把输出拉高就不行了,只能达到高电平的一半,是设计问题还是我程序有问题啊