BQ40Z50芯片的使用心得(基于STM32F302)
申明:本人使用的芯片为BQ40Z50-r1,主控模块为STM32F302,参考代码为野火通讯的模拟I2c部分。
2、下面为操作过程:
1、首先需要硬件工程师搭配好环境。
2、你需要配置好属于你的(32单片机)的延时函数(us&ms级别)//很重要。
3、开整。ctrl+c ctrl+v
接下来就是根据时序图“敲”代码啦(通假字 敲 通->抄)。
一步配置:将我们单片机的SCL&SDA接口配置好,SDA输入模式设置为上拉,输出模式则设置为推挽即可。SCL则不讲究那么多,直接推挽输出就完事儿。
二步开始:时钟线为高时,数据线出现下降沿表示起始信号
第三步:就要开始我们的数据发送了,BQ40Z50的设备地址默认为0x16。
第四步:等待应答,把数据线释放(给高电平),时钟线拉高然后读取SDA输入信号,为0是应答,1为非应答。
第五步:在有应答之后我们执行第五步,发送寄存器地址,也就是所谓的命令参数,鄙人做的是读取电压(0x09)以及电量百分比(0x0D),和发送设备地址一样,需等待应答后执行下一步。
第六步:在寄存器地址成功获得应答后,需重新开始我们的start函数,emm,为了保险起见在 start之前我还stop了一下。防止后面数据不完整,至于为什么我后面会贴链接。
八:终于终于可以读数据啦:在777过后接收到应答,我们兴致冲冲的开始read,电压为16位,读取时需要进行移位合并操作。电量百分比则不需要。
九:发送应答,将数据线持续拉高(一个时钟周期)
十:读高位即再次调用read函数
十一:回复无应答
十二:调用stop函数就 完事儿了。
查看21道真题和解析