Skip to content

Commit be5d582

Browse files
committed
fix: INA230 test
1 parent ea88668 commit be5d582

File tree

3 files changed

+58
-53
lines changed

3 files changed

+58
-53
lines changed

obc/app/drivers/ina230/ina230.c

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
#include "obc_i2c_io.h"
33
#include "tca6424.h"
44
#include "obc_logging.h"
5+
#include <gio.h>
6+
#include "obc_board_config.h"
57
#include <stdio.h>
68
#include <assert.h>
79

@@ -88,28 +90,48 @@ static obc_error_code_t initTca6424PinState();
8890
*/
8991
obc_error_code_t initINA230() {
9092
obc_error_code_t errCode;
91-
for (uint8_t i = 0; i < INA230_DEVICE_COUNT; ++i) {
92-
const ina230_config_t device = ina230Devices[i];
93-
const uint16_t configurationRegister = (device.configurationMode << INA230_CONFIG_MODE_SHIFT) |
94-
(device.configurationShunt << INA230_CONFIG_SHU_SHIFT) |
95-
(device.configurationAvg << INA230_CONFIG_AVG_SHIFT) |
96-
(device.configurationBus << INA230_CONFIG_BUS_SHIFT);
93+
// for (uint8_t i = 0; i < INA230_DEVICE_COUNT; ++i) {
94+
// const ina230_config_t device = ina230Devices[i];
95+
// const uint16_t configurationRegister = (device.configurationMode << INA230_CONFIG_MODE_SHIFT) |
96+
// (device.configurationShunt << INA230_CONFIG_SHU_SHIFT) |
97+
// (device.configurationAvg << INA230_CONFIG_AVG_SHIFT) |
98+
// (device.configurationBus << INA230_CONFIG_BUS_SHIFT);
99+
//
100+
// uint8_t configRegisterUnpacked[] = {configurationRegister >> 8, configurationRegister & 0xFF};
101+
// uint8_t maskEnRegisterUnpacked[] = {device.maskEnableRegister >> 8, device.maskEnableRegister & 0xFF};
102+
// uint8_t alertRegisterUnpacked[] = {device.alertRegister >> 8, device.alertRegister & 0xFF};
103+
// uint8_t calibrationRegisterUnpacked[] = {device.calibrationRegister >> 8, device.calibrationRegister & 0xFF};
104+
//
105+
// RETURN_IF_ERROR_CODE(writeINA230Register(INA230_CONFIG_REGISTER_ADDR, configRegisterUnpacked,
106+
// sizeof(configRegisterUnpacked) / sizeof(configRegisterUnpacked[0]), i));
107+
// RETURN_IF_ERROR_CODE(writeINA230Register(INA230_MASK_ENABLE_REGISTER_ADDR, maskEnRegisterUnpacked,
108+
// sizeof(maskEnRegisterUnpacked) / sizeof(maskEnRegisterUnpacked[0]), i));
109+
// RETURN_IF_ERROR_CODE(writeINA230Register(INA230_ALERT_LIMIT_REGISTER_ADDR, alertRegisterUnpacked,
110+
// sizeof(alertRegisterUnpacked) / sizeof(alertRegisterUnpacked[0]), i));
111+
// RETURN_IF_ERROR_CODE(
112+
// writeINA230Register(INA230_CALIBRATION_REGISTER_ADDR, calibrationRegisterUnpacked,
113+
// sizeof(calibrationRegisterUnpacked) / sizeof(calibrationRegisterUnpacked[0]), i));
114+
// }
115+
const ina230_config_t device = ina230Devices[0];
116+
const uint16_t configurationRegister = (device.configurationMode << INA230_CONFIG_MODE_SHIFT) |
117+
(device.configurationShunt << INA230_CONFIG_SHU_SHIFT) |
118+
(device.configurationAvg << INA230_CONFIG_AVG_SHIFT) |
119+
(device.configurationBus << INA230_CONFIG_BUS_SHIFT);
97120

98-
uint8_t configRegisterUnpacked[] = {configurationRegister >> 8, configurationRegister & 0xFF};
99-
uint8_t maskEnRegisterUnpacked[] = {device.maskEnableRegister >> 8, device.maskEnableRegister & 0xFF};
100-
uint8_t alertRegisterUnpacked[] = {device.alertRegister >> 8, device.alertRegister & 0xFF};
101-
uint8_t calibrationRegisterUnpacked[] = {device.calibrationRegister >> 8, device.calibrationRegister & 0xFF};
121+
uint8_t configRegisterUnpacked[] = {configurationRegister >> 8, configurationRegister & 0xFF};
122+
uint8_t maskEnRegisterUnpacked[] = {device.maskEnableRegister >> 8, device.maskEnableRegister & 0xFF};
123+
uint8_t alertRegisterUnpacked[] = {device.alertRegister >> 8, device.alertRegister & 0xFF};
124+
uint8_t calibrationRegisterUnpacked[] = {device.calibrationRegister >> 8, device.calibrationRegister & 0xFF};
102125

103-
RETURN_IF_ERROR_CODE(writeINA230Register(INA230_CONFIG_REGISTER_ADDR, configRegisterUnpacked,
104-
sizeof(configRegisterUnpacked) / sizeof(configRegisterUnpacked[0]), i));
105-
RETURN_IF_ERROR_CODE(writeINA230Register(INA230_MASK_ENABLE_REGISTER_ADDR, maskEnRegisterUnpacked,
106-
sizeof(maskEnRegisterUnpacked) / sizeof(maskEnRegisterUnpacked[0]), i));
107-
RETURN_IF_ERROR_CODE(writeINA230Register(INA230_ALERT_LIMIT_REGISTER_ADDR, alertRegisterUnpacked,
108-
sizeof(alertRegisterUnpacked) / sizeof(alertRegisterUnpacked[0]), i));
109-
RETURN_IF_ERROR_CODE(
110-
writeINA230Register(INA230_CALIBRATION_REGISTER_ADDR, calibrationRegisterUnpacked,
111-
sizeof(calibrationRegisterUnpacked) / sizeof(calibrationRegisterUnpacked[0]), i));
112-
}
126+
RETURN_IF_ERROR_CODE(writeINA230Register(INA230_CONFIG_REGISTER_ADDR, configRegisterUnpacked,
127+
sizeof(configRegisterUnpacked) / sizeof(configRegisterUnpacked[0]), 0));
128+
RETURN_IF_ERROR_CODE(writeINA230Register(INA230_MASK_ENABLE_REGISTER_ADDR, maskEnRegisterUnpacked,
129+
sizeof(maskEnRegisterUnpacked) / sizeof(maskEnRegisterUnpacked[0]), 0));
130+
RETURN_IF_ERROR_CODE(writeINA230Register(INA230_ALERT_LIMIT_REGISTER_ADDR, alertRegisterUnpacked,
131+
sizeof(alertRegisterUnpacked) / sizeof(alertRegisterUnpacked[0]), 0));
132+
RETURN_IF_ERROR_CODE(
133+
writeINA230Register(INA230_CALIBRATION_REGISTER_ADDR, calibrationRegisterUnpacked,
134+
sizeof(calibrationRegisterUnpacked) / sizeof(calibrationRegisterUnpacked[0]), 0));
113135

114136
RETURN_IF_ERROR_CODE(initTca6424PinState());
115137
return OBC_ERR_CODE_SUCCESS;
@@ -155,7 +177,9 @@ static obc_error_code_t writeINA230Register(uint8_t regAddress, uint8_t* data, u
155177
return OBC_ERR_CODE_INVALID_ARG;
156178
}
157179
obc_error_code_t errCode;
158-
RETURN_IF_ERROR_CODE(i2cWriteReg(ina230Devices[device].i2cDeviceAddress, regAddress, data, size));
180+
uint8_t dataSize[1] = {0};
181+
RETURN_IF_ERROR_CODE(i2cWriteReg(INA230_I2C_ADDRESS_ONE, 0x00, dataSize, 1));
182+
gioSetBit(STATE_MGR_DEBUG_LED_GIO_PORT, STATE_MGR_DEBUG_LED_GIO_BIT, 1);
159183
return OBC_ERR_CODE_SUCCESS;
160184
}
161185
/**

obc/app/drivers/tca6424/tca6424.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "obc_errors.h"
55

66
#define TCA6424A_I2C_TRANSFER_TIMEOUT pdMS_TO_TICKS(100)
7-
#define TCA6424A_I2C_ADDRESS 0x20
7+
#define TCA6424A_I2C_ADDRESS 0x22
88

99
#define TCA6424A_INPUT_PORT_ZERO_ADDR 0x00
1010
#define TCA6424A_INPUT_PORT_ONE_ADDR 0x01

obc/examples/test_ina230_driver/main.c

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "obc_i2c_io.h"
44
#include "obc_print.h"
55
#include "obc_board_config.h"
6+
#include "tca6424.h"
67

78
#include <sci.h>
89
#include <stdio.h>
@@ -17,40 +18,26 @@ static StaticTask_t taskBuffer;
1718
static StackType_t taskStack[1024];
1819

1920
void vTaskCode(void* pvParameters) {
20-
float num = 100;
2121
obc_error_code_t errCode = 0;
22+
bool isToggled = true;
2223
while (1) {
23-
errCode = getINA230ShuntVoltage(INA230_DEVICE_ONE, &num);
24-
if (errCode != OBC_ERR_CODE_SUCCESS) {
25-
sciPrintf("Error Reading Shunt Voltage - %d\r\n", (int)errCode);
26-
} else {
27-
sciPrintf("Shunt Voltage - %f\r\n", num);
28-
}
29-
30-
errCode = getINA230Current(INA230_DEVICE_ONE, &num);
31-
if (errCode != OBC_ERR_CODE_SUCCESS) {
32-
sciPrintf("Error Reading Current - %d\r\n", (int)errCode);
33-
} else {
34-
sciPrintf("Current - %f\r\n", num);
35-
}
36-
37-
errCode = getINA230BusVoltage(INA230_DEVICE_ONE, &num);
38-
if (errCode != OBC_ERR_CODE_SUCCESS) {
39-
sciPrintf("Error Reading Bus Voltage - %d\r\n", (int)errCode);
24+
if (isToggled) {
25+
errCode = configureTCA6424APin(0x02, TCA6424A_GPIO_HIGH);
26+
sciPrintf("Toggled High\r\n");
27+
isToggled = false;
4028
} else {
41-
sciPrintf("Bus Voltage - %f\r\n", num);
29+
errCode = configureTCA6424APin(0x02, TCA6424A_GPIO_LOW);
30+
sciPrintf("Toggled Low\r\n");
31+
isToggled = true;
4232
}
43-
44-
errCode = getINA230Power(INA230_DEVICE_ONE, &num);
4533
if (errCode != OBC_ERR_CODE_SUCCESS) {
46-
sciPrintf("Error Reading Power - %d\r\n", (int)errCode);
47-
} else {
48-
sciPrintf("Power - %f\r\n", num);
34+
sciPrintf("Error Initializing - %d\r\n", (int)errCode);
4935
}
36+
sciPrintf("Success - %d\r\n", (int)errCode);
5037
gioToggleBit(STATE_MGR_DEBUG_LED_GIO_PORT, STATE_MGR_DEBUG_LED_GIO_BIT);
5138

5239
// Simple delay.
53-
vTaskDelay(pdMS_TO_TICKS(1000));
40+
vTaskDelay(pdMS_TO_TICKS(2000));
5441
}
5542
}
5643

@@ -68,12 +55,6 @@ int main(void) {
6855
initSciPrint();
6956
initI2CMutex();
7057

71-
obc_error_code_t errCode;
72-
errCode = initINA230();
73-
if (errCode != OBC_ERR_CODE_SUCCESS) {
74-
sciPrintf("Error Initializing - %d\r\n", (int)errCode);
75-
return 0;
76-
}
7758

7859
// Assume all tasks are created correctly
7960
xTaskCreateStatic(vTaskCode, "Demo", 1024, NULL, 1, taskStack, &taskBuffer);

0 commit comments

Comments
 (0)