Skip to content

Commit

Permalink
fix some stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
gtaharaedmonds committed Nov 16, 2023
1 parent 8ee0192 commit c523c52
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 91 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#include "Io_SharedAdc.h"
#include "hw_adcConversions.h"
#include "App_SharedConstants.h"

#define SINGLE_ENDED_ADC_V_SCALE (3.3f)
#define DIFFERENTIAL_ADC_V_SCALE (6.6f)

float Io_SharedAdc_ConvertRawAdcValueToVoltage(ADC_HandleTypeDef *hadc, bool is_differential, uint16_t raw_adc_value)
float hw_adcConversions_rawAdcValueToVoltage(ADC_HandleTypeDef *hadc, bool is_differential, uint16_t raw_adc_value)
{
uint16_t full_scale = MAX_12_BITS_VALUE;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
* @param raw_adc_value Raw ADC value
* @return The voltage converted from the given raw ADC value
*/
float Io_SharedAdc_ConvertRawAdcValueToVoltage(ADC_HandleTypeDef *hadc, bool is_differential, uint16_t raw_adc_value);
float hw_adcConversions_rawAdcValueToVoltage(ADC_HandleTypeDef *hadc, bool is_differential, uint16_t raw_adc_value);
20 changes: 8 additions & 12 deletions firmware/thruna/BMS/Src/Io/Io_Adc.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include <assert.h>
#include "hw_hal.h"
#include "Io_SharedAdc.h"
#include "hw_adcConversions.h"
#include "Io_Adc.h"
#include "Io_SharedMacros.h"

Expand All @@ -9,20 +9,16 @@ static float adc_voltages[NUM_ADC_CHANNELS];

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
adc_voltages[ADC1_CHANNEL_3] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_3]);
adc_voltages[ADC1_CHANNEL_7] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_7]);
adc_voltages[ADC1_CHANNEL_8] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_8]);
adc_voltages[ADC1_CHANNEL_9] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_9]);
adc_voltages[ADC1_CHANNEL_3] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_3]);
adc_voltages[ADC1_CHANNEL_7] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_7]);
adc_voltages[ADC1_CHANNEL_8] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_8]);
adc_voltages[ADC1_CHANNEL_9] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_9]);
adc_voltages[ADC1_CHANNEL_10] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_10]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_10]);
adc_voltages[ADC1_CHANNEL_11] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_11]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_11]);
adc_voltages[ADC1_CHANNEL_14] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_14]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_14]);
}

uint16_t *Io_Adc_GetRawAdcValues(void)
Expand Down
6 changes: 4 additions & 2 deletions firmware/thruna/DCM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ file(GLOB_RECURSE IO_SRCS
"${CMAKE_CURRENT_SOURCE_DIR}/Src/*.c"
)
list(APPEND IO_SRCS "${SHARED_IO_SRCS}")
list(REMOVE_ITEM IO_SRCS "${SHARED_IO_INCLUDE_DIR}/Io_SharedAdc.c")
list(REMOVE_ITEM IO_SRCS "${SHARED_IO_INCLUDE_DIR}/Io_SharedSpi.c")
set(IO_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/Inc/Io" "${SHARED_IO_INCLUDE_DIR}")

set(HW_SRCS "${SHARED_HW_SRCS}")
list(REMOVE_ITEM HW_SRCS "${SHARED_HW_INCLUDE_DIR}/hw_adcConversions.c")

file(GLOB_RECURSE TEST_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/Test/Src/*.cpp")
set(TEST_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/Test/Inc")
list(APPEND TEST_INCLUDE_DIRS "${SHARED_TEST_UTILS_INCLUDE_DIRS}")
Expand Down Expand Up @@ -79,7 +81,7 @@ if("${TARGET}" STREQUAL "deploy")
"${IOC_PATH}.md5"
)

set(SRCS ${APP_SRCS} ${IO_SRCS} ${SHARED_HW_SRCS})
set(SRCS ${APP_SRCS} ${IO_SRCS} ${HW_SRCS})
set(INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${SHARED_HW_INCLUDE_DIR})
embedded_binary(
"DCM.elf"
Expand Down
32 changes: 11 additions & 21 deletions firmware/thruna/FSM/Src/Io/Io_Adc.c
Original file line number Diff line number Diff line change
@@ -1,33 +1,23 @@
#include <assert.h>
#include "hw_hal.h"
#include "Io_SharedAdc.h"
#include "hw_adcConversions.h"
#include "Io_Adc.h"

static uint16_t raw_adc_values[NUM_ADC_CHANNELS];
static float adc_voltages[NUM_ADC_CHANNELS];

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
adc_voltages[ADC1_CHANNEL_0] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_0]);
adc_voltages[ADC1_CHANNEL_1] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_1]);
adc_voltages[ADC1_CHANNEL_2] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_2]);
adc_voltages[ADC1_CHANNEL_3] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_3]);
adc_voltages[ADC1_CHANNEL_4] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_4]);
adc_voltages[ADC1_CHANNEL_5] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_5]);
adc_voltages[ADC1_CHANNEL_6] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_6]);
adc_voltages[ADC1_CHANNEL_7] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_7]);
adc_voltages[ADC1_CHANNEL_8] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_8]);
adc_voltages[ADC1_CHANNEL_9] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_9]);
adc_voltages[ADC1_CHANNEL_0] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_0]);
adc_voltages[ADC1_CHANNEL_1] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_1]);
adc_voltages[ADC1_CHANNEL_2] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_2]);
adc_voltages[ADC1_CHANNEL_3] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_3]);
adc_voltages[ADC1_CHANNEL_4] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_4]);
adc_voltages[ADC1_CHANNEL_5] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_5]);
adc_voltages[ADC1_CHANNEL_6] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_6]);
adc_voltages[ADC1_CHANNEL_7] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_7]);
adc_voltages[ADC1_CHANNEL_8] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_8]);
adc_voltages[ADC1_CHANNEL_9] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_9]);
}

uint16_t *Io_Adc_GetRawAdcValues(void)
Expand Down
70 changes: 41 additions & 29 deletions firmware/thruna/PDM/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
set(ARM_CORE "cm4")
set(IOC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/PDM.ioc")
set(IOC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/cubemx/PDM.ioc")
set(LINKER_SCRIPT "${THIRD_PARTY_DIR}/linker/STM32F412RGTX_FLASH.ld")

file(GLOB_RECURSE APP_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/Src/App/*.c")
file(GLOB_RECURSE APP_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/src/app/*.c")
list(APPEND APP_SRCS "${SHARED_APP_SRCS}")
set(APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/Inc/App" "${SHARED_APP_INCLUDE_DIR}")
set(APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src/app" "${SHARED_APP_INCLUDE_DIR}")

file(GLOB_RECURSE IO_SRCS
"${CMAKE_CURRENT_SOURCE_DIR}/Src/Io/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/Src/*.c"
)
file(GLOB_RECURSE IO_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/src/io/*.c")
list(APPEND IO_SRCS "${SHARED_IO_SRCS}")
list(REMOVE_ITEM IO_SRCS "${SHARED_IO_INCLUDE_DIR}/Io_SharedSpi.c")
set(IO_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/Inc/Io" "${SHARED_IO_INCLUDE_DIR}")
set(IO_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src/io" "${SHARED_IO_INCLUDE_DIR}")

file(GLOB_RECURSE HW_SRCS
"${CMAKE_CURRENT_SOURCE_DIR}/src/hw/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/cubemx/Src/*.c"
)
list(APPEND IO_SRCS "${SHARED_HW_SRCS}")
set(HW_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src/hw" "${SHARED_HW_INCLUDE_DIR}")

file(GLOB_RECURSE TEST_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/Test/Src/*.cpp")
set(TEST_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/Test/Inc")
Expand All @@ -31,17 +35,17 @@ commit_info_library(

if("${TARGET}" STREQUAL "deploy")
jsoncan_library(
"PDM_can"
"PDM"
"${CMAKE_CURRENT_BINARY_DIR}"
TRUE
"PDM_can"
"PDM"
"${CMAKE_CURRENT_BINARY_DIR}"
TRUE
)
embedded_library(
PDM_can
"${CAN_SRCS}"
"${CAN_INCLUDE_DIRS}"
"${ARM_CORE}"
TRUE
PDM_can
"${CAN_SRCS}"
"${CAN_INCLUDE_DIRS}"
"${ARM_CORE}"
TRUE
)

generate_stm32cube_code(
Expand All @@ -65,21 +69,20 @@ if("${TARGET}" STREQUAL "deploy")
"stm32f4xx_hal_tim_ex.c"
"stm32f4xx_hal_tim.c"
"stm32f4xx_hal.c"
"stm32f4xx_ll_adc.c"
)

# Pass syscalls to the cube library so we can build without warnings.
set(SYSCALLS "${CMAKE_CURRENT_SOURCE_DIR}/Src/syscalls.c")
set(SYSCALLS "${CMAKE_CURRENT_SOURCE_DIR}/src/cubemx/Src/syscalls.c")
stm32f412rx_cube_library(
"PDM_stm32cube"
"${CMAKE_CURRENT_SOURCE_DIR}/Inc"
"${CMAKE_CURRENT_SOURCE_DIR}/src/cubemx/Inc"
"${STM32_HAL_SRCS}"
"${SYSCALLS}"
"${IOC_PATH}.md5"
)

set(SRCS ${APP_SRCS} ${IO_SRCS} ${SHARED_HW_SRCS})
set(INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${SHARED_HW_INCLUDE_DIR})
set(SRCS ${APP_SRCS} ${IO_SRCS} ${HW_SRCS})
set(INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${HW_INCLUDE_DIRS})
embedded_binary(
"PDM.elf"
"${SRCS}"
Expand All @@ -88,24 +91,33 @@ if("${TARGET}" STREQUAL "deploy")
"${ARM_CORE}"
)
target_link_libraries("PDM_can" "PDM_stm32cube")
target_link_libraries("PDM.elf" "PDM_stm32cube" "PDM_can" "PDM_commit_info")
target_link_libraries("PDM.elf" "PDM_can" "PDM_stm32cube" "PDM_commit_info")

elseif("${TARGET}" STREQUAL "test")
jsoncan_library(
"PDM_can"
"PDM"
"${CMAKE_CURRENT_BINARY_DIR}"
FALSE
"PDM_can"
"PDM"
"${CMAKE_CURRENT_BINARY_DIR}"
FALSE
)
add_library(PDM_can STATIC "${CAN_SRCS}")
target_include_directories(PDM_can PUBLIC "${CAN_INCLUDE_DIRS}")

set(HEADERS_TO_FAKE
"${CMAKE_CURRENT_SOURCE_DIR}/src/io/io_efuse.h"
"${CMAKE_CURRENT_SOURCE_DIR}/src/io/io_lowVoltageBattery.h"
)
create_fake_library(
"PDM_fakes"
"${HEADERS_TO_FAKE}"
)

set(SRCS ${APP_SRCS} ${TEST_SRCS})
set(INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${TEST_INCLUDE_DIRS} ${FFF_DIR})
set(INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${TEST_INCLUDE_DIRS})
compile_gtest_executable(
"PDM_test"
"${SRCS}"
"${INCLUDE_DIRS}"
)
target_link_libraries("PDM_test" "PDM_can" "shared_fakes")
target_link_libraries("PDM_test" "PDM_can" "PDM_fakes" "PDM_commit_info" "shared_fakes")
endif()
12 changes: 6 additions & 6 deletions firmware/thruna/PDM/src/app/states/app_allStates.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ void app_allStates_runOnTick100Hz(struct StateMachine *const state_machine)
{
UNUSED(state_machine);

App_CanTx_PDM_Vitals_Heartbeat_Set(true);
App_CanTx_PDM_Voltages_BatVoltage_Set(io_lowVoltageBattery_getBatVoltage());
App_CanTx_PDM_Voltages_AccVoltage_Set(io_lowVoltageBattery_getAccVoltage());
App_CanTx_PDM_Voltages_BoostVoltage_Set(io_lowVoltageBattery_getBoostVoltage());
App_CanTx_PDM_Heartbeat_Set(true);
App_CanTx_PDM_BatVoltage_Set(io_lowVoltageBattery_getBatVoltage());
App_CanTx_PDM_AccVoltage_Set(io_lowVoltageBattery_getAccVoltage());
App_CanTx_PDM_BoostVoltage_Set(io_lowVoltageBattery_getBoostVoltage());

if (App_CanRx_BMS_Vitals_Heartbeat_Get())
if (App_CanRx_BMS_Heartbeat_Get())
{
App_SharedHeartbeatMonitor_CheckIn(globals->heartbeat_monitor, BMS_HEARTBEAT_ONE_HOT);
App_CanRx_BMS_Vitals_Heartbeat_Update(false);
App_CanRx_BMS_Heartbeat_Update(false);
}
}
30 changes: 12 additions & 18 deletions firmware/thruna/PDM/src/hw/hw_adc.c
Original file line number Diff line number Diff line change
@@ -1,35 +1,29 @@
#include "hw_adc.h"
#include <assert.h>
#include "hw_hal.h"
#include "Io_SharedAdc.h"
#include "hw_adcConversions.h"

static uint16_t raw_adc_values[NUM_ADC_CHANNELS];
static float adc_voltages[NUM_ADC_CHANNELS];

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
adc_voltages[ADC1_CHANNEL_4] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_4]);
adc_voltages[ADC1_CHANNEL_5] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_5]);
adc_voltages[ADC1_CHANNEL_6] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_6]);
adc_voltages[ADC1_CHANNEL_7] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_7]);
adc_voltages[ADC1_CHANNEL_8] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_8]);
adc_voltages[ADC1_CHANNEL_9] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_9]);
adc_voltages[ADC1_CHANNEL_4] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_4]);
adc_voltages[ADC1_CHANNEL_5] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_5]);
adc_voltages[ADC1_CHANNEL_6] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_6]);
adc_voltages[ADC1_CHANNEL_7] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_7]);
adc_voltages[ADC1_CHANNEL_8] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_8]);
adc_voltages[ADC1_CHANNEL_9] = hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_9]);
adc_voltages[ADC1_CHANNEL_10] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_10]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_10]);
adc_voltages[ADC1_CHANNEL_11] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_11]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_11]);
adc_voltages[ADC1_CHANNEL_12] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_12]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_12]);
adc_voltages[ADC1_CHANNEL_14] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_14]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_14]);
adc_voltages[ADC1_CHANNEL_15] =
Io_SharedAdc_ConvertRawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_15]);
hw_adcConversions_rawAdcValueToVoltage(hadc, false, raw_adc_values[ADC1_CHANNEL_15]);
}

uint16_t *hw_adc_getRawValuesBuffer(void)
Expand Down

0 comments on commit c523c52

Please sign in to comment.