主题中讨论的其他器件: BQ34Z950、 BQ34Z50
尊敬的所有人:
我使用 SMBus 通信通过 tm4c123ghpm I2C 与 BQ34z950通信。 我使用 utils smbus.c 和 smbus.h 作为驱动程序库。 我在 SMBusMasterBlockWrite 中遇到问题。 当我尝试向寄存器写入 SMBusMasterBlockWrite 寄存器值时、该寄存器的值不会更新。 我正在使用 SMBusMasterByteWordWrite 进行写入、它工作正常。
这是我要做的。
工作函数:-
buff [0]=(uint8_t)数据;//低字节
buff [1]=(uint8_t)(数据>> 8);//高字节
RET = SMBusMasterByteWordWrite (&g_sMaster、SLAVE_ADDR、reg、buff、2);
UARTprintf ("\n\rret =%d "、ret);
while (SMBusStatusGet (&g_sMaster)=SMBus_transfer_in_progress)
{
//等待传输完成
}
SysCtlDelay (2000);
结果:-返回0并写入数据、因此当我使用 SMBusMasterByteWordRead 再次读取寄存器时、它返回更新后的值。
不起作用的功能:
buff [0]=(uint8_t)数据;//低字节
buff [1]=(uint8_t)(数据>> 8);//高字节
RET = SMBusMasterBlockWrite (&g_sMaster、SLAVE_ADDR、reg、buff、2);
UARTprintf ("\n\rret =%d "、ret);
while (SMBusStatusGet (&g_sMaster)=SMBus_transfer_in_progress)
{
//等待传输完成
}
SysCtlDelay (2000);
结果:- RET = 0、但不更新寄存器中的值。 因此、当我下次读取它时、不会显示更新后的值。
如果我做了任何错误或需要为块写入添加任何内容、请向我提供指导。 请帮助!!
此致、
Aman。