图中,我试图通过发送0x16 0x0d来读取电池电量百分比,但发现,在发送0x16器件地址时,能正常拉低sda,进行ack应答,而当随后发送的0x0d寄存器地址时,不但未将sda拉低,反而将clk拉低,期间我无法通过stm32引脚端将clk拉高。
在读取所有寄存器时均如此,求解?!
看波形,可以检查以下CLK的上拉配置是由MCU内部上拉的么?
检查以下是否内部上拉配置的问题,后者尝试外部上拉。
MCU内部选择的是复用开漏输出模式,而外部也进行了上拉。
MCU使用该接口能够与其他芯片通过SMBus通信,但此次与通信却失败了。
MCU内部选择的是复用开漏输出模式,而外部也进行了上拉。
MCU使用该接口能够与其他芯片通过SMBus通信,但此次与通信却失败了。
你的第二个字节好像少了一个ACK的clock吧?你看一下第三个字节的第一bit是否被拉低了?
已经解决的了,是SMBus时钟的问题;时钟频率设置过高,所以出现了上面的现象。后将时钟频率设置到100KHz以下,就可以通讯了。
但奇怪的是,当分别读取四节电池电压时,有一节电池电压读取不出来。而总电压又是另外三节电池电压的读取和。
建议用TI的上位机软件和来读一下电池包的电压数据,看是否现象一致。如果这样读出来的电压是正常的,那还是说明你用MCU的读取方式有问题。
能给我参考下你的MCU与3060通过Smbus通讯的程序吗?
最近看zxing源码中的android的datamatrix部分,整个过程熟悉了一遍,并没有找到有关二维码的图像矫正方面的代码,求助大神!!
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。