尊敬的先生:
请检查以下代码,以便与 BQ 7695203通信--我们需要您提供一些说明。
以下代码是用于具有 SPI 通信的 STM32的 TI 示例代码。
void SPI_WriteReg (uint8_t reg_addr、uint8_t * reg_data、uint8_t count)
{
// SPI 写入。 包括在 HFO 未启动或需要等待时间时重试。 请参阅 BQ76952软件开发指南查看示例
uint8_t addr;
uint8_t TX_Buffer [MAX_BUFFER_SIZE]={0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00};
unsigned int i;
无符号整型匹配;
无符号 int 重试次数= 10;
匹配= 0;
addr = 0x80 | reg_addr;//为什么它是使用0x80进行 OR 运算
for (I=0;I<计数;I++){
TX_Buffer[0]= addr;
TX_Buffer[1]= reg_data[i];
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_RESET); //发送两个字节后需要再次读取数据
HAL_SPI_TransmitReceive (&hspi1、TX_Buffer、rxdata、2、1);
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_SET);
while ((match ==0)&(retries >0)){
delayUS(500);
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_RESET);
HAL_SPI_TransmitReceive (&hspi1、TX_Buffer、rxdata、2、1);
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_SET);
if ((rxdata[0]== addr)&(rxdata[1]== reg_data[i]))
匹配= 1;
重试次数--;
}
匹配= 0;
addr += 1;
delayUS(500);
}
}
//读取 SPI 命令
void SPI_ReadReg (uint8_t reg_addr、uint8_t * reg_data、uint8_t count){
// SPI 读取。 包括在 HFO 未启动或需要等待时间时重试。 请参阅 BQ76952软件开发指南查看示例
uint8_t addr;
uint8_t TX_Buffer [MAX_BUFFER_SIZE]={0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00};
unsigned int i;
无符号整型匹配;
无符号 int 重试次数= 10;
匹配= 0;
addr = reg_addr;
for (I=0;I<计数;I++){
TX_Buffer[0]= addr;
TX_Buffer[1]= 0xFF;
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_RESET);
HAL_SPI_TransmitReceive (&hspi1、TX_Buffer、rxdata、2、1);
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_SET);
while ((match ==0)&(retries >0)){
delayUS(500);
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_RESET);
HAL_SPI_TransmitReceive (&hspi1、TX_Buffer、rxdata、2、1);
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_6、GPIO_PIN_SET);
if (rxdata[0]== addr){
匹配= 1;
reg_data[i]= rxdata[1];
}
重试次数--;
}
匹配= 0;
addr += 1;
delayUS(500);
}
}
谨致问候。。。
R·K·古普塔
OGOEnergy India Private Limited
