您好 TI!
我需要使用 Launchpad cc1352P2通过 I2C 从外部对 tps65218d0进行重新编程。
tps65218d0已通电、我可以毫无问题地读取寄存器、但我尝试对寄存器进行重新编程、并且寄存器始终保持默认值)。
附件是我的代码中用于重新编程地址寄存器0x1A 的一个段。
否则、if (CountertaskTPS65218 = 1)
{
计数器 TPS65218++;
计数器 TPS65218++;
I2C_Transaction i2cTransaction ={0};
writeBuffer[0]= 0x10;//要写入的地址寄存器(密码)
writeBuffer[1]= 0x67;// 0x1A XOR 0x7D 要写入的值
readBuffer[0]= 0x00;
readBuffer[1]= 0x00;
i2cTransaction.slaveAddress = 0x24;
i2cTransaction.writeBuf = writeBuffer;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf =空;
i2cTransaction.ReadCount = 0;
I2C_transfer (i2c、&i2cTransaction);
writeBuffer[0]= 0x1A;//要写入的地址寄存器(密码)
writeBuffer[1]= 0x86;//要写入的值
readBuffer[0]= 0x00;
readBuffer[1]= 0x00;
i2cTransaction.slaveAddress = 0x24;
i2cTransaction.writeBuf = writeBuffer;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf =空;
i2cTransaction.ReadCount = 0;
I2C_transfer (i2c、&i2cTransaction);
}
否则 if (CountertaskTPS65218 == 25)
{
计数器 TPS65218++;
I2C_Transaction i2cTransaction ={0};
writeBuffer[0]= 0x10;//要写入的地址寄存器(密码)
writeBuffer[1]= 0x50;
readBuffer[0]= 0x00;
readBuffer[1]= 0x00;
i2cTransaction.slaveAddress = 0x24;
i2cTransaction.writeBuf = writeBuffer;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf = readBuffer;
i2cTransaction.ReadCount = 0;
I2C_transfer (i2c、&i2cTransaction);
}
否则 if (CountertaskTPS65218 == 26)
{
计数器 TPS65218++;
I2C_Transaction i2cTransaction ={0};
writeBuffer[0]= 0x10;//要写入的地址寄存器(密码)
writeBuffer[1]= 0x1A;
readBuffer[0]= 0x00;
readBuffer[1]= 0x00;
i2cTransaction.slaveAddress = 0x24;
i2cTransaction.writeBuf = writeBuffer;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf = readBuffer;
i2cTransaction.ReadCount = 0;
I2C_transfer (i2c、&i2cTransaction);
}
否则 if (CountertaskTPS65218 == 27)
{
计数器 TPS65218++;
I2C_Transaction i2cTransaction ={0};
writeBuffer[0]= 0x10;//要写入的地址寄存器(密码)
writeBuffer[1]= 0xCE;
readBuffer[0]= 0x00;
readBuffer[1]= 0x00;
i2cTransaction.slaveAddress = 0x24;
i2cTransaction.writeBuf = writeBuffer;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf = readBuffer;
i2cTransaction.ReadCount = 0;
I2C_transfer (i2c、&i2cTransaction);
}
附件是我的代码中用于读取地址寄存器0x1A 的一个段。
否则、if (CountertaskTPS65218 == 2)
{
//读取芯片
计数器 TPS65218++;
计数器 TPS65218++;
I2C_Transaction i2cTransaction ={0};
writeBuffer[0]= 0x1A;//要读取的地址寄存器
writeBuffer[1]= 0x00;//要写入的值
readBuffer[0]= 0x00;
readBuffer[1]= 0x00;
i2cTransaction.slaveAddress = 0x24;
i2cTransaction.writeBuf = writeBuffer;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf =空;
i2cTransaction.ReadCount = 0;
I2C_transfer (i2c、&i2cTransaction);
i2cTransaction.writeBuf =空;
i2cTransaction.writeCount = 0;
i2cTransaction.readBuf = readBuffer;
i2cTransaction.ReadCount = 1;
I2C_transfer (i2c、&i2cTransaction);
IF (StatusProgramming =0 || readBuffer[0]!= 0x86)
{
状态编程= 0;
}
}
我始终读取0x06、即0x1A 寄存器的默认值、该寄存器永远不会更新0x80。 我尝试编辑的任何其他寄存器也是如此。
非常感谢。 此致