fixed the endian issue on the INA260 driver

This commit is contained in:
Skot Croshere 2023-01-27 22:13:01 -05:00
parent 910f46927f
commit e1c5cf7eb7
4 changed files with 24 additions and 19 deletions

View File

@ -8,7 +8,7 @@
"interface/ftdi/esp32_devkitj_v1.cfg",
"target/esp32s3.cfg"
],
"idf.port": "/dev/cu.usbserial-14301",
"idf.port": "/dev/cu.usbserial-1434301",
"idf.pythonBinPath": "/Users/skot/.espressif/python_env/idf4.4_py3.9_env/bin/python",
"idf.toolsPath": "/Users/skot/.espressif",
"files.associations": {

View File

@ -33,29 +33,29 @@ static esp_err_t register_write_byte(uint8_t reg_addr, uint8_t data) {
return ret;
}
uint16_t INA260_read_current(void) {
float INA260_read_current(void) {
uint8_t data[2];
ESP_ERROR_CHECK(register_read(INA260_REG_CURRENT, data, 2));
//ESP_LOGI(TAG, "Raw Current = %02X %02X", data[1], data[0]);
return (uint16_t)(data[0] | (data[1] << 8)) * 1.25;
return (uint16_t)(data[1] | (data[0] << 8)) * 1.25;
}
uint16_t INA260_read_voltage(void) {
float INA260_read_voltage(void) {
uint8_t data[2];
ESP_ERROR_CHECK(register_read(INA260_REG_BUSVOLTAGE, data, 2));
//ESP_LOGI(TAG, "Raw Voltage = %02X %02X", data[1], data[0]);
return (uint16_t)(data[0] | (data[1] << 8)) * 1.25;
return (uint16_t)(data[1] | (data[0] << 8)) * 1.25;
}
uint16_t INA260_read_power(void) {
float INA260_read_power(void) {
uint8_t data[2];
ESP_ERROR_CHECK(register_read(INA260_REG_POWER, data, 2));
//ESP_LOGI(TAG, "Raw Power = %02X %02X", data[1], data[0]);
return (data[0] | (data[1] << 8)) * 10;
return (data[1] | (data[0] << 8)) * 10;
}

View File

@ -98,8 +98,8 @@ typedef enum _alert_latch {
} INA260_AlertLatch;
uint16_t INA260_read_current(void);
uint16_t INA260_read_voltage(void);
uint16_t INA260_read_power(void);
float INA260_read_current(void);
float INA260_read_voltage(void);
float INA260_read_power(void);
#endif /* INA260_H_ */

View File

@ -43,22 +43,27 @@ void app_main(void) {
ADC_init();
//DS4432U tests
DS4432U_set_vcore(1.25);
DS4432U_set_vcore(1.4);
//Fan Tests
EMC2101_init();
EMC2101_set_fan_speed(0.5);
vTaskDelay(500 / portTICK_RATE_MS);
ESP_LOGI(TAG, "Fan Speed: %d RPM", EMC2101_get_fan_speed());
ESP_LOGI(TAG, "Chip Temp: %.2f C", EMC2101_get_chip_temp());
//Current Sensor tests
ESP_LOGI(TAG, "Current: %d mA", INA260_read_current());
ESP_LOGI(TAG, "Voltage: %d mV", INA260_read_voltage());
ESP_LOGI(TAG, "Power: %d mW", INA260_read_power());
while (1) {
ESP_LOGI(TAG, "Fan Speed: %d RPM", EMC2101_get_fan_speed());
ESP_LOGI(TAG, "Chip Temp: %.2f C", EMC2101_get_chip_temp());
//ESP32 ADC tests
ESP_LOGI(TAG, "Vcore: %d mV", ADC_get_vcore());
//Current Sensor tests
ESP_LOGI(TAG, "Current: %.2f mA", INA260_read_current());
ESP_LOGI(TAG, "Voltage: %.2f mV", INA260_read_voltage());
ESP_LOGI(TAG, "Power: %.2f mW", INA260_read_power());
//ESP32 ADC tests
ESP_LOGI(TAG, "Vcore: %d mV\n", ADC_get_vcore());
vTaskDelay(5000 / portTICK_RATE_MS);
}
ESP_ERROR_CHECK(i2c_master_delete());
ESP_LOGI(TAG, "I2C unitialized successfully");