From 48c3485bfe85a39deccd5878f997829021fa1e75 Mon Sep 17 00:00:00 2001 From: Achala Ram Date: Mon, 18 Dec 2023 19:32:19 +0530 Subject: [PATCH] am243x/am64x: SDFM: Enable trip based OC detection -Enable trip based oc detection Fixes: PINDSW-5523 Signed-off-by: Achala Ram --- .../.project/project_am243x.js | 3 + .../ti-arm-clang/example.projectspec | 4 + .../r5fss0-0_freertos/ti-arm-clang/makefile | 5 + .../ti-arm-clang/example.projectspec | 4 + .../r5fss0-0_freertos/ti-arm-clang/makefile | 5 + .../cfg_pad.c | 13 + .../sdfm.c | 12 +- .../.project/project_am243x.js | 3 + .../ti-arm-clang/example.projectspec | 4 + .../r5fss0-0_freertos/ti-arm-clang/makefile | 5 + .../ti-arm-clang/example.projectspec | 4 + .../r5fss0-0_freertos/ti-arm-clang/makefile | 5 + .../sdfm.c | 14 +- .../.project/project_am243x.js | 3 + .../ti-arm-clang/example.projectspec | 4 + .../r5fss0-0_freertos/ti-arm-clang/makefile | 5 + .../ti-arm-clang/example.projectspec | 4 + .../r5fss0-0_freertos/ti-arm-clang/makefile | 5 + .../sdfm.c | 10 +- makefile.am243x | 12 +- makefile_projectspec.am243x | 12 +- source/current_sense/sdfm/driver/sdfm_drv.c | 188 +++++++++++-- .../current_sense/sdfm/firmware/icssg_sdfm.h | 18 +- .../.project/project_am64x.js | 144 ---------- source/current_sense/sdfm/firmware/sdfm.asm | 168 ++++++++++-- source/current_sense/sdfm/firmware/sdfm_bin.h | 247 +++++++++--------- .../sdfm/firmware/sdfm_pru_bin.h | 247 +++++++++--------- .../sdfm/firmware/sdfm_rtu_bin.h | 241 +++++++++-------- .../sdfm/firmware/sdfm_txpru_bin.h | 241 +++++++++-------- .../.project/project_am243x.js | 4 +- .../.project/project_am64x.js | 99 ------- .../ti-pru-cgt/example.projectspec | 10 +- .../icssg0-pru0_fw/ti-pru-cgt/makefile | 20 +- .../ti-pru-cgt/makefile_projectspec | 2 +- source/current_sense/sdfm/include/sdfm_api.h | 49 +++- source/current_sense/sdfm/include/sdfm_drv.h | 26 +- 36 files changed, 1022 insertions(+), 818 deletions(-) delete mode 100644 source/current_sense/sdfm/firmware/multi_axis_load_share/.project/project_am64x.js delete mode 100644 source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am64x.js diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/.project/project_am243x.js b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/.project/project_am243x.js index 76620b8..75a42d7 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/.project/project_am243x.js +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/.project/project_am243x.js @@ -30,6 +30,7 @@ const libdirs_freertos = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib", "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib", + "${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib" ], }; @@ -40,6 +41,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include", "${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_nine_channel_load_share_mode", + "${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include" ], }; @@ -49,6 +51,7 @@ const libs_freertos_r5f = { "drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib", "board.am243x.r5f.ti-arm-clang.${ConfigName}.lib", "motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib", + "pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib", ], }; diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index f0acaa1..cfdc493 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -37,6 +37,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_nine_channel_load_share_mode + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -53,6 +54,7 @@ -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib -i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib + -i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib -i${CG_TOOL_ROOT}/lib -m=icss_sdfm_nine_channel_load_share_mode.${ConfigName}.map --diag_suppress=10063 @@ -78,6 +80,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.release.lib -lboard.am243x.r5f.ti-arm-clang.release.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.release.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.release.lib -llibc.a -llibsysbm.a " @@ -91,6 +94,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.debug.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.debug.lib -llibc.a -llibsysbm.a " diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index 65fdf86..1ddc7f1 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -67,6 +67,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include \ -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_nine_channel_load_share_mode \ + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include \ -Igenerated \ DEFINES_common := \ @@ -109,6 +110,7 @@ LIBS_PATH_common = \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ -Wl,-i${CG_TOOL_ROOT}/lib \ LIBS_common = \ @@ -116,6 +118,7 @@ LIBS_common = \ -ldrivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lboard.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + -lpruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -llibc.a \ -llibsysbm.a \ @@ -130,6 +133,7 @@ LIBS_NAME = \ drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ board.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ libc.a \ libsysbm.a \ @@ -138,6 +142,7 @@ LIBS_PATH_NAME = \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + ${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ ${CG_TOOL_ROOT}/lib \ FILES := $(FILES_common) $(FILES_$(PROFILE)) diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec index ca04fc0..10f91d8 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -37,6 +37,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_nine_channel_load_share_mode + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -53,6 +54,7 @@ -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib -i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib + -i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib -i${CG_TOOL_ROOT}/lib -m=icss_sdfm_nine_channel_load_share_mode.${ConfigName}.map --diag_suppress=10063 @@ -78,6 +80,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.release.lib -lboard.am243x.r5f.ti-arm-clang.release.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.release.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.release.lib -llibc.a -llibsysbm.a " @@ -91,6 +94,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.debug.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.debug.lib -llibc.a -llibsysbm.a " diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile index 544e27f..a5eb2f3 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile @@ -67,6 +67,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include \ -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_nine_channel_load_share_mode \ + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include \ -Igenerated \ DEFINES_common := \ @@ -109,6 +110,7 @@ LIBS_PATH_common = \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ -Wl,-i${CG_TOOL_ROOT}/lib \ LIBS_common = \ @@ -116,6 +118,7 @@ LIBS_common = \ -ldrivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lboard.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + -lpruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -llibc.a \ -llibsysbm.a \ @@ -130,6 +133,7 @@ LIBS_NAME = \ drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ board.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ libc.a \ libsysbm.a \ @@ -138,6 +142,7 @@ LIBS_PATH_NAME = \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + ${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ ${CG_TOOL_ROOT}/lib \ FILES := $(FILES_common) $(FILES_$(PROFILE)) diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/cfg_pad.c b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/cfg_pad.c index c08a300..5ed2f68 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/cfg_pad.c +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/cfg_pad.c @@ -108,6 +108,19 @@ static Pinmux_PerCfg_t gPinMuxMainDomainCfgsdfm[] = { PIN_PRG0_PRU0_GPO19, ( PIN_MODE(3) | PIN_PULL_DISABLE ) }, + /* PWM1_TZ_OUT, + PRG0_PWM1_TZ_OUT, TZ_OUT, R3, J2C:P6 J8.76 */ + { + PIN_PRG0_PRU1_GPO19, + ( PIN_MODE(3) | PIN_PULL_DISABLE ) + }, + /* PWM2_TZ_OUT, + PRG0_PWM2_TZ_OUT, TZ_OUT, R3, J2C:P6 J6.57 */ + { + PIN_PRG0_PRU1_GPO8, + ( PIN_MODE(3) | PIN_PULL_DISABLE ) + }, + {PINMUX_END, PINMUX_END} }; diff --git a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/sdfm.c b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/sdfm.c index e6ac884..1b77023 100644 --- a/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/sdfm.c +++ b/examples/current_sense/icss_sdfm_nine_channel_load_share_mode/sdfm.c @@ -224,14 +224,15 @@ void sdfm_configure_gpio_pin(sdfm_handle h_sdfm) } /* Initialize SDFM PRU FW */ -int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm, void *pruss_cfg) +int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm, PRUICSS_Handle pruIcssHandle) { sdfm_handle hSdfm; uint8_t SDFM_CH = 0; /* Initialize SDFM instance */ hSdfm = SDFM_init(pruId, pSdfmPrms->pruInsId); - hSdfm->pruss_cfg = pruss_cfg; + hSdfm->gPruIcssHandle = pruIcssHandle; + hSdfm->pruss_cfg = (void *)(((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->cfgRegBase); if( pSdfmPrms->loadShare ) { @@ -368,10 +369,7 @@ int32_t initPruSdfm( uint32_t byteLen; /* Total number of bytes to be written */ uint8_t pruId; int32_t status; - void *pruss_cfg; - - pruss_cfg = (void *)(((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->cfgRegBase); - + /* Reset PRU */ status = PRUICSS_resetCore(pruIcssHandle, pruInstId); if (status != SystemP_SUCCESS) @@ -460,7 +458,7 @@ int32_t initPruSdfm( } /* Initialize SDFM PRU FW */ - status = init_sdfm_pru_fw(pruId, pSdfmPrms, pHSdfm, pruss_cfg); + status = init_sdfm_pru_fw(pruId, pSdfmPrms, pHSdfm, pruIcssHandle); if (status != SDFM_ERR_NERR) { return SDFM_ERR_INIT_PRU_SDFM; diff --git a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/.project/project_am243x.js b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/.project/project_am243x.js index 3987e93..7407249 100644 --- a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/.project/project_am243x.js +++ b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/.project/project_am243x.js @@ -30,6 +30,7 @@ const libdirs_freertos = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib", "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib", + "${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib", ], }; @@ -40,6 +41,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include", "${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_single_pru_mode", + "${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include" ], }; @@ -49,6 +51,7 @@ const libs_freertos_r5f = { "drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib", "board.am243x.r5f.ti-arm-clang.${ConfigName}.lib", "motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib", + "pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib", ], }; diff --git a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 14ba841..e3da0a2 100644 --- a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -37,6 +37,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_single_pru_mode + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -53,6 +54,7 @@ -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib -i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib + -i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib -i${CG_TOOL_ROOT}/lib -m=icss_sdfm_three_channel_single_pru_mode.${ConfigName}.map --diag_suppress=10063 @@ -78,6 +80,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.release.lib -lboard.am243x.r5f.ti-arm-clang.release.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.release.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.release.lib -llibc.a -llibsysbm.a " @@ -91,6 +94,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.debug.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.debug.lib -llibc.a -llibsysbm.a " diff --git a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index e8a3ade..ae13861 100644 --- a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -67,6 +67,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include \ -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_single_pru_mode \ + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include \ -Igenerated \ DEFINES_common := \ @@ -109,6 +110,7 @@ LIBS_PATH_common = \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ -Wl,-i${CG_TOOL_ROOT}/lib \ LIBS_common = \ @@ -116,6 +118,7 @@ LIBS_common = \ -ldrivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lboard.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + -lpruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -llibc.a \ -llibsysbm.a \ @@ -130,6 +133,7 @@ LIBS_NAME = \ drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ board.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ libc.a \ libsysbm.a \ @@ -138,6 +142,7 @@ LIBS_PATH_NAME = \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + ${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ ${CG_TOOL_ROOT}/lib \ FILES := $(FILES_common) $(FILES_$(PROFILE)) diff --git a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 9f299fe..c62c545 100644 --- a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -37,6 +37,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_single_pru_mode + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -53,6 +54,7 @@ -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib -i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib + -i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib -i${CG_TOOL_ROOT}/lib -m=icss_sdfm_three_channel_single_pru_mode.${ConfigName}.map --diag_suppress=10063 @@ -78,6 +80,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.release.lib -lboard.am243x.r5f.ti-arm-clang.release.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.release.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.release.lib -llibc.a -llibsysbm.a " @@ -91,6 +94,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.debug.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.debug.lib -llibc.a -llibsysbm.a " diff --git a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile index f0475f6..cec8d40 100644 --- a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile @@ -67,6 +67,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include \ -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_single_pru_mode \ + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include \ -Igenerated \ DEFINES_common := \ @@ -109,6 +110,7 @@ LIBS_PATH_common = \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ -Wl,-i${CG_TOOL_ROOT}/lib \ LIBS_common = \ @@ -116,6 +118,7 @@ LIBS_common = \ -ldrivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lboard.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + -lpruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -llibc.a \ -llibsysbm.a \ @@ -130,6 +133,7 @@ LIBS_NAME = \ drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ board.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ libc.a \ libsysbm.a \ @@ -138,6 +142,7 @@ LIBS_PATH_NAME = \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + ${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ ${CG_TOOL_ROOT}/lib \ FILES := $(FILES_common) $(FILES_$(PROFILE)) diff --git a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/sdfm.c b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/sdfm.c index e145d54..ed99b90 100644 --- a/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/sdfm.c +++ b/examples/current_sense/icss_sdfm_three_channel_single_pru_mode/sdfm.c @@ -176,14 +176,15 @@ void sdfm_configure_gpio_pin(sdfm_handle h_sdfm) } /* Initialize SDFM PRU FW */ -int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm, void *pruss_cfg) +int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm, PRUICSS_Handle pruIcssHandle) { sdfm_handle hSdfm; uint8_t SDFM_CH = 0; /* Initialize SDFM instance */ hSdfm = SDFM_init(pruId, pSdfmPrms->pruInsId); - - hSdfm->pruss_cfg = pruss_cfg; + + hSdfm->gPruIcssHandle = pruIcssHandle; + hSdfm->pruss_cfg = (void *)(((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->cfgRegBase); uint32_t i; i = SDFM_getFirmwareVersion(hSdfm); @@ -286,10 +287,7 @@ int32_t initPruSdfm( uint32_t byteLen; /* Total number of bytes to be written */ uint8_t pruId; int32_t status; - void *pruss_cfg; - - pruss_cfg = (void *)(((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->cfgRegBase); - + /* Reset PRU */ status = PRUICSS_resetCore(pruIcssHandle, pruInstId); if (status != SystemP_SUCCESS) { @@ -349,7 +347,7 @@ int32_t initPruSdfm( } /* Initialize SDFM PRU FW */ - status = init_sdfm_pru_fw(pruId, pSdfmPrms, pHSdfm, pruss_cfg); + status = init_sdfm_pru_fw(pruId, pSdfmPrms, pHSdfm, pruIcssHandle); if (status != SDFM_ERR_NERR) { return SDFM_ERR_INIT_PRU_SDFM; } diff --git a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/.project/project_am243x.js b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/.project/project_am243x.js index fef6e48..eefc1f3 100644 --- a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/.project/project_am243x.js +++ b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/.project/project_am243x.js @@ -31,6 +31,7 @@ const libdirs_freertos = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib", "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib", + "${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib", ], }; @@ -41,6 +42,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include", "${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation", + "${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include" ], }; @@ -50,6 +52,7 @@ const libs_freertos_r5f = { "drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib", "board.am243x.r5f.ti-arm-clang.${ConfigName}.lib", "motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib", + "pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib" ], }; diff --git a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 4359904..877e6aa 100644 --- a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -37,6 +37,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -53,6 +54,7 @@ -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib -i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib + -i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib -i${CG_TOOL_ROOT}/lib -m=icss_sdfm_three_channel_with_phase_compensation.${ConfigName}.map --diag_suppress=10063 @@ -78,6 +80,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.release.lib -lboard.am243x.r5f.ti-arm-clang.release.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.release.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.release.lib -llibc.a -llibsysbm.a " @@ -91,6 +94,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.debug.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.debug.lib -llibc.a -llibsysbm.a " diff --git a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index 4e65142..295671f 100644 --- a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -68,6 +68,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include \ -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation \ + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include \ -Igenerated \ DEFINES_common := \ @@ -110,6 +111,7 @@ LIBS_PATH_common = \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ -Wl,-i${CG_TOOL_ROOT}/lib \ LIBS_common = \ @@ -117,6 +119,7 @@ LIBS_common = \ -ldrivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lboard.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + -lpruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -llibc.a \ -llibsysbm.a \ @@ -131,6 +134,7 @@ LIBS_NAME = \ drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ board.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ libc.a \ libsysbm.a \ @@ -139,6 +143,7 @@ LIBS_PATH_NAME = \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + ${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ ${CG_TOOL_ROOT}/lib \ FILES := $(FILES_common) $(FILES_$(PROFILE)) diff --git a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 90348dc..aa37ae1 100644 --- a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -37,6 +37,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -53,6 +54,7 @@ -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib -i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib -i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib + -i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib -i${CG_TOOL_ROOT}/lib -m=icss_sdfm_three_channel_with_phase_compensation.${ConfigName}.map --diag_suppress=10063 @@ -78,6 +80,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.release.lib -lboard.am243x.r5f.ti-arm-clang.release.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.release.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.release.lib -llibc.a -llibsysbm.a " @@ -91,6 +94,7 @@ -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.debug.lib + -lpruicss_pwm.am243x.r5f.ti-arm-clang.debug.lib -llibc.a -llibsysbm.a " diff --git a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile index d01f230..987b32a 100644 --- a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile @@ -68,6 +68,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/include \ -I${MOTOR_CONTROL_SDK_PATH}/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation \ + -I${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/include \ -Igenerated \ DEFINES_common := \ @@ -110,6 +111,7 @@ LIBS_PATH_common = \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + -Wl,-i${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ -Wl,-i${CG_TOOL_ROOT}/lib \ LIBS_common = \ @@ -117,6 +119,7 @@ LIBS_common = \ -ldrivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lboard.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -lmotorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + -lpruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ -llibc.a \ -llibsysbm.a \ @@ -131,6 +134,7 @@ LIBS_NAME = \ drivers.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ board.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ motorcontrol_sdfm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ + pruicss_pwm.am243x.r5f.ti-arm-clang.${ConfigName}.lib \ libc.a \ libsysbm.a \ @@ -139,6 +143,7 @@ LIBS_PATH_NAME = \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/drivers/lib \ ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/board/lib \ ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/lib \ + ${MOTOR_CONTROL_SDK_PATH}/source/pruicss_pwm/lib \ ${CG_TOOL_ROOT}/lib \ FILES := $(FILES_common) $(FILES_$(PROFILE)) diff --git a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/sdfm.c b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/sdfm.c index 66304e5..6f2407a 100644 --- a/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/sdfm.c +++ b/examples/current_sense/icss_sdfm_three_channel_with_phase_compensation/sdfm.c @@ -185,12 +185,15 @@ void SDFM_measurePhaseCompensation(sdfm_handle h_sdfm, uint32_t iep_clk) } /* Initialize SDFM PRU FW */ -int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm, void *pruss_cfg) +int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm, PRUICSS_Handle pruIcssHandle) { sdfm_handle hSdfm; /* Initialize SDFM instance */ hSdfm = SDFM_init(pruId); + + hSdfm->gPruIcssHandle = pruIcssHandle; + hSdfm->pruss_cfg = (void *)(((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->cfgRegBase); uint32_t i; i = SDFM_getFirmwareVersion(hSdfm); @@ -210,8 +213,6 @@ int32_t init_sdfm_pru_fw(uint8_t pruId, SdfmPrms *pSdfmPrms, sdfm_handle *pHSdfm uint32_t sampleOutputInterfaceGlobalAddr = CPU0_BTCM_SOCVIEW(pSdfmPrms->samplesBaseAddress); hSdfm->p_sdfm_interface->sampleBufferBaseAdd = sampleOutputInterfaceGlobalAddr; hSdfm->iep_inc = 1; /* Default IEP increment 1 */ - hSdfm->pruss_cfg = pruss_cfg; - uint8_t acc_filter = 0; //SINC3 filter uint8_t ecap_divider = 0x0F; //IEP at 300MHz: SD clock = 300/15=20Mhz @@ -306,7 +307,6 @@ int32_t initPruSdfm( int32_t status; void *pruss_cfg; - pruss_cfg = (void *)(((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->cfgRegBase); /* Reset PRU */ status = PRUICSS_resetCore(pruIcssHandle, pruInstId); if (status != SystemP_SUCCESS) { @@ -372,7 +372,7 @@ int32_t initPruSdfm( } /* Initialize SDFM PRU FW */ - status = init_sdfm_pru_fw(pruId, pSdfmPrms, pHSdfm, pruss_cfg); + status = init_sdfm_pru_fw(pruId, pSdfmPrms, pHSdfm, pruIcssHandle); if (status != SDFM_ERR_NERR) { return SDFM_ERR_INIT_PRU_SDFM; } diff --git a/makefile.am243x b/makefile.am243x index e696070..f043cc2 100644 --- a/makefile.am243x +++ b/makefile.am243x @@ -277,7 +277,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_ALL = BUILD_COMBO_EXAMPLE_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-pru0_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-rtupru0_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt -BUILD_COMBO_EXAMPLE_PRIVATE_ALL += sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt +BUILD_COMBO_EXAMPLE_PRIVATE_ALL += sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-rtupru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-txpru1_fw_ti-pru-cgt @@ -423,7 +423,7 @@ examples-private: $(BUILD_COMBO_EXAMPLE_PRIVATE_ALL) sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt: $(MAKE) -C source/current_sense/sdfm/firmware/multi_axis_load_share/am243x-evm/icssg0-txpru0_fw/ti-pru-cgt -f makefile all - sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt: + sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt: $(MAKE) -C source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt -f makefile all endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt: @@ -530,7 +530,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL = BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-rtupru0_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_clean -BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean +BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-rtupru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-txpru1_fw_ti-pru-cgt_clean @@ -676,7 +676,7 @@ examples-private-clean: $(BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL) sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_clean: $(MAKE) -C source/current_sense/sdfm/firmware/multi_axis_load_share/am243x-evm/icssg0-txpru0_fw/ti-pru-cgt -f makefile clean - sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean: + sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean: $(MAKE) -C source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt -f makefile clean endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: @@ -783,7 +783,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL = BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-rtupru0_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_scrub -BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_scrub +BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-rtupru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-txpru1_fw_ti-pru-cgt_scrub @@ -929,7 +929,7 @@ examples-scrub-private: $(BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL) sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_scrub: $(MAKE) -C source/current_sense/sdfm/firmware/multi_axis_load_share/am243x-evm/icssg0-txpru0_fw/ti-pru-cgt -f makefile scrub - sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_scrub: + sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_scrub: $(MAKE) -C source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt -f makefile scrub endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub: diff --git a/makefile_projectspec.am243x b/makefile_projectspec.am243x index 37d129a..8c7c408 100644 --- a/makefile_projectspec.am243x +++ b/makefile_projectspec.am243x @@ -51,7 +51,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL = BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-rtupru0_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_build -BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_build +BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-rtupru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-txpru1_fw_ti-pru-cgt_build @@ -197,7 +197,7 @@ all-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL) sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_build: $(MAKE) -C source/current_sense/sdfm/firmware/multi_axis_load_share/am243x-evm/icssg0-txpru0_fw/ti-pru-cgt -f makefile_projectspec all - sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_build: + sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_build: $(MAKE) -C source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt -f makefile_projectspec all endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build: @@ -305,7 +305,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL = BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-rtupru0_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_clean -BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean +BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-rtupru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-txpru1_fw_ti-pru-cgt_clean @@ -451,7 +451,7 @@ clean-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL) sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_clean: $(MAKE) -C source/current_sense/sdfm/firmware/multi_axis_load_share/am243x-evm/icssg0-txpru0_fw/ti-pru-cgt -f makefile_projectspec clean - sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean: + sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_clean: $(MAKE) -C source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt -f makefile_projectspec clean endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: @@ -559,7 +559,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL = BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-rtupru0_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_export -BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_export +BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-rtupru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-txpru1_fw_ti-pru-cgt_export @@ -705,7 +705,7 @@ export-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL) sdfm_firmware_multi_axis_load_share_am243x-evm_icssg0-txpru0_fw_ti-pru-cgt_export: $(MAKE) -C source/current_sense/sdfm/firmware/multi_axis_load_share/am243x-evm/icssg0-txpru0_fw/ti-pru-cgt -f makefile_projectspec export - sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_export: + sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt_export: $(MAKE) -C source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt -f makefile_projectspec export endat_peripheral_interface_multi_ch_load_share_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export: diff --git a/source/current_sense/sdfm/driver/sdfm_drv.c b/source/current_sense/sdfm/driver/sdfm_drv.c index c20c7ba..c2204cc 100644 --- a/source/current_sense/sdfm/driver/sdfm_drv.c +++ b/source/current_sense/sdfm/driver/sdfm_drv.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -43,8 +44,8 @@ /* Internal structure for managing each PRU SD */ SDFM g_sdfm[NUM_PRU] = { - {PRU_ID_0,0,0,0,0, NULL}, - {PRU_ID_1,0,0,0,0, NULL}, + {NULL,PRU_ID_0,0,0,0,0, NULL}, + {NULL,PRU_ID_1,0,0,0,0, NULL}, }; /* Initialize SDFM instance */ @@ -183,7 +184,7 @@ void SDFM_disableDoubleSampling(sdfm_handle h_sdfm) void SDFM_setEnableChannel(sdfm_handle h_sdfm, uint8_t channel_number) { uint32_t temp; - temp = 1<< channel_number; + temp = 1 << channel_number; if(temp & SDFM_CH_MASK_FOR_CH0_CH3_CH6) { h_sdfm->p_sdfm_interface->sdfm_ch_ctrl.sdfm_ch_id |= (channel_number << SDFM_CFG_BF_SD_CH0_ID_SHIFT); @@ -281,28 +282,103 @@ void SDFM_configFastDetect(sdfm_handle h_sdfm, uint8_t ch, uint8_t *fdParms) } -/*return status of Trip status bit*/ -uint32_t SDFM_getPwmTripStatus(sdfm_handle h_sdfm, uint8_t pwmIns) +/*return status of PWM trip vector status bit*/ +int32_t SDFM_getFastDetectErrorStatus(sdfm_handle h_sdfm, uint8_t chNum) { - void *pruss_cfg = h_sdfm->pruss_cfg; - uint32_t regval; - regval = HW_RD_REG32((uint8_t *)pruss_cfg + CSL_ICSSCFG_PWM0 + pwmIns * 4); - regval = regval & CSL_ICSSCFG_PWM0_PWM0_TRIP_S_MASK; - return regval>>CSL_ICSSCFG_PWM0_PWM0_TRIP_S_SHIFT; + uint8_t pwmSet; + int32_t retVal = SystemP_SUCCESS; + PRUICSS_Handle pruIcssHandle = h_sdfm->gPruIcssHandle; + if((chNum >= SDFM_CHANNEL0) && (chNum < SDFM_CHANNEL3)) + { + pwmSet = 0; + } + else if (chNum > SDFM_CHANNEL2 && chNum < SDFM_CHANNEL6) + { + pwmSet = 1; + } + else if (chNum > SDFM_CHANNEL5 && chNum <= SDFM_CHANNEL8) + { + pwmSet = 2; + } + else + { + retVal = SystemP_FAILURE; + } + + if(retVal == SystemP_FAILURE) + { + return retVal; + } + + /*PWM trip vector */ + retVal = PRUICSS_PWM_getPwmTripTriggerCauseVector(pruIcssHandle, pwmSet); + if(retVal == SystemP_FAILURE) + { + return retVal; + } + else + { + + retVal = retVal >> 2; + uint32_t temp; + temp = 1 << chNum; + if(temp & SDFM_CH_MASK_FOR_CH0_CH3_CH6) + { + return ((retVal) & (1 << SDFM_CHANNEL0)) ? 1 : 0; + } + else if(temp & SDFM_CH_MASK_FOR_CH1_CH4_CH7) + { + return ((retVal) & (1 << SDFM_CHANNEL1))? 1 : 0; + } + else + { + return ((retVal) & (1 << SDFM_CHANNEL2)) ? 1 : 0; + } + + } + } /*Clear Trip status bit*/ -void SDFM_clearPwmTripStatus(sdfm_handle h_sdfm, uint8_t pwmIns) +int32_t SDFM_clearPwmTripStatus(sdfm_handle h_sdfm, uint8_t chNum) { - void *pruss_cfg = h_sdfm->pruss_cfg; - uint32_t regval; - regval = HW_RD_REG32((uint8_t *)pruss_cfg + CSL_ICSSCFG_PWM0 + pwmIns * 4); - regval = regval | CSL_ICSSCFG_PWM0_PWM0_TRIP_RESET_MASK; - HW_WR_REG32((uint8_t *)pruss_cfg + CSL_ICSSCFG_PWM0 + pwmIns * 4, regval); - regval = HW_RD_REG32((uint8_t *)pruss_cfg + CSL_ICSSCFG_PWM0 + pwmIns * 4); - regval = regval & (~ CSL_ICSSCFG_PWM0_PWM0_TRIP_RESET_MASK); - HW_WR_REG32((uint8_t *)pruss_cfg + CSL_ICSSCFG_PWM0 + pwmIns * 4, regval); + uint8_t pwmSet; + int32_t retVal = SystemP_SUCCESS; + PRUICSS_Handle pruIcssHandle = h_sdfm->gPruIcssHandle; + + if((chNum >= SDFM_CHANNEL0) && (chNum < SDFM_CHANNEL3)) + { + pwmSet = 0; + } + else if (chNum > SDFM_CHANNEL2 && chNum < SDFM_CHANNEL6) + { + pwmSet = 1; + } + else if (chNum > SDFM_CHANNEL5 && chNum <= SDFM_CHANNEL8) + { + pwmSet = 2; + } + else + { + retVal = SystemP_FAILURE; + } + + if(retVal == SystemP_FAILURE) + { + return retVal; + } + /*clear trip status*/ + retVal = PRUICSS_PWM_generatePwmTripReset(pruIcssHandle, pwmSet); + if(retVal == SystemP_FAILURE) + { + return retVal; + } + + /*clear trip reset status*/ + retVal = PRUICSS_PWM_clearPwmTripResetStatus(pruIcssHandle, pwmSet); + + return retVal; } /*Enable Load share mode*/ void SDFM_enableLoadShareMode(sdfm_handle h_sdfm, uint8_t sliceId) @@ -359,6 +435,80 @@ float SDFM_measureClockPhaseDelay(sdfm_handle h_sdfm, uint16_t clkEdg) float phaseDelay = ((float)h_sdfm->p_sdfm_interface->sdfm_ch_ctrl.clock_phase_delay * 1000000000)/h_sdfm->pru_core_clk; return phaseDelay; } +uint8_t SDFM_getHighThresholdStatus(sdfm_handle h_sdfm, uint8_t chNum) +{ + uint32_t temp; + temp = 1 << chNum; + if(temp & SDFM_CH_MASK_FOR_CH0_CH3_CH6) + { + return h_sdfm->p_sdfm_interface->sdfm_cfg_ptr[0].sdfm_threshold_parms.highThStatus; + } + else if(temp & SDFM_CH_MASK_FOR_CH1_CH4_CH7) + { + return h_sdfm->p_sdfm_interface->sdfm_cfg_ptr[1].sdfm_threshold_parms.highThStatus; + } + else + { + return h_sdfm->p_sdfm_interface->sdfm_cfg_ptr[2].sdfm_threshold_parms.highThStatus; + } + +} +uint8_t SDFM_getLowThresholdStatus(sdfm_handle h_sdfm, uint8_t chNum) +{ + uint32_t temp; + temp = 1 << chNum; + if(temp & SDFM_CH_MASK_FOR_CH0_CH3_CH6) + { + return h_sdfm->p_sdfm_interface->sdfm_cfg_ptr[0].sdfm_threshold_parms.lowThStatus; + } + else if(temp & SDFM_CH_MASK_FOR_CH1_CH4_CH7) + { + return h_sdfm->p_sdfm_interface->sdfm_cfg_ptr[1].sdfm_threshold_parms.lowThStatus; + } + else + { + return h_sdfm->p_sdfm_interface->sdfm_cfg_ptr[2].sdfm_threshold_parms.lowThStatus; + } +} + +int32_t SDFM_clearOverCurrentError(sdfm_handle h_sdfm, uint8_t chNum) +{ + uint8_t pwmSet; + int32_t retVal = SystemP_SUCCESS; + PRUICSS_Handle pruIcssHandle = h_sdfm->gPruIcssHandle; + if((chNum >= SDFM_CHANNEL0) && (chNum < SDFM_CHANNEL3)) + { + pwmSet = 0; + } + else if (chNum > SDFM_CHANNEL2 && chNum < SDFM_CHANNEL6) + { + pwmSet = 1; + } + else if (chNum > SDFM_CHANNEL5 && chNum <= SDFM_CHANNEL8) + { + pwmSet = 2; + } + else + { + retVal = SystemP_FAILURE; + } + + if(retVal == SystemP_FAILURE) + { + return retVal; + } + + /*Clear over current Error PWM trip*/ + retVal = PRUICSS_PWM_clearPwmOverCurrentErrorTrip(pruIcssHandle, pwmSet); + if(retVal == SystemP_FAILURE) + { + return retVal; + } + + /*Clear PWM trip*/ + retVal = SDFM_clearPwmTripStatus(h_sdfm, chNum); + return retVal; +} /* SDFM global enable */ void SDFM_enable(sdfm_handle h_sdfm) { diff --git a/source/current_sense/sdfm/firmware/icssg_sdfm.h b/source/current_sense/sdfm/firmware/icssg_sdfm.h index 669beea..389a802 100644 --- a/source/current_sense/sdfm/firmware/icssg_sdfm.h +++ b/source/current_sense/sdfm/firmware/icssg_sdfm.h @@ -130,8 +130,10 @@ #define SDFM_CFG_CH0_FILTER_TYPE_OFFSET ( 0x1D ) #define SDFM_CFG_CH0_OSR_OFFSET ( 0x1E ) -#define SDFM_CFG_OC_HIGH_THR_CH0_OFFSET ( 0x20 ) -#define SDFM_CFG_OC_LOW_THR_CH0_OFFSET ( 0x24 ) +#define SDFM_CFG_OC_HIGH_THR_CH0_OFFSET ( 0x20 ) +#define SDFM_CFG_OC_LOW_THR_CH0_OFFSET ( 0x24 ) +#define SDFM_CFG_OC_HIGH_THR_STATUS_CH0_OFFSET ( 0x28 ) +#define SDFM_CFG_OC_LOW_THR_STATUS_CH0_OFFSET ( 0x29 ) #define SDFM_CFG_CH0_FD_WD_REG_OFFSET ( 0x2C) #define SDFM_CFG_CH0_FD_ZERO_MAX_REG_OFFSET ( 0x2D) @@ -155,8 +157,10 @@ #define SDFM_CFG_CH1_FILTER_TYPE_OFFSET ( 0x61 ) #define SDFM_CFG_CH1_OSR_OFFSET ( 0x62 ) -#define SDFM_CFG_OC_HIGH_THR_CH1_OFFSET ( 0x64 ) -#define SDFM_CFG_OC_LOW_THR_CH1_OFFSET ( 0x68 ) +#define SDFM_CFG_OC_HIGH_THR_CH1_OFFSET ( 0x64 ) +#define SDFM_CFG_OC_LOW_THR_CH1_OFFSET ( 0x68 ) +#define SDFM_CFG_OC_HIGH_THR_STATUS_CH1_OFFSET ( 0x6C ) +#define SDFM_CFG_OC_LOW_THR_STATUS_CH1_OFFSET ( 0x6D ) #define SDFM_CFG_CH1_FD_WD_REG_OFFSET ( 0x70 ) #define SDFM_CFG_CH1_FD_ZERO_MAX_REG_OFFSET ( 0x71 ) @@ -181,8 +185,10 @@ #define SDFM_CFG_CH2_FILTER_TYPE_OFFSET ( 0xA5 ) #define SDFM_CFG_CH2_OSR_OFFSET ( 0xA6 ) -#define SDFM_CFG_OC_HIGH_THR_CH2_OFFSET ( 0xA8 ) -#define SDFM_CFG_OC_LOW_THR_CH2_OFFSET ( 0xAC ) +#define SDFM_CFG_OC_HIGH_THR_CH2_OFFSET ( 0xA8 ) +#define SDFM_CFG_OC_LOW_THR_CH2_OFFSET ( 0xAC ) +#define SDFM_CFG_OC_HIGH_THR_STATUS_CH2_OFFSET ( 0xB0 ) +#define SDFM_CFG_OC_LOW_THR_STATUS_CH2_OFFSET ( 0xB1 ) #define SDFM_CFG_CH2_FD_WD_REG_OFFSET ( 0xB4 ) #define SDFM_CFG_CH2_FD_ZERO_MAX_REG_OFFSET ( 0xB5 ) diff --git a/source/current_sense/sdfm/firmware/multi_axis_load_share/.project/project_am64x.js b/source/current_sense/sdfm/firmware/multi_axis_load_share/.project/project_am64x.js deleted file mode 100644 index 36943ca..0000000 --- a/source/current_sense/sdfm/firmware/multi_axis_load_share/.project/project_am64x.js +++ /dev/null @@ -1,144 +0,0 @@ -let path = require('path'); - -let device = "am64x"; - -const files = { - common: [ - "sdfm.asm", - "icssg_pru.cmd", - ], -}; - -/* Relative to where the makefile will be generated - * Typically at /// - */ -const filedirs = { - common: [ - "..", /* core_os_combo base */ - "../..", /* Example base */ - "../../../..", - ], -}; - -const includes = { - common: [ - "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware", - ], -}; - - -const defines_rtu = { - common: [ - "SDFM_RTU_CORE", - "SDFM_LOAD_SHARE_MODE", - - ], - -}; -const defines_pru = { - common: [ - - "SDFM_PRU_CORE", - "SDFM_LOAD_SHARE_MODE", - - ], - -}; -const defines_txpru = { - common: [ - "SDFM_TXPRU_CORE", - "SDFM_LOAD_SHARE_MODE", - ], - -}; - -const readmeDoxygenPageTag = "SDFM_DESIGN"; - -const cflags = { - common: [ - "-v4", - "-o2", - "--display_error_number", - "--hardware_mac=on", - ], -}; - -const lflags = { - common: [ - "--warn_sections", - "--entry_point=SDFM_ENTRY", - "--zero_init=off", - "--disable_auto_rts", - "--define=SDFM_LOAD_SHARE_MODE=1", - ], -}; - - -const buildOptionCombos = [ - { device: device, cpu: "icssg0-pru0", cgt: "ti-pru-cgt", board: "am64x-evm", os: "fw"}, - { device: device, cpu: "icssg0-rtupru0", cgt: "ti-pru-cgt", board: "am64x-evm", os: "fw"}, - { device: device, cpu: "icssg0-txpru0", cgt: "ti-pru-cgt", board: "am64x-evm", os: "fw"}, -]; - -let postBuildStepsPru0 = [ - "$(CG_TOOL_ROOT)/bin/hexpru.exe --diag_wrap=off --array --array:name_prefix=pru_SDFM_PRU0_image -o sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-pru0_fw_ti-pru-cgt.h sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-pru0_fw_ti-pru-cgt.out; move sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-pru0_fw_ti-pru-cgt.h ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware/sdfm_pru_bin.h;" -]; -let postBuildStepsRtupru0 = [ - "$(CG_TOOL_ROOT)/bin/hexpru.exe --diag_wrap=off --array --array:name_prefix=pru_SDFM_RTU0_image -o sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-rtupru0_fw_ti-pru-cgt.h sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-rtupru0_fw_ti-pru-cgt.out; move sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-rtupru0_fw_ti-pru-cgt.h ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware/sdfm_rtu_bin.h;" - -]; -let postBuildStepsTxpru0 = [ - "$(CG_TOOL_ROOT)/bin/hexpru.exe --diag_wrap=off --array --array:name_prefix=pru_SDFM_TXPRU0_image -o sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-txpru0_fw_ti-pru-cgt.h sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-txpru0_fw_ti-pru-cgt.out; move sdfm_firmware_multi_axis_load_share_am64x-evm_icssg0-txpru0_fw_ti-pru-cgt.h ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware/sdfm_txpru_bin.h;" - -]; - -function getComponentProperty() { - let property = {}; - - property.dirPath = path.resolve(__dirname, ".."); - property.type = "executable"; - property.makefile = "pru"; - property.name = "sdfm_firmware_multi_axis_load_share"; - property.isInternal = false; - property.description = "ICSS SDFM" - property.buildOptionCombos = buildOptionCombos; - property.pru_main_file = "main"; - property.pru_linker_file = "linker"; - property.isSkipTopLevelBuild = true; - property.skipUpdatingTirex = true; - return property; -} - -function getComponentBuildProperty(buildOption) { - let build_property = {}; - build_property.files = files; - build_property.filedirs = filedirs; - build_property.includes = includes; - if(buildOption.cpu.match("icssg0-pru0")) - { - build_property.postBuildSteps = postBuildStepsPru0; - build_property.defines = defines_pru; - } - if(buildOption.cpu.match("icssg0-rtupru0")) - { - build_property.postBuildSteps = postBuildStepsRtupru0; - build_property.defines = defines_rtu; - } - if(buildOption.cpu.match("icssg0-txpru0")) - { - build_property.postBuildSteps = postBuildStepsTxpru0; - build_property.defines = defines_txpru; - } - - build_property.cflags = cflags; - build_property.lflags = lflags; - build_property.readmeDoxygenPageTag = readmeDoxygenPageTag; - build_property.projecspecFileAction = "copy"; - build_property.skipMakefileCcsBootimageGen = true; - return build_property; -} - -module.exports = { - getComponentProperty, - getComponentBuildProperty, -}; \ No newline at end of file diff --git a/source/current_sense/sdfm/firmware/sdfm.asm b/source/current_sense/sdfm/firmware/sdfm.asm index d903e16..5d4271d 100644 --- a/source/current_sense/sdfm/firmware/sdfm.asm +++ b/source/current_sense/sdfm/firmware/sdfm.asm @@ -124,12 +124,12 @@ SDFM_ENTRY: PHASE_DELAY_CAL: ;check phase delay measurment active - LBCO &TEMP_REG0.b0, CT_PRU_ICSSG_LOC_DMEM, SDFM_CFG_SD_EN_PHASE_DELAY, 1 + LBBO &TEMP_REG0.b0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_SD_EN_PHASE_DELAY, 1 QBBC SKIP_PHASE_DELAY_CAL, TEMP_REG0.b0, 0 JAL RET_ADDR_REG, SDFM_CLOCK_PHASE_COMPENSATION ;acknowledge CLR TEMP_REG0, TEMP_REG0, 0 - SBCO &TEMP_REG0.b0, CT_PRU_ICSSG_LOC_DMEM, SDFM_CFG_SD_EN_PHASE_DELAY, 1 + SBBO &TEMP_REG0.b0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_SD_EN_PHASE_DELAY, 1 SKIP_PHASE_DELAY_CAL: @@ -287,6 +287,43 @@ TS0_OC_LOOP: ;Comparator for Ch0 MOV TEMP_REG2, CN5 + + ;Trip Zone based over current detection + ;Load the positive threshold value for current channel + LBBO &OC_HIGH_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_CH0_OFFSET, SDFM_CFG_OC_HIGH_THR_SZ + ;Load the positive threshold value for current channel + LBBO &OC_LOW_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_CH0_OFFSET, SDFM_CFG_OC_LOW_THR_SZ + ;PWM0 register offset + LDI TEMP_REG1, ICSSG_CFG_PWMx + LBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;Check if the sample value is greater than the high threshold + QBGE OVER_CURRENT_HIGH_THRESHOLD_CH0, OC_HIGH_THR, TEMP_REG2 + ;Unset in DMEM + LDI TEMP_REG0.b0, 0 + SBBO &TEMP_REG0.b0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_STATUS_CH0_OFFSET, 1 + ;Check if the sample value is lower than the low threshold + QBLE OVER_CURRENT_LOW_THRESHOLD_CH0, OC_LOW_THR, TEMP_REG2 + LDI TEMP_REG0.b0, 0 + SBBO &TEMP_REG0.b0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_STATUS_CH0_OFFSET, 1 + JMP END_OVER_CURRENT_DETECTION_CH0 +OVER_CURRENT_HIGH_THRESHOLD_CH0: + ;Generate PWM trip + SET TEMP_REG0.b2.t3 + SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;Store in DMEM + LDI TEMP_REG0.b0, 1 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_STATUS_CH0_OFFSET, 1 + JMP END_OVER_CURRENT_DETECTION_CH0 +OVER_CURRENT_LOW_THRESHOLD_CH0: + ;Generate PWM trip + SET TEMP_REG0.b2.t3 + SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;set bit store in DMEM + LDI TEMP_REG0.b0, 1 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_STATUS_CH0_OFFSET, 1 +END_OVER_CURRENT_DETECTION_CH0: + + .if $isdefed("DEBUG_CODE") ;For the current channel, compare against the High threshold, Low threshold and ZC thresholds (if enabled) ;Load the positive threshold value for current channel LBBO &OC_HIGH_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_CH0_OFFSET, SDFM_CFG_OC_HIGH_THR_SZ @@ -322,8 +359,10 @@ BELOW_THRESHOLD_START_CH0: LBBO &GPIO_TGL_ADDR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_LOW_THR_CH0_SET_VAL_ADDR_OFFSET, SDFM_CFG_GPIO_CLR_ADDR_SZ LBBO &TEMP_REG3, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_LOW_THR_CH0_WRITE_VAL_OFFSET, SDFM_CFG_GPIO_VALUE_SZ SBBO &TEMP_REG3, GPIO_TGL_ADDR, 0, SDFM_CFG_GPIO_VALUE_SZ -COMP_CH0_END: + .endif +COMP_CH0_END: + .if $isdefed("DEBUG_CODE") ;GPIO LOW LBBO &GPIO_TGL_ADDR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_HIGH_THR_CH0_CLR_VAL_ADDR_OFFSET, SDFM_CFG_GPIO_CLR_ADDR_SZ @@ -365,7 +404,45 @@ COMP_CH0_END: .endif ;Comparator for Ch1 - MOV TEMP_REG2, CN5 + MOV TEMP_REG2, CN5 + + ;Trip Zone based over current detection + ;Load the positive threshold value for current channel + LBBO &OC_HIGH_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_CH1_OFFSET, SDFM_CFG_OC_HIGH_THR_SZ + ;Load the positive threshold value for current channel + LBBO &OC_LOW_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_CH1_OFFSET, SDFM_CFG_OC_LOW_THR_SZ + ;PWM0 register offset + LDI TEMP_REG1, ICSSG_CFG_PWMx + LBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;Check if the sample value is greater than the high threshold + QBGE OVER_CURRENT_HIGH_THRESHOLD_CH1, OC_HIGH_THR, TEMP_REG2 + ;Unset in DMEM + LDI TEMP_REG0.b0, 0 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_STATUS_CH1_OFFSET, 1 + ;Check if the sample value is lower than the low threshold + QBLE OVER_CURRENT_LOW_THRESHOLD_CH1, OC_LOW_THR, TEMP_REG2 + LDI TEMP_REG0.b0, 0 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_STATUS_CH1_OFFSET, 1 + JMP END_OVER_CURRENT_DETECTION_CH1 +OVER_CURRENT_HIGH_THRESHOLD_CH1: + ;Generate PWM trip + SET TEMP_REG0.b2.t3 + SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;Store DMEM + LDI TEMP_REG0.b0, 1 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_STATUS_CH1_OFFSET, 1 + JMP END_OVER_CURRENT_DETECTION_CH1 +OVER_CURRENT_LOW_THRESHOLD_CH1: + ;Generate PWM trip + SET TEMP_REG0.b2.t3 + SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;set bit store in DMEM + LDI TEMP_REG0.b0, 1 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_STATUS_CH1_OFFSET, 1 +END_OVER_CURRENT_DETECTION_CH1: + + + .if $isdefed("DEBUG_CODE") ;For the current channel, compare against the High threshold, Low threshold and ZC thresholds (if enabled) ;Load the positive threshold value for current channel LBBO &OC_HIGH_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_CH1_OFFSET, SDFM_CFG_OC_HIGH_THR_SZ @@ -402,6 +479,8 @@ BELOW_THRESHOLD_START_CH1: LBBO &GPIO_TGL_ADDR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_LOW_THR_CH1_SET_VAL_ADDR_OFFSET, SDFM_CFG_GPIO_SET_ADDR_SZ LBBO &TEMP_REG3, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_LOW_THR_CH1_WRITE_VAL_OFFSET, SDFM_CFG_GPIO_VALUE_SZ SBBO &TEMP_REG3, GPIO_TGL_ADDR, 0, SDFM_CFG_GPIO_VALUE_SZ + .endif + COMP_CH1_END: .if $isdefed("DEBUG_CODE") @@ -444,7 +523,44 @@ COMP_CH1_END: .endif ;Comparator for Ch2 - MOV TEMP_REG2, CN5 + MOV TEMP_REG2, CN5 + + ;Trip Zone based over current detection + ;Load the positive threshold value for current channel + LBBO &OC_HIGH_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_CH2_OFFSET, SDFM_CFG_OC_HIGH_THR_SZ + ;Load the positive threshold value for current channel + LBBO &OC_LOW_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_CH2_OFFSET, SDFM_CFG_OC_LOW_THR_SZ + ;PWM0 register offset + LDI TEMP_REG1, ICSSG_CFG_PWMx + LBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;Check if the sample value is greater than the high threshold + QBGE OVER_CURRENT_HIGH_THRESHOLD_CH2, OC_HIGH_THR, TEMP_REG2 + ;Unset in DMEM + LDI TEMP_REG0.b0, 0 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_STATUS_CH2_OFFSET, 1 + ;Check if the sample value is lower than the low threshold + QBLE OVER_CURRENT_LOW_THRESHOLD_CH2, OC_LOW_THR, TEMP_REG2 + LDI TEMP_REG0.b0, 0 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_STATUS_CH2_OFFSET, 1 + JMP END_OVER_CURRENT_DETECTION_CH2 +OVER_CURRENT_HIGH_THRESHOLD_CH2: + ;Generate PWM trip + SET TEMP_REG0.b2.t3 + SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;Store in DMEM + LDI TEMP_REG0.b0, 1 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_STATUS_CH2_OFFSET, 1 + JMP END_OVER_CURRENT_DETECTION_CH2 +OVER_CURRENT_LOW_THRESHOLD_CH2: + ;Generate PWM trip + SET TEMP_REG0.b2.t3 + SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 + ;set bit store in DMEM + LDI TEMP_REG0.b0, 1 + SBBO &TEMP_REG0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_LOW_THR_STATUS_CH2_OFFSET, 1 +END_OVER_CURRENT_DETECTION_CH2: + + .if $isdefed("DEBUG_CODE") ;For the current channel, compare against the High threshold, Low threshold and ZC thresholds (if enabled) ;Load the positive threshold value for current channel LBBO &OC_HIGH_THR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_OC_HIGH_THR_CH2_OFFSET, SDFM_CFG_OC_HIGH_THR_SZ @@ -481,6 +597,7 @@ BELOW_THRESHOLD_START_CH2: LBBO &GPIO_TGL_ADDR, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_LOW_THR_CH2_SET_VAL_ADDR_OFFSET, SDFM_CFG_GPIO_CLR_ADDR_SZ LBBO &TEMP_REG3, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_LOW_THR_CH2_WRITE_VAL_OFFSET, SDFM_CFG_GPIO_VALUE_SZ SBBO &TEMP_REG3, GPIO_TGL_ADDR, 0, SDFM_CFG_GPIO_CLR_ADDR_SZ + .endif COMP_CH2_END: @@ -963,20 +1080,37 @@ reset_sd_ch_hw_loop_end: ; ;PWM trip zone block configuration -FN_CONFIG_PWM_REG: - ;set trip mask - ;PWM0 register offset +FN_CONFIG_PWM_REG: + ;PWMx register offset LDI TEMP_REG1, ICSSG_CFG_PWMx LBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 - QBNE SDFM_MASK_SKIP1_CH0, SD_CH0_ID, 0 - OR TEMP_REG0.b1, TEMP_REG0.b1, 1 -SDFM_MASK_SKIP1_CH0 - QBNE SDFM_MASK_SKIP1_CH1, SD_CH1_ID, 1 - OR TEMP_REG0.b1, TEMP_REG0.b1, 2 -SDFM_MASK_SKIP1_CH1 - QBNE SDFM_MASK_SKIP1_CH2, SD_CH2_ID, 2 + ;set trip mask for over current error + LBBO &COMPARATOR_EN, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_SD_EN_COMP_OFFSET, SDFM_CFG_EN_COMP_SZ + QBBC SKIP_OVER_CURRENT_MASK, COMPARATOR_EN, SDFM_CFG_EN_COMP_BIT + SET TEMP_REG0.b1, TEMP_REG0.b1, 1 +SKIP_OVER_CURRENT_MASK: + ;set trip mask for fast detect block error + ;Load fast detect enable bits + LBBO &TEMP_REG2.w0, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_SD_CH_ID_OFFSET, SDFM_CFG_SD_CH_ID_SZ + LBBO &TEMP_REG3, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_SD_EN_FD_OFFSET, 1 + QBBC END_MASK_CONFIG, TEMP_REG3, 0 + AND TEMP_REG1.b0, TEMP_REG2.b0, 0xF + QBNE SDFM_MASK_SKIP1_CH0, TEMP_REG1.b0, SD_CH0_ID OR TEMP_REG0.b1, TEMP_REG0.b1, 4 -SDFM_MASK_SKIP1_CH2: +SDFM_MASK_SKIP1_CH0 + LSR TEMP_REG2, TEMP_REG2, 4 + AND TEMP_REG1.b0, TEMP_REG2.b0, 0xF + QBNE SDFM_MASK_SKIP1_CH1, TEMP_REG1.b0, SD_CH1_ID + OR TEMP_REG0.b1, TEMP_REG0.b1, 8 +SDFM_MASK_SKIP1_CH1 + LSR TEMP_REG2, TEMP_REG2, 4 + AND TEMP_REG1.b0, TEMP_REG2.b0, 0xF + QBNE SDFM_MASK_SKIP1_CH2, TEMP_REG1.b0, SD_CH2_ID + OR TEMP_REG0.b1, TEMP_REG0.b1, 16 +SDFM_MASK_SKIP1_CH2: + +END_MASK_CONFIG: + LDI TEMP_REG1, ICSSG_CFG_PWMx SBCO &TEMP_REG0, CT_PRU_ICSSG_CFG, TEMP_REG1, 4 JMP RET_ADDR_REG @@ -1021,7 +1155,7 @@ END_PHASE_DELAY: LSR TEMP_REG0, TEMP_REG1.w0, 3 SUB TEMP_REG0, TEMP_REG2,TEMP_REG0 QBLT SDFM_CLOCK_PHASE_COMPENSATION, TEMP_REG0, 1 - SBCO &TEMP_REG1, CT_PRU_ICSSG_LOC_DMEM, SDFM_CFG_SD_CLOCK_PHASE_DELAY, 4 + SBBO &TEMP_REG1, SDFM_CFG_BASE_PTR_REG, SDFM_CFG_SD_CLOCK_PHASE_DELAY, 4 JMP RET_ADDR_REG ; diff --git a/source/current_sense/sdfm/firmware/sdfm_bin.h b/source/current_sense/sdfm/firmware/sdfm_bin.h index 5c51b6e..b6c70c3 100644 --- a/source/current_sense/sdfm/firmware/sdfm_bin.h +++ b/source/current_sense/sdfm/firmware/sdfm_bin.h @@ -15,11 +15,11 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x24000001, 0x81200b01, 0x10000000, -0x91171801, +0xf1171701, 0xc9000104, -0x2301c999, +0x2301d299, 0x1d00e1e1, -0x81171801, +0xe1171701, 0xf1001701, 0xcf0001ff, 0x1f00e1e1, @@ -27,9 +27,9 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x91340401, 0x1f01e1e1, 0x81340401, -0x23011c99, +0x23011999, 0x32800000, -0x23012399, +0x23012099, 0x240c00c2, 0x24000082, 0xf1021701, @@ -53,13 +53,13 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x0b04e1e1, 0x110fe1e2, 0x10020256, -0x23013d99, -0x23025e99, -0x23014199, -0x23017199, -0x2301b699, +0x23013a99, +0x23026799, +0x23013e99, +0x23016e99, +0x2301b399, 0x1f19fefe, -0x2301bf99, +0x2301bc99, 0x240fffd5, 0x24ffff95, 0x240000d4, @@ -76,13 +76,13 @@ const uint32_t SDFM_PRU0_image_0[] = { 0xf114179a, 0xd1009a02, 0x21004c00, -0xc9019a26, +0xc9019a25, 0x10161602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5e9e6, @@ -95,32 +95,31 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x10e8e8e3, 0xf1203793, 0xf124379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf140379d, -0xf13c3784, -0xe1003d84, -0x7f0000fb, -0xf144379d, -0xf13c3784, -0xe1003d84, -0x7f0000f7, -0xf150379d, -0xf1483784, -0xe1003d84, -0x79000004, -0xf14c379d, -0xf1483784, -0xe1003d84, -0xc9029a26, +0x240130e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1281701, +0x58e3fb09, +0x24000001, +0xe1291701, +0x21007200, +0x1f034141, +0x80e22481, +0x24000101, +0xe1281701, +0x21007200, +0x1f034141, +0x80e22481, +0x24000101, +0xe1291701, +0xc9029a25, 0x10363602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5ece6, @@ -133,32 +132,31 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x10e8e8e3, 0xf1643793, 0xf168379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf184379d, -0xf1803784, -0xe1003d84, -0x7f0000fb, -0xf188379d, -0xf1803784, -0xe1003d84, -0x7f0000f7, -0xf194379d, -0xf18c3784, -0xe1003d84, -0x79000004, -0xf190379d, -0xf18c3784, -0xe1003d84, -0xc9039a26, +0x240130e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe16c1701, +0x58e3fb09, +0x24000001, +0xe16d1701, +0x21009700, +0x1f034141, +0x80e22481, +0x24000101, +0xe16c1701, +0x21009700, +0x1f034141, +0x80e22481, +0x24000101, +0xe16d1701, +0xc9039a25, 0x10565682, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xcf1cffae, +0xcf1cffb0, 0x1f18ffff, 0x10f5ffe5, 0x0ce5efe6, @@ -171,26 +169,25 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x10e8e8e3, 0xf1a83793, 0xf1ac379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf1c8379d, -0xf1c43784, -0xe1003d84, -0x7f0000fb, -0xf1cc379d, -0xf1c43784, -0xe1003d84, -0x7f0000f7, -0xf1d8379d, -0xf1d03784, -0xe1003d84, -0x79000004, -0xf1d4379d, -0xf1d03784, -0xe1003d84, -0x7f00008e, +0x240130e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1b01701, +0x58e3fb09, +0x24000001, +0xe1b11701, +0x2100bc00, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b01701, +0x2100bc00, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b11701, +0x7f000091, 0x24000000, 0x107e7e12, 0x2f852381, @@ -250,10 +247,10 @@ const uint32_t SDFM_PRU0_image_0[] = { 0xf1083782, 0x58e2e103, 0x81983a81, -0x2100fe00, +0x2100fb00, 0x04e2e1e1, 0x81983a81, -0x21011100, +0x21010e00, 0x59031c07, 0xf1f43781, 0x91983a82, @@ -285,7 +282,7 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x10000000, 0x24000b01, 0x81000a01, -0x2400c081, +0x2400bd81, 0x810c0a81, 0x24140081, 0x81380a81, @@ -337,7 +334,7 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21016c00, +0x21016900, 0x6836030d, 0xf1621701, 0xc9010417, @@ -350,7 +347,7 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21016c00, +0x21016900, 0x6856030c, 0xf1a61701, 0xc902040a, @@ -392,7 +389,7 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x2101b100, +0x2101ae00, 0x68360314, 0x24000081, 0xf17c1741, @@ -412,7 +409,7 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x2101b100, +0x2101ae00, 0x68560313, 0x24000081, 0xf1c01741, @@ -448,12 +445,24 @@ const uint32_t SDFM_PRU0_image_0[] = { 0x20990000, 0x240130e2, 0x90e22481, -0x69001602, -0x13012121, -0x69013602, -0x13022121, -0x69025602, +0xf114179a, +0xc9009a02, +0x1f012121, +0xf1103783, +0xf1161704, +0xc900e40c, +0x110f0302, +0x68160202, 0x13042121, +0x0b04e3e3, +0x110f0302, +0x68360202, +0x13082121, +0x0b04e3e3, +0x110f0302, +0x68560202, +0x13102121, +0x240130e2, 0x80e22481, 0x20990000, 0x240001c2, @@ -485,53 +494,53 @@ const uint32_t SDFM_PRU0_image_0[] = { 0xd1005f2e, 0x01018282, 0x1b01e3e3, -0x21021300, +0x21021c00, 0x01028282, 0x1b02e3e3, -0x21021300, +0x21021c00, 0x01038282, 0x1b03e3e3, -0x21021300, +0x21021c00, 0x01048282, 0x1b04e3e3, -0x21021300, +0x21021c00, 0x01058282, 0x1b05e3e3, -0x21021300, +0x21021c00, 0x01068282, 0x1b06e3e3, -0x21021300, +0x21021c00, 0x01078282, 0x1b07e3e3, -0x21021300, +0x21021c00, 0x01088282, 0x1b08e3e3, -0x21021300, +0x21021c00, 0x01098282, 0x1b09e3e3, -0x21021300, +0x21021c00, 0x010a8282, 0x1b0ae3e3, -0x21021300, +0x21021c00, 0x010b8282, 0x1b0be3e3, -0x21021300, +0x21021c00, 0x010c8282, 0x1b0ce3e3, -0x21021300, +0x21021c00, 0x010d8282, 0x1b0de3e3, -0x21021300, +0x21021c00, 0x010e8282, 0x1b0ee3e3, -0x21021300, +0x21021c00, 0x010f8282, 0x1b0fe3e3, -0x21021300, +0x21021c00, 0x01108282, 0x1b10e3e3, 0x24000042, -0x21025900, +0x21026200, 0x240000e2, 0x31070043, 0xd1011f00, @@ -554,56 +563,56 @@ const uint32_t SDFM_PRU0_image_0[] = { 0xc9005f2e, 0x01018282, 0x1b01e3e3, -0x21025800, +0x21026100, 0x01028282, 0x1b02e3e3, -0x21025800, +0x21026100, 0x01038282, 0x1b03e3e3, -0x21025800, +0x21026100, 0x01048282, 0x1b04e3e3, -0x21025800, +0x21026100, 0x01058282, 0x1b05e3e3, -0x21025800, +0x21026100, 0x01068282, 0x1b06e3e3, -0x21025800, +0x21026100, 0x01078282, 0x1b07e3e3, -0x21025800, +0x21026100, 0x01088282, 0x1b08e3e3, -0x21025800, +0x21026100, 0x01098282, 0x1b09e3e3, -0x21025800, +0x21026100, 0x010a8282, 0x1b0ae3e3, -0x21025800, +0x21026100, 0x010b8282, 0x1b0be3e3, -0x21025800, +0x21026100, 0x010c8282, 0x1b0ce3e3, -0x21025800, +0x21026100, 0x010d8282, 0x1b0de3e3, -0x21025800, +0x21026100, 0x010e8282, 0x1b0ee3e3, -0x21025800, +0x21026100, 0x010f8282, 0x1b0fe3e3, -0x21025800, +0x21026100, 0x01108282, 0x1b10e3e3, 0x24000142, 0x0b0382e1, 0x04e1e3e1, 0x4f01e16e, -0x81183882, +0xe1183782, 0x20990000, 0x240280c1, 0x24000081, diff --git a/source/current_sense/sdfm/firmware/sdfm_pru_bin.h b/source/current_sense/sdfm/firmware/sdfm_pru_bin.h index d41a5d7..62b07d8 100644 --- a/source/current_sense/sdfm/firmware/sdfm_pru_bin.h +++ b/source/current_sense/sdfm/firmware/sdfm_pru_bin.h @@ -15,11 +15,11 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x24000001, 0x81200b01, 0x10000000, -0x91171801, +0xf1171701, 0xc9000104, -0x2301c999, +0x2301d299, 0x1d00e1e1, -0x81171801, +0xe1171701, 0xf1001701, 0xcf0001ff, 0x1f00e1e1, @@ -27,9 +27,9 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x91340401, 0x1f01e1e1, 0x81340401, -0x23011c99, +0x23011999, 0x32800000, -0x23012399, +0x23012099, 0x240c00c2, 0x24000082, 0xf1021701, @@ -53,13 +53,13 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x0b04e1e1, 0x110fe1e2, 0x10020256, -0x23013d99, -0x23025e99, -0x23014199, -0x23017199, -0x2301b699, +0x23013a99, +0x23026799, +0x23013e99, +0x23016e99, +0x2301b399, 0x1f19fefe, -0x2301bf99, +0x2301bc99, 0x240fffd5, 0x24ffff95, 0x240000d4, @@ -76,13 +76,13 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0xf114179a, 0xd1009a02, 0x21004c00, -0xc9019a26, +0xc9019a25, 0x10161602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5e9e6, @@ -95,32 +95,31 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x10e8e8e3, 0xf1203793, 0xf124379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf140379d, -0xf13c3784, -0xe1003d84, -0x7f0000fb, -0xf144379d, -0xf13c3784, -0xe1003d84, -0x7f0000f7, -0xf150379d, -0xf1483784, -0xe1003d84, -0x79000004, -0xf14c379d, -0xf1483784, -0xe1003d84, -0xc9029a26, +0x240134e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1281701, +0x58e3fb09, +0x24000001, +0xe1291701, +0x21007200, +0x1f034141, +0x80e22481, +0x24000101, +0xe1281701, +0x21007200, +0x1f034141, +0x80e22481, +0x24000101, +0xe1291701, +0xc9029a25, 0x10363602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5ece6, @@ -133,32 +132,31 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x10e8e8e3, 0xf1643793, 0xf168379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf184379d, -0xf1803784, -0xe1003d84, -0x7f0000fb, -0xf188379d, -0xf1803784, -0xe1003d84, -0x7f0000f7, -0xf194379d, -0xf18c3784, -0xe1003d84, -0x79000004, -0xf190379d, -0xf18c3784, -0xe1003d84, -0xc9039a26, +0x240134e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe16c1701, +0x58e3fb09, +0x24000001, +0xe16d1701, +0x21009700, +0x1f034141, +0x80e22481, +0x24000101, +0xe16c1701, +0x21009700, +0x1f034141, +0x80e22481, +0x24000101, +0xe16d1701, +0xc9039a25, 0x10565682, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xcf1cffae, +0xcf1cffb0, 0x1f18ffff, 0x10f5ffe5, 0x0ce5efe6, @@ -171,26 +169,25 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x10e8e8e3, 0xf1a83793, 0xf1ac379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf1c8379d, -0xf1c43784, -0xe1003d84, -0x7f0000fb, -0xf1cc379d, -0xf1c43784, -0xe1003d84, -0x7f0000f7, -0xf1d8379d, -0xf1d03784, -0xe1003d84, -0x79000004, -0xf1d4379d, -0xf1d03784, -0xe1003d84, -0x7f00008e, +0x240134e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1b01701, +0x58e3fb09, +0x24000001, +0xe1b11701, +0x2100bc00, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b01701, +0x2100bc00, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b11701, +0x7f000091, 0x24000000, 0x107e7e12, 0x2f852381, @@ -250,10 +247,10 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0xf1083782, 0x58e2e103, 0x81983a81, -0x2100fe00, +0x2100fb00, 0x04e2e1e1, 0x81983a81, -0x21011100, +0x21010e00, 0x59031c07, 0xf1f43781, 0x91983a82, @@ -285,7 +282,7 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x10000000, 0x24000b01, 0x81000a01, -0x2400c081, +0x2400bd81, 0x810c0a81, 0x24140081, 0x81380a81, @@ -337,7 +334,7 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21016c00, +0x21016900, 0x6836030d, 0xf1621701, 0xc9010417, @@ -350,7 +347,7 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21016c00, +0x21016900, 0x6856030c, 0xf1a61701, 0xc902040a, @@ -392,7 +389,7 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x2101b100, +0x2101ae00, 0x68360314, 0x24000081, 0xf17c1741, @@ -412,7 +409,7 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x2101b100, +0x2101ae00, 0x68560313, 0x24000081, 0xf1c01741, @@ -448,12 +445,24 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0x20990000, 0x240134e2, 0x90e22481, -0x69001602, -0x13012121, -0x69013602, -0x13022121, -0x69025602, +0xf114179a, +0xc9009a02, +0x1f012121, +0xf1103783, +0xf1161704, +0xc900e40c, +0x110f0302, +0x68160202, 0x13042121, +0x0b04e3e3, +0x110f0302, +0x68360202, +0x13082121, +0x0b04e3e3, +0x110f0302, +0x68560202, +0x13102121, +0x240134e2, 0x80e22481, 0x20990000, 0x240001c2, @@ -485,53 +494,53 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0xd1005f2e, 0x01018282, 0x1b01e3e3, -0x21021300, +0x21021c00, 0x01028282, 0x1b02e3e3, -0x21021300, +0x21021c00, 0x01038282, 0x1b03e3e3, -0x21021300, +0x21021c00, 0x01048282, 0x1b04e3e3, -0x21021300, +0x21021c00, 0x01058282, 0x1b05e3e3, -0x21021300, +0x21021c00, 0x01068282, 0x1b06e3e3, -0x21021300, +0x21021c00, 0x01078282, 0x1b07e3e3, -0x21021300, +0x21021c00, 0x01088282, 0x1b08e3e3, -0x21021300, +0x21021c00, 0x01098282, 0x1b09e3e3, -0x21021300, +0x21021c00, 0x010a8282, 0x1b0ae3e3, -0x21021300, +0x21021c00, 0x010b8282, 0x1b0be3e3, -0x21021300, +0x21021c00, 0x010c8282, 0x1b0ce3e3, -0x21021300, +0x21021c00, 0x010d8282, 0x1b0de3e3, -0x21021300, +0x21021c00, 0x010e8282, 0x1b0ee3e3, -0x21021300, +0x21021c00, 0x010f8282, 0x1b0fe3e3, -0x21021300, +0x21021c00, 0x01108282, 0x1b10e3e3, 0x24000042, -0x21025900, +0x21026200, 0x240000e2, 0x31070043, 0xd1011f00, @@ -554,56 +563,56 @@ const uint32_t pru_SDFM_PRU0_image_0[] = { 0xc9005f2e, 0x01018282, 0x1b01e3e3, -0x21025800, +0x21026100, 0x01028282, 0x1b02e3e3, -0x21025800, +0x21026100, 0x01038282, 0x1b03e3e3, -0x21025800, +0x21026100, 0x01048282, 0x1b04e3e3, -0x21025800, +0x21026100, 0x01058282, 0x1b05e3e3, -0x21025800, +0x21026100, 0x01068282, 0x1b06e3e3, -0x21025800, +0x21026100, 0x01078282, 0x1b07e3e3, -0x21025800, +0x21026100, 0x01088282, 0x1b08e3e3, -0x21025800, +0x21026100, 0x01098282, 0x1b09e3e3, -0x21025800, +0x21026100, 0x010a8282, 0x1b0ae3e3, -0x21025800, +0x21026100, 0x010b8282, 0x1b0be3e3, -0x21025800, +0x21026100, 0x010c8282, 0x1b0ce3e3, -0x21025800, +0x21026100, 0x010d8282, 0x1b0de3e3, -0x21025800, +0x21026100, 0x010e8282, 0x1b0ee3e3, -0x21025800, +0x21026100, 0x010f8282, 0x1b0fe3e3, -0x21025800, +0x21026100, 0x01108282, 0x1b10e3e3, 0x24000142, 0x0b0382e1, 0x04e1e3e1, 0x4f01e16e, -0x81183882, +0xe1183782, 0x20990000, 0x240280c1, 0x24000081, diff --git a/source/current_sense/sdfm/firmware/sdfm_rtu_bin.h b/source/current_sense/sdfm/firmware/sdfm_rtu_bin.h index 5a6a191..e6fa638 100644 --- a/source/current_sense/sdfm/firmware/sdfm_rtu_bin.h +++ b/source/current_sense/sdfm/firmware/sdfm_rtu_bin.h @@ -15,11 +15,11 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x24000001, 0x81200b01, 0x10000000, -0x91171801, +0xf1171701, 0xc9000104, -0x2301a799, +0x2301b099, 0x1d00e1e1, -0x81171801, +0xe1171701, 0xf1001701, 0xcf0001ff, 0x1f00e1e1, @@ -27,7 +27,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x91340401, 0x1f03e1e1, 0x81340401, -0x2300fa99, +0x2300f799, 0x32800000, 0xf1021701, 0x51010104, @@ -45,12 +45,12 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x0b04e1e1, 0x110fe1e2, 0x10020256, -0x23011b99, -0x23011f99, -0x23014f99, -0x23019499, +0x23011899, +0x23011c99, +0x23014c99, +0x23019199, 0x1f19fefe, -0x23019d99, +0x23019a99, 0x240fffd5, 0x24ffff95, 0x240000d4, @@ -64,13 +64,13 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0xf114179a, 0xd1009a02, 0x21004000, -0xc9019a26, +0xc9019a25, 0x10161602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5e9e6, @@ -83,32 +83,31 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x10e8e8e3, 0xf1203793, 0xf124379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf140379d, -0xf13c3784, -0xe1003d84, -0x7f0000fb, -0xf144379d, -0xf13c3784, -0xe1003d84, -0x7f0000f7, -0xf150379d, -0xf1483784, -0xe1003d84, -0x79000004, -0xf14c379d, -0xf1483784, -0xe1003d84, -0xc9029a26, +0x240130e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1281701, +0x58e3fb09, +0x24000001, +0xe1291701, +0x21006600, +0x1f034141, +0x80e22481, +0x24000101, +0xe1281701, +0x21006600, +0x1f034141, +0x80e22481, +0x24000101, +0xe1291701, +0xc9029a25, 0x10363602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5ece6, @@ -121,32 +120,31 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x10e8e8e3, 0xf1643793, 0xf168379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf184379d, -0xf1803784, -0xe1003d84, -0x7f0000fb, -0xf188379d, -0xf1803784, -0xe1003d84, -0x7f0000f7, -0xf194379d, -0xf18c3784, -0xe1003d84, -0x79000004, -0xf190379d, -0xf18c3784, -0xe1003d84, -0xc9039a26, +0x240130e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe16c1701, +0x58e3fb09, +0x24000001, +0xe16d1701, +0x21008b00, +0x1f034141, +0x80e22481, +0x24000101, +0xe16c1701, +0x21008b00, +0x1f034141, +0x80e22481, +0x24000101, +0xe16d1701, +0xc9039a25, 0x10565682, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xcf1cffae, +0xcf1cffb0, 0x1f18ffff, 0x10f5ffe5, 0x0ce5efe6, @@ -159,26 +157,25 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x10e8e8e3, 0xf1a83793, 0xf1ac379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf1c8379d, -0xf1c43784, -0xe1003d84, -0x7f0000fb, -0xf1cc379d, -0xf1c43784, -0xe1003d84, -0x7f0000f7, -0xf1d8379d, -0xf1d03784, -0xe1003d84, -0x79000004, -0xf1d4379d, -0xf1d03784, -0xe1003d84, -0x7f00008e, +0x240130e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1b01701, +0x58e3fb09, +0x24000001, +0xe1b11701, +0x2100b000, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b01701, +0x2100b000, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b11701, +0x7f000091, 0x24000000, 0x107e7e12, 0x2f852381, @@ -229,7 +226,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x0108f4e1, 0xe0e13788, 0xc9017c02, -0x2100ef00, +0x2100ec00, 0x59031c03, 0x01011c1c, 0x7900000b, @@ -251,7 +248,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x10000000, 0x24000b01, 0x81000a01, -0x2400b481, +0x2400b181, 0x810c0a81, 0x24140081, 0x81380a81, @@ -303,7 +300,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21014a00, +0x21014700, 0x6836030d, 0xf1621701, 0xc9010417, @@ -316,7 +313,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21014a00, +0x21014700, 0x6856030c, 0xf1a61701, 0xc902040a, @@ -358,7 +355,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x21018f00, +0x21018c00, 0x68360314, 0x24000081, 0xf17c1741, @@ -378,7 +375,7 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x21018f00, +0x21018c00, 0x68560313, 0x24000081, 0xf1c01741, @@ -414,12 +411,24 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0x20990000, 0x240130e2, 0x90e22481, -0x69001602, -0x13012121, -0x69013602, -0x13022121, -0x69025602, +0xf114179a, +0xc9009a02, +0x1f012121, +0xf1103783, +0xf1161704, +0xc900e40c, +0x110f0302, +0x68160202, 0x13042121, +0x0b04e3e3, +0x110f0302, +0x68360202, +0x13082121, +0x0b04e3e3, +0x110f0302, +0x68560202, +0x13102121, +0x240130e2, 0x80e22481, 0x20990000, 0x240001c2, @@ -451,53 +460,53 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0xd1005f2e, 0x01018282, 0x1b01e3e3, -0x2101f100, +0x2101fa00, 0x01028282, 0x1b02e3e3, -0x2101f100, +0x2101fa00, 0x01038282, 0x1b03e3e3, -0x2101f100, +0x2101fa00, 0x01048282, 0x1b04e3e3, -0x2101f100, +0x2101fa00, 0x01058282, 0x1b05e3e3, -0x2101f100, +0x2101fa00, 0x01068282, 0x1b06e3e3, -0x2101f100, +0x2101fa00, 0x01078282, 0x1b07e3e3, -0x2101f100, +0x2101fa00, 0x01088282, 0x1b08e3e3, -0x2101f100, +0x2101fa00, 0x01098282, 0x1b09e3e3, -0x2101f100, +0x2101fa00, 0x010a8282, 0x1b0ae3e3, -0x2101f100, +0x2101fa00, 0x010b8282, 0x1b0be3e3, -0x2101f100, +0x2101fa00, 0x010c8282, 0x1b0ce3e3, -0x2101f100, +0x2101fa00, 0x010d8282, 0x1b0de3e3, -0x2101f100, +0x2101fa00, 0x010e8282, 0x1b0ee3e3, -0x2101f100, +0x2101fa00, 0x010f8282, 0x1b0fe3e3, -0x2101f100, +0x2101fa00, 0x01108282, 0x1b10e3e3, 0x24000042, -0x21023700, +0x21024000, 0x240000e2, 0x31070043, 0xd1011f00, @@ -520,56 +529,56 @@ const uint32_t pru_SDFM_RTU0_image_0[] = { 0xc9005f2e, 0x01018282, 0x1b01e3e3, -0x21023600, +0x21023f00, 0x01028282, 0x1b02e3e3, -0x21023600, +0x21023f00, 0x01038282, 0x1b03e3e3, -0x21023600, +0x21023f00, 0x01048282, 0x1b04e3e3, -0x21023600, +0x21023f00, 0x01058282, 0x1b05e3e3, -0x21023600, +0x21023f00, 0x01068282, 0x1b06e3e3, -0x21023600, +0x21023f00, 0x01078282, 0x1b07e3e3, -0x21023600, +0x21023f00, 0x01088282, 0x1b08e3e3, -0x21023600, +0x21023f00, 0x01098282, 0x1b09e3e3, -0x21023600, +0x21023f00, 0x010a8282, 0x1b0ae3e3, -0x21023600, +0x21023f00, 0x010b8282, 0x1b0be3e3, -0x21023600, +0x21023f00, 0x010c8282, 0x1b0ce3e3, -0x21023600, +0x21023f00, 0x010d8282, 0x1b0de3e3, -0x21023600, +0x21023f00, 0x010e8282, 0x1b0ee3e3, -0x21023600, +0x21023f00, 0x010f8282, 0x1b0fe3e3, -0x21023600, +0x21023f00, 0x01108282, 0x1b10e3e3, 0x24000142, 0x0b0382e1, 0x04e1e3e1, 0x4f01e16e, -0x81183882, +0xe1183782, 0x20990000, 0x240280c1, 0x24000081, diff --git a/source/current_sense/sdfm/firmware/sdfm_txpru_bin.h b/source/current_sense/sdfm/firmware/sdfm_txpru_bin.h index 4302ef3..196a898 100644 --- a/source/current_sense/sdfm/firmware/sdfm_txpru_bin.h +++ b/source/current_sense/sdfm/firmware/sdfm_txpru_bin.h @@ -15,18 +15,18 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x24000001, 0x81200b01, 0x10000000, -0x91171801, +0xf1171701, 0xc9000104, -0x2301a699, +0x2301af99, 0x1d00e1e1, -0x81171801, +0xe1171701, 0xf1001701, 0xcf0001ff, 0x1f00e1e1, 0xe1011701, 0x91340401, 0x81340401, -0x2300f999, +0x2300f699, 0x32800000, 0xf1021701, 0x51010104, @@ -44,12 +44,12 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x0b04e1e1, 0x110fe1e2, 0x10020256, -0x23011a99, -0x23011e99, -0x23014e99, -0x23019399, +0x23011799, +0x23011b99, +0x23014b99, +0x23019099, 0x1f19fefe, -0x23019c99, +0x23019999, 0x240fffd5, 0x24ffff95, 0x240000d4, @@ -63,13 +63,13 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0xf114179a, 0xd1009a02, 0x21003f00, -0xc9019a26, +0xc9019a25, 0x10161602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5e9e6, @@ -82,32 +82,31 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x10e8e8e3, 0xf1203793, 0xf124379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf140379d, -0xf13c3784, -0xe1003d84, -0x7f0000fb, -0xf144379d, -0xf13c3784, -0xe1003d84, -0x7f0000f7, -0xf150379d, -0xf1483784, -0xe1003d84, -0x79000004, -0xf14c379d, -0xf1483784, -0xe1003d84, -0xc9029a26, +0x240138e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1281701, +0x58e3fb09, +0x24000001, +0xe1291701, +0x21006500, +0x1f034141, +0x80e22481, +0x24000101, +0xe1281701, +0x21006500, +0x1f034141, +0x80e22481, +0x24000101, +0xe1291701, +0xc9029a25, 0x10363602, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xc91cff20, +0xc91cff1f, 0x1f18ffff, 0x10f5ffe5, 0x0ce5ece6, @@ -120,32 +119,31 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x10e8e8e3, 0xf1643793, 0xf168379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf184379d, -0xf1803784, -0xe1003d84, -0x7f0000fb, -0xf188379d, -0xf1803784, -0xe1003d84, -0x7f0000f7, -0xf194379d, -0xf18c3784, -0xe1003d84, -0x79000004, -0xf190379d, -0xf18c3784, -0xe1003d84, -0xc9039a26, +0x240138e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe16c1701, +0x58e3fb09, +0x24000001, +0xe16d1701, +0x21008a00, +0x1f034141, +0x80e22481, +0x24000101, +0xe16c1701, +0x21008a00, +0x1f034141, +0x80e22481, +0x24000101, +0xe16d1701, +0xc9039a25, 0x10565682, 0x09020202, 0x1f010202, 0x1002027e, 0x10000000, -0xcf1cffae, +0xcf1cffb0, 0x1f18ffff, 0x10f5ffe5, 0x0ce5efe6, @@ -158,26 +156,25 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x10e8e8e3, 0xf1a83793, 0xf1ac379b, -0x70e3f304, -0x58e3f307, -0x70e3fb0a, -0x58e3fb0d, -0xf1c8379d, -0xf1c43784, -0xe1003d84, -0x7f0000fb, -0xf1cc379d, -0xf1c43784, -0xe1003d84, -0x7f0000f7, -0xf1d8379d, -0xf1d03784, -0xe1003d84, -0x79000004, -0xf1d4379d, -0xf1d03784, -0xe1003d84, -0x7f00008e, +0x240138e2, +0x90e22481, +0x70e3f307, +0x24000001, +0xe1b01701, +0x58e3fb09, +0x24000001, +0xe1b11701, +0x2100af00, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b01701, +0x2100af00, +0x1f034141, +0x80e22481, +0x24000101, +0xe1b11701, +0x7f000091, 0x24000000, 0x107e7e12, 0x2f852381, @@ -228,7 +225,7 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x0108f4e1, 0xe0e13788, 0xc9017c02, -0x2100ee00, +0x2100eb00, 0x59031c03, 0x01011c1c, 0x7900000b, @@ -250,7 +247,7 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x10000000, 0x24000b01, 0x81001c01, -0x2400b381, +0x2400b081, 0x810c1c81, 0x24140081, 0x81381c81, @@ -302,7 +299,7 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21014900, +0x21014600, 0x6836030d, 0xf1621701, 0xc9010417, @@ -315,7 +312,7 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x09015341, 0x13414141, 0x13804141, -0x21014900, +0x21014600, 0x6856030c, 0xf1a61701, 0xc902040a, @@ -357,7 +354,7 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x21018e00, +0x21018b00, 0x68360314, 0x24000081, 0xf17c1741, @@ -377,7 +374,7 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x09033b21, 0x09011b41, 0x13414141, -0x21018e00, +0x21018b00, 0x68560313, 0x24000081, 0xf1c01741, @@ -413,12 +410,24 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0x20990000, 0x240138e2, 0x90e22481, -0x69001602, -0x13012121, -0x69013602, -0x13022121, -0x69025602, +0xf114179a, +0xc9009a02, +0x1f012121, +0xf1103783, +0xf1161704, +0xc900e40c, +0x110f0302, +0x68160202, 0x13042121, +0x0b04e3e3, +0x110f0302, +0x68360202, +0x13082121, +0x0b04e3e3, +0x110f0302, +0x68560202, +0x13102121, +0x240138e2, 0x80e22481, 0x20990000, 0x240001c2, @@ -450,53 +459,53 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0xd1005f2e, 0x01018282, 0x1b01e3e3, -0x2101f000, +0x2101f900, 0x01028282, 0x1b02e3e3, -0x2101f000, +0x2101f900, 0x01038282, 0x1b03e3e3, -0x2101f000, +0x2101f900, 0x01048282, 0x1b04e3e3, -0x2101f000, +0x2101f900, 0x01058282, 0x1b05e3e3, -0x2101f000, +0x2101f900, 0x01068282, 0x1b06e3e3, -0x2101f000, +0x2101f900, 0x01078282, 0x1b07e3e3, -0x2101f000, +0x2101f900, 0x01088282, 0x1b08e3e3, -0x2101f000, +0x2101f900, 0x01098282, 0x1b09e3e3, -0x2101f000, +0x2101f900, 0x010a8282, 0x1b0ae3e3, -0x2101f000, +0x2101f900, 0x010b8282, 0x1b0be3e3, -0x2101f000, +0x2101f900, 0x010c8282, 0x1b0ce3e3, -0x2101f000, +0x2101f900, 0x010d8282, 0x1b0de3e3, -0x2101f000, +0x2101f900, 0x010e8282, 0x1b0ee3e3, -0x2101f000, +0x2101f900, 0x010f8282, 0x1b0fe3e3, -0x2101f000, +0x2101f900, 0x01108282, 0x1b10e3e3, 0x24000042, -0x21023600, +0x21023f00, 0x240000e2, 0x31070043, 0xd1011f00, @@ -519,56 +528,56 @@ const uint32_t pru_SDFM_TXPRU0_image_0[] = { 0xc9005f2e, 0x01018282, 0x1b01e3e3, -0x21023500, +0x21023e00, 0x01028282, 0x1b02e3e3, -0x21023500, +0x21023e00, 0x01038282, 0x1b03e3e3, -0x21023500, +0x21023e00, 0x01048282, 0x1b04e3e3, -0x21023500, +0x21023e00, 0x01058282, 0x1b05e3e3, -0x21023500, +0x21023e00, 0x01068282, 0x1b06e3e3, -0x21023500, +0x21023e00, 0x01078282, 0x1b07e3e3, -0x21023500, +0x21023e00, 0x01088282, 0x1b08e3e3, -0x21023500, +0x21023e00, 0x01098282, 0x1b09e3e3, -0x21023500, +0x21023e00, 0x010a8282, 0x1b0ae3e3, -0x21023500, +0x21023e00, 0x010b8282, 0x1b0be3e3, -0x21023500, +0x21023e00, 0x010c8282, 0x1b0ce3e3, -0x21023500, +0x21023e00, 0x010d8282, 0x1b0de3e3, -0x21023500, +0x21023e00, 0x010e8282, 0x1b0ee3e3, -0x21023500, +0x21023e00, 0x010f8282, 0x1b0fe3e3, -0x21023500, +0x21023e00, 0x01108282, 0x1b10e3e3, 0x24000142, 0x0b0382e1, 0x04e1e3e1, 0x4f01e16e, -0x81183882, +0xe1183782, 0x20990000, 0x240280c1, 0x24000081, diff --git a/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am243x.js b/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am243x.js index 54ce46f..539b48b 100644 --- a/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am243x.js +++ b/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am243x.js @@ -55,7 +55,7 @@ const buildOptionCombos = [ let postBuildStepsPru = [ - "$(CG_TOOL_ROOT)/bin/hexpru.exe --diag_wrap=off --array --array:name_prefix=SDFM_PRU0_image -o sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt.h sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt.out; move sdfm_firmware_am243x-evm_icssg0-pru0_fw_ti-pru-cgt.h ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware/sdfm_bin.h;" + "$(CG_TOOL_ROOT)/bin/hexpru.exe --diag_wrap=off --array --array:name_prefix=SDFM_PRU0_image -o sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt.h sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt.out; move sdfm_firmware_single_axis_single_pru_am243x-evm_icssg0-pru0_fw_ti-pru-cgt.h ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware/sdfm_bin.h;" ]; @@ -66,7 +66,7 @@ function getComponentProperty() { property.dirPath = path.resolve(__dirname, ".."); property.type = "executable"; property.makefile = "pru"; - property.name = "sdfm_firmware"; + property.name = "sdfm_firmware_single_axis_single_pru"; property.isInternal = false; property.description = "ICSS SDFM" property.buildOptionCombos = buildOptionCombos; diff --git a/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am64x.js b/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am64x.js deleted file mode 100644 index b9ee4cf..0000000 --- a/source/current_sense/sdfm/firmware/single_axis_single_pru/.project/project_am64x.js +++ /dev/null @@ -1,99 +0,0 @@ -let path = require('path'); - -let device = "am64x"; - -const files = { - common: [ - "sdfm.asm", - "icssg_pru.cmd", - ], -}; - -const filedirs = { - common: [ - "..", /* core_os_combo base */ - "../..", - "../../../..", /* Example base */ - ], -}; - -const includes = { - common: [ - "${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware", - ], -}; - -const readmeDoxygenPageTag = "SDFM_DESIGN"; - -const cflags_pru = { - common: [ - "-v4", - "-DSDFM_PRU_CORE", - "-o2", - "--display_error_number", - "--hardware_mac=on", - ], -}; - -const lflags_pru = { - common: [ - "--disable_auto_rts", - "--define=SDFM_PRU_CORE=1", - "--warn_sections", - "--entry_point=SDFM_ENTRY", - "--zero_init=off", - ], -}; - - -const buildOptionCombos = [ - { device: device, cpu: "icssg0-pru0", cgt: "ti-pru-cgt", board: "am64x-evm", os: "fw"}, - -]; - - - -let postBuildStepsPru = [ - "$(CG_TOOL_ROOT)/bin/hexpru.exe --diag_wrap=off --array --array:name_prefix=SDFM_PRU0_image -o sdfm_firmware_am64x-evm_icssg0-pru0_fw_ti-pru-cgt.h sdfm_firmware_am64x-evm_icssg0-pru0_fw_ti-pru-cgt.out; move sdfm_firmware_am64x-evm_icssg0-pru0_fw_ti-pru-cgt.h ${MOTOR_CONTROL_SDK_PATH}/source/current_sense/sdfm/firmware/sdfm_bin.h;" -]; - - - -function getComponentProperty() { - let property = {}; - - property.dirPath = path.resolve(__dirname, ".."); - property.type = "executable"; - property.makefile = "pru"; - property.name = "sdfm_firmware"; - property.isInternal = false; - property.description = "ICSS SDFM" - property.buildOptionCombos = buildOptionCombos; - property.pru_main_file = "main"; - property.pru_linker_file = "linker"; - property.isSkipTopLevelBuild = true; - property.skipUpdatingTirex = true; - - return property; -} - -function getComponentBuildProperty(buildOption) { - let build_property = {}; - - build_property.files = files; - build_property.filedirs = filedirs; - build_property.includes = includes; - build_property.cflags = cflags_pru; - build_property.lflags = lflags_pru; - build_property.readmeDoxygenPageTag = readmeDoxygenPageTag; - build_property.projecspecFileAction = "copy"; - build_property.skipMakefileCcsBootimageGen = true; - build_property.postBuildSteps = postBuildStepsPru; - - return build_property; -} - -module.exports = { - getComponentProperty, - getComponentBuildProperty, -}; \ No newline at end of file diff --git a/source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt/example.projectspec b/source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt/example.projectspec index 79ffd21..8de53e2 100644 --- a/source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt/example.projectspec +++ b/source/current_sense/sdfm/firmware/single_axis_single_pru/am243x-evm/icssg0-pru0_fw/ti-pru-cgt/example.projectspec @@ -10,8 +10,8 @@ + description="A Sdfm Firmware Single Axis Single Pru FW project"> - /* ========================================================================== */ /* Macros */ /* ========================================================================== */ @@ -117,8 +116,6 @@ extern "C" { /* SDFM output buffer size in 32-bit words */ - - #define ICSSG_SD_SAMP_CH_BUF_SZ ( 128 ) #define NUM_CH_SUPPORTED_PER_AXIS ( 3 ) #define SDFM_NINE_CH_MASK ( 0x1FF ) @@ -126,6 +123,20 @@ extern "C" { #define SDFM_CH_MASK_FOR_CH1_CH4_CH7 ( 0x92 ) #define SDFM_CH_MASK_FOR_CH2_CH5_CH8 ( 0x124 ) +/*SDFM Channel IDs*/ +#define SDFM_CHANNEL0 (0) +#define SDFM_CHANNEL1 (1) +#define SDFM_CHANNEL2 (2) +#define SDFM_CHANNEL3 (3) +#define SDFM_CHANNEL4 (4) +#define SDFM_CHANNEL5 (5) +#define SDFM_CHANNEL6 (6) +#define SDFM_CHANNEL7 (7) +#define SDFM_CHANNEL8 (8) + +/*Fast detect ERROR mask*/ +#define SDFM_FD_ERROR_MASK_FOR_TRIP_VEC ( 0x3800000 ) + #define SDFM_PHASE_DELAY_ACK_BIT_MASK (1) #define SDFM_PHASE_DELAY_CAL_LOOP_SIZE (8) @@ -247,8 +258,12 @@ typedef struct SDFM_ThresholdParms_s volatile uint32_t high_threshold; /**< Low threshold value */ volatile uint32_t low_threshold; - /**< reserved for zero crossing*/ - volatile uint32_t reserved3; + /**< High Threshold status*/ + volatile uint8_t highThStatus; + /**< High Threshold status*/ + volatile uint8_t lowThStatus; + /**< reserved */ + volatile uint16_t reserved3; }SDFM_ThresholdParms; /** @@ -331,6 +346,7 @@ typedef struct SDFM_SampleOutInterface_s */ typedef struct SDFM_s { /**< PRU ID */ + PRUICSS_Handle gPruIcssHandle; uint8_t pru_id; uint32_t sdfm_clock; uint32_t iep_clock;