BQ34Z100-G1读数据地址始终无法收到ACK回复
你好,TI的工程师们,我现在用FPGA的IO模拟IIC协议,想要读取电池的电量信息,先发写地址0XAA后,能收到设备的ACK,然后在发数据地址0X02,发送完后,在下一个时钟周期始终无法收到设备的ACK信号。我也试了按照 上面的流程试了0x00/0x03/0x08等其他只读寄存器,都不能收到内部数据地址的ACK回复,我也用示波器测试了时序,都满足手册上给出的建立时间和保持时间等,时钟频率我也试了100K,200K和250K也都是一样的结果。另外上拉是到3.3V的。上拉电阻我试了10K,4.7K,1K等,都是一样的结果,请问BQ34Z100-G1对于只读数据地址有什么特殊要求吗?求指点。
测试图如下。
——
请问要读取电池的电量信息是不是有什么流程呢?还是要先进行参数设置和校验呢?现在我只是用FPGA来模拟了IIC的master。没有进行BQ34Z100——G1配置?请问如果要先进行配置的话。需要怎么做呢?
附件是我用signaltap抓的波形图。求帮助呀!感谢感谢!
从波形看, 时序没有问题。
但是,为什么一开始SDA上电压只有0.8V左右?
正常34z100应该不配置也能读到数据。
先试一下读取芯片版本
W: AA 00 01 00
R: AB 00 2bytes.
由于FPGA没有连接多余的IO口出来,我没有办法用手动的方式去触发读和写。我用了一个1秒的间隔时间来启动FPGA状态机。由于好像一次性只能上传一张附件,就只上传了一张。由于BQ34Z100的数据地址无ACK响应,有时在后面产生的时钟也会出现一个半高平。我看了没有达到VIH=1.2V的要求。也只有0.8V的样子。我也怀疑过是不是这个时候突然出现的半高电平,导致的无法把BQ34Z100反馈的ACK信号传输过来。但我用signaltap抓出来的时钟信号没有半高电平的状态。从示波器的抓取来看,一直就在下面三张图片的状态1S间隔的循环。(黄色为时钟)
另外我看手册,I2C能实现one-byte write. 你的意思是一次性向00 数据寄存器写2bytes吗?以前我试过向CMD地址0X00发指令也不能收到ACK,按照写的流程,没有ACK我的FPGA状态机就会回到 idle状态。也不会向BQ34Z100-G1里写东西。
等下我把原理图也上传帮忙看一下哈。感谢。
下图的上拉电阻我断开后,直接飞线到供给FPGA bank电压3.3V了。
由于我在FPGA上无法实现先写后读的连续操作,FPGA电路设计上没有多余的IO引出供我使用,所以无法实现你说的先写后读连续操作,另外我看到手册上说了要先很多使能信号,是不是要先向BQ34Z100进行配置,然后才能进行读取呢?我看到手册上8.3.6.10要对0x02读取数据先要Enable寄存器。是否只读寄存器的内容先要进行配置呢?期望你们的回复,十分感谢。