void ADS1115_ReadRawData(ADS1115_InitTypeDefine *ADS1115_InitStruct)//ADS1115_RawData { unsigned char Result[2]; uint8_t Writebuff[1]; Writebuff[0] = ADS1115_Pointer_ConverReg; HAL_I2C_Master_Transmit(&hi2c1, ADS1115_InitStruct->ADDRESS, Writebuff, 3, 100); HAL_I2C_Master_Receive(&hi2c1, ADS1115_InitStruct->ADDRESS , Result, 2, 100); ADS1115_InitStruct->ADS1115_RawData[ADS1115_InitStruct->CHANNEL] = (int16_t) (((Result[0] << 8) & 0xFF00) | (Result[1] & 0xFF)); //return Writebuff; }
时间: 2024-03-09 13:47:45 浏览: 96
这段代码是用于读取 ADS1115 模块中的原始数据,并将其存储到 `ADS1115_InitTypeDefine` 结构体变量中的 `ADS1115_RawData` 数组中。下面是对这段代码的解释:
```c
void ADS1115_ReadRawData(ADS1115_InitTypeDefine *ADS1115_InitStruct)
{
unsigned char Result[2];
uint8_t Writebuff[1];
Writebuff[0] = ADS1115_Pointer_ConverReg;
HAL_I2C_Master_Transmit(&hi2c1, ADS1115_InitStruct->ADDRESS, Writebuff, 3, 100);
HAL_I2C_Master_Receive(&hi2c1, ADS1115_InitStruct->ADDRESS , Result, 2, 100);
ADS1115_InitStruct->ADS1115_RawData[ADS1115_InitStruct->CHANNEL] = (int16_t)(((Result[0] << 8) & 0xFF00) | (Result[1] & 0xFF));
}
```
首先定义了一个 `Result` 数组变量和一个 `Writebuff` 数组变量。`Result` 数组用于存储从 ADS1115 模块中读取到的数据,`Writebuff` 数组用于向 ADS1115 模块写入数据。
接着将 `Writebuff[0]` 赋值为 `ADS1115_Pointer_ConverReg`,即将转换寄存器地址写入 `Writebuff` 数组中。
通过 `HAL_I2C_Master_Transmit` 函数向 ADS1115 模块发送 `Writebuff` 数组中的数据,这里传输的数据长度为 3 个字节。该函数的返回值表示传输是否成功,如果返回值不为 `HAL_OK`,则表示传输失败。
然后通过 `HAL_I2C_Master_Receive` 函数读取 ADS1115 模块中转换结果的数据,将读取到的数据存储到 `Result` 数组中。该函数的返回值表示读取是否成功,如果返回值不为 `HAL_OK`,则表示读取失败。
最后将读取到的数据进行处理,将其转换为有符号的 16 位整数,并存储到 `ADS1115_InitStruct` 结构体变量中的 `ADS1115_RawData` 数组中的对应元素中。
阅读全文