申明:本人使用的芯片为BQ40Z50-r1,主控模块为STM32F302,参考代码为野火通讯的模拟I2c部分。
1、众所周知,BQ芯片的这个SMBus协议与I2c协议大同小异,区别在于SM它的通信频率相对没有IC那么高。那么问题来了,如何通过非硬件♂I2c来控制频率以实现SMBus通信,之前在网上我也找过相关电量芯片读取资料,似乎大部分的前辈都是通过硬件I2c来实现的。于是乎鄙人不信邪,就想调一个软件I2c出来玩玩。
2、下面为操作过程:
1、首先需要硬件工程师搭配好环境。
2、你需要配置好属于你的(32单片机)的延时函数(us&ms级别)//很重要。
3、开整。ctrl+c ctrl+v
上时序图:
接下来就是根据时序图“敲”代码啦(通假字 敲 通->抄)。
一步配置:将我们单片机的SCL&SDA接口配置好,SDA输入模式设置为上拉,输出模式则设置为推挽即可。SCL则不讲究那么多,直接推挽输出就完事儿。
代码如下: