Merge pull request 'dev-tej-TI_BLE_smd_stable' (#1) from dev-tej-TI_BLE_smd_stable into stable
Reviewed-on: Vecmocon_Technologies/cantouart_ti#1stable
commit
92508d2556
|
|
@ -114,6 +114,60 @@ encoding//Debug/ivec_ESDK/ivec_esdk_nfc_pn532/src/subdir_rules.mk=UTF-8
|
||||||
encoding//Debug/ivec_ESDK/ivec_esdk_nfc_pn532/src/subdir_vars.mk=UTF-8
|
encoding//Debug/ivec_ESDK/ivec_esdk_nfc_pn532/src/subdir_vars.mk=UTF-8
|
||||||
encoding//Debug/ivec_RTE/src/subdir_rules.mk=UTF-8
|
encoding//Debug/ivec_RTE/src/subdir_rules.mk=UTF-8
|
||||||
encoding//Debug/ivec_RTE/src/subdir_vars.mk=UTF-8
|
encoding//Debug/ivec_RTE/src/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/ivec_cmplx_vframe/src/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/ivec_cmplx_vframe/src/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/gcc/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/iar/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/keil/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/lib/ticlang/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/m0p/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/m0p/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Debug/m0p/sysctl/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Debug/m0p/sysctl/subdir_vars.mk=UTF-8
|
||||||
encoding//Debug/makefile=UTF-8
|
encoding//Debug/makefile=UTF-8
|
||||||
encoding//Debug/objects.mk=UTF-8
|
encoding//Debug/objects.mk=UTF-8
|
||||||
encoding//Debug/sources.mk=UTF-8
|
encoding//Debug/sources.mk=UTF-8
|
||||||
|
|
@ -127,48 +181,64 @@ encoding//Test__GNU/Generated\ Codes/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/Generated\ Codes/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/Generated\ Codes/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/TM1650_SDK/src/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/TM1650_SDK/src/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/TM1650_SDK/src/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/TM1650_SDK/src/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0c1105_c1106/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0c1105_c1106/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0h321x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0h321x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/gcc/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0c1105_c1106/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0c1105_c1106/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0h321x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0h321x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/iar/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0c1105_c1106/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0c1105_c1106/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0h321x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0h321x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l11xx_l13xx/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l122x_l222x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/keil/m0p/mspm0l122x_l222x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0c1105_c1106/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0c1105_c1106/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0g1x0x_g3x0x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0gx51x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0gx51x/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0h321x/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0h321x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0l111x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0l111x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/driverlib/lib/ticlang/m0p/mspm0l11xx_l13xx/subdir_rules.mk=UTF-8
|
||||||
|
|
@ -201,6 +271,8 @@ encoding//Test__GNU/ivec_ESDK/ivec_esdk_nfc_pn532/src/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/ivec_ESDK/ivec_esdk_nfc_pn532/src/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/ivec_ESDK/ivec_esdk_nfc_pn532/src/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/ivec_RTE/src/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/ivec_RTE/src/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/ivec_RTE/src/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/ivec_RTE/src/subdir_vars.mk=UTF-8
|
||||||
|
encoding//Test__GNU/ivec_cmplx_vframe/src/subdir_rules.mk=UTF-8
|
||||||
|
encoding//Test__GNU/ivec_cmplx_vframe/src/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/lib/gcc/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/lib/gcc/m0p/mspm0c110x/subdir_rules.mk=UTF-8
|
||||||
encoding//Test__GNU/lib/gcc/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
encoding//Test__GNU/lib/gcc/m0p/mspm0c110x/subdir_vars.mk=UTF-8
|
||||||
encoding//Test__GNU/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
encoding//Test__GNU/lib/gcc/m0p/mspm0g1x0x_g3x0x/subdir_rules.mk=UTF-8
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ typedef enum{
|
||||||
IVEC_MCAL_UART_PORT_1=0,
|
IVEC_MCAL_UART_PORT_1=0,
|
||||||
IVEC_MCAL_UART_PORT_2,
|
IVEC_MCAL_UART_PORT_2,
|
||||||
IVEC_MCAL_UART_PORT_3,
|
IVEC_MCAL_UART_PORT_3,
|
||||||
|
IVEC_MCAL_UART_PORT_4,
|
||||||
IVEC_MCAL_UART_PORT_MAX
|
IVEC_MCAL_UART_PORT_MAX
|
||||||
}IVEC_McalUartPort_e;
|
}IVEC_McalUartPort_e;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
#ifndef CORE_INCLUDE_IVEC_MCAL_WDT_H_
|
||||||
|
#define CORE_INCLUDE_IVEC_MCAL_WDT_H_
|
||||||
|
|
||||||
|
#include "../utils/utils.h"
|
||||||
|
|
||||||
|
IVEC_McalStatus_e xMCAL_WatchdogInit(MCAL_WWDT_TIMER timer);
|
||||||
|
|
||||||
|
IVEC_McalStatus_e xMCAL_WatchdogDeInit(void);
|
||||||
|
|
||||||
|
IVEC_McalStatus_e xMCAL_WatchdogReset(void);
|
||||||
|
|
||||||
|
#endif /* CORE_INCLUDE_IVEC_MCAL_WDT_H_ */
|
||||||
|
|
@ -676,9 +676,13 @@ IVEC_McalCommonErr_e xMCAL_MCANGetErrorStatus(IVEC_McalCanHandle_s* pxCanHandle,
|
||||||
DL_MCAN_getErrCounters(CANFD0, &l_xCounter);
|
DL_MCAN_getErrCounters(CANFD0, &l_xCounter);
|
||||||
|
|
||||||
/* Return the status based on various error conditions */
|
/* Return the status based on various error conditions */
|
||||||
|
if((g_xHeaderStat.lastErrCode == DL_MCAN_ERR_CODE_ACK_ERROR) || (g_xHeaderStat.busOffStatus))
|
||||||
|
DL_MCAN_setOpMode(CANFD0, DL_MCAN_OPERATION_MODE_NORMAL);
|
||||||
|
return commonMCAL_SUCCESS;
|
||||||
|
/*
|
||||||
return ( (g_xHeaderStat.lastErrCode == DL_MCAN_ERR_CODE_ACK_ERROR) || \
|
return ( (g_xHeaderStat.lastErrCode == DL_MCAN_ERR_CODE_ACK_ERROR) || \
|
||||||
(g_xHeaderStat.busOffStatus) ) ? IVEC_MCAL_STATUS_ERROR : IVEC_MCAL_STATUS_SUCCESS;
|
(g_xHeaderStat.busOffStatus) ) ? commonMCAL_FAIL : commonMCAL_SUCCESS;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,11 @@ void UART2_IRQHandler()
|
||||||
prv_vRxCallback(UART2, DL_UART_Main_getPendingInterrupt(UART2));
|
prv_vRxCallback(UART2, DL_UART_Main_getPendingInterrupt(UART2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UART3_IRQHandler()
|
||||||
|
{
|
||||||
|
prv_vRxCallback(UART3, DL_UART_Main_getPendingInterrupt(UART3));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Retrieves the UART instance for the specified port number.
|
* @brief Retrieves the UART instance for the specified port number.
|
||||||
*
|
*
|
||||||
|
|
@ -158,6 +163,8 @@ static UART_Regs* __prv_McalGetUartInstance(IVEC_McalUartPort_e eUartPortNumber)
|
||||||
return UART1;
|
return UART1;
|
||||||
case IVEC_MCAL_UART_PORT_3:
|
case IVEC_MCAL_UART_PORT_3:
|
||||||
return UART2;
|
return UART2;
|
||||||
|
case IVEC_MCAL_UART_PORT_4:
|
||||||
|
return UART3;
|
||||||
default:
|
default:
|
||||||
return NULL; // Invalid UART port
|
return NULL; // Invalid UART port
|
||||||
}
|
}
|
||||||
|
|
@ -183,6 +190,8 @@ static IVEC_McalUartPort_e __prv_McalGetUartPort(UART_Regs* pxUartInstance)
|
||||||
return IVEC_MCAL_UART_PORT_2;
|
return IVEC_MCAL_UART_PORT_2;
|
||||||
case (uint32_t)UART2:
|
case (uint32_t)UART2:
|
||||||
return IVEC_MCAL_UART_PORT_3;
|
return IVEC_MCAL_UART_PORT_3;
|
||||||
|
case (uint32_t)UART3:
|
||||||
|
return IVEC_MCAL_UART_PORT_4;
|
||||||
default:
|
default:
|
||||||
return IVEC_MCAL_UART_PORT_MAX; // Invalid UART port
|
return IVEC_MCAL_UART_PORT_MAX; // Invalid UART port
|
||||||
}
|
}
|
||||||
|
|
@ -242,7 +251,12 @@ static IVEC_McalCommonErr_e _prvMCAL_UartDeInitInstance(IVEC_McalUartHandle_s* p
|
||||||
NVIC_ClearPendingIRQ(UART2_INT_IRQn);
|
NVIC_ClearPendingIRQ(UART2_INT_IRQn);
|
||||||
// Reset the UART2 init flag if needed (b_UART2_init_flag = 0)
|
// Reset the UART2 init flag if needed (b_UART2_init_flag = 0)
|
||||||
}
|
}
|
||||||
|
else if (pxUartInstance == UART3)
|
||||||
|
{
|
||||||
|
NVIC_DisableIRQ(UART3_INT_IRQn);
|
||||||
|
NVIC_ClearPendingIRQ(UART3_INT_IRQn);
|
||||||
|
// Reset the UART2 init flag if needed (b_UART2_init_flag = 0)
|
||||||
|
}
|
||||||
// Optionally, reset the UART clock configuration if needed
|
// Optionally, reset the UART clock configuration if needed
|
||||||
DL_UART_Main_setClockConfig(pxUartInstance, NULL);
|
DL_UART_Main_setClockConfig(pxUartInstance, NULL);
|
||||||
|
|
||||||
|
|
@ -528,6 +542,15 @@ static IVEC_McalCommonErr_e __prv_McalUartInitInstance(IVEC_McalUartHandle_s* px
|
||||||
DL_UART_Main_enablePower(UART2);
|
DL_UART_Main_enablePower(UART2);
|
||||||
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM32, IOMUX_PINCM32_PF_UART2_TX);
|
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM32, IOMUX_PINCM32_PF_UART2_TX);
|
||||||
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM33, IOMUX_PINCM33_PF_UART2_RX);
|
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM33, IOMUX_PINCM33_PF_UART2_RX);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (pxUartHandle->eUartPortNumber == IVEC_MCAL_UART_PORT_4)
|
||||||
|
{
|
||||||
|
DL_UART_Main_reset(UART3);
|
||||||
|
DL_UART_Main_enablePower(UART3);
|
||||||
|
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM36, IOMUX_PINCM36_PF_UART3_TX);
|
||||||
|
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM35, IOMUX_PINCM35_PF_UART3_RX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UART_Regs* pxUartInstance = __prv_McalGetUartInstance(pxUartHandle->eUartPortNumber);
|
UART_Regs* pxUartInstance = __prv_McalGetUartInstance(pxUartHandle->eUartPortNumber);
|
||||||
|
|
@ -579,7 +602,14 @@ static IVEC_McalCommonErr_e __prv_McalUartInitInstance(IVEC_McalUartHandle_s* px
|
||||||
|
|
||||||
DL_UART_ClockConfig xUartClockConfig = { 0 };
|
DL_UART_ClockConfig xUartClockConfig = { 0 };
|
||||||
xUartClockConfig.clockSel = DL_UART_CLOCK_BUSCLK;
|
xUartClockConfig.clockSel = DL_UART_CLOCK_BUSCLK;
|
||||||
xUartClockConfig.divideRatio = DL_UART_MAIN_CLOCK_DIVIDE_RATIO_1;
|
if(pxUartHandle->eUartPortNumber == IVEC_MCAL_UART_PORT_4)
|
||||||
|
{
|
||||||
|
xUartClockConfig.divideRatio = DL_UART_MAIN_CLOCK_DIVIDE_RATIO_2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xUartClockConfig.divideRatio = DL_UART_MAIN_CLOCK_DIVIDE_RATIO_1;
|
||||||
|
}
|
||||||
|
|
||||||
DL_UART_Main_setClockConfig(pxUartInstance, (DL_UART_Main_ClockConfig*) &xUartClockConfig);
|
DL_UART_Main_setClockConfig(pxUartInstance, (DL_UART_Main_ClockConfig*) &xUartClockConfig);
|
||||||
DL_UART_Main_init(pxUartInstance, (DL_UART_Main_Config*) &xUartConfig);
|
DL_UART_Main_init(pxUartInstance, (DL_UART_Main_Config*) &xUartConfig);
|
||||||
|
|
@ -705,6 +735,26 @@ static IVEC_McalCommonErr_e __prv_McalUartInitInstance(IVEC_McalUartHandle_s* px
|
||||||
NVIC_ClearPendingIRQ(UART2_INT_IRQn);
|
NVIC_ClearPendingIRQ(UART2_INT_IRQn);
|
||||||
NVIC_EnableIRQ(UART2_INT_IRQn);
|
NVIC_EnableIRQ(UART2_INT_IRQn);
|
||||||
}
|
}
|
||||||
|
else if (pxUartInstance == UART3)
|
||||||
|
{
|
||||||
|
DL_UART_Main_enableInterrupt(pxUartInstance,
|
||||||
|
DL_UART_MAIN_INTERRUPT_BREAK_ERROR |
|
||||||
|
DL_UART_MAIN_INTERRUPT_FRAMING_ERROR |
|
||||||
|
DL_UART_MAIN_INTERRUPT_NOISE_ERROR |
|
||||||
|
DL_UART_MAIN_INTERRUPT_OVERRUN_ERROR |
|
||||||
|
DL_UART_MAIN_INTERRUPT_PARITY_ERROR |
|
||||||
|
DL_UART_MAIN_INTERRUPT_RX |
|
||||||
|
DL_UART_MAIN_INTERRUPT_RX_TIMEOUT_ERROR);
|
||||||
|
|
||||||
|
DL_UART_Main_enableFIFOs(UART3);
|
||||||
|
DL_UART_Main_setRXFIFOThreshold(UART3, DL_UART_RX_FIFO_LEVEL_ONE_ENTRY);
|
||||||
|
DL_UART_Main_setTXFIFOThreshold(UART3, DL_UART_TX_FIFO_LEVEL_1_2_EMPTY);
|
||||||
|
|
||||||
|
DL_UART_Main_enable(pxUartInstance);
|
||||||
|
NVIC_ClearPendingIRQ(UART3_INT_IRQn);
|
||||||
|
NVIC_EnableIRQ(UART3_INT_IRQn);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return commonMCAL_SUCCESS;
|
return commonMCAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,133 @@
|
||||||
|
#include "ivec_mcal_wdt.h"
|
||||||
|
|
||||||
|
static volatile bool b_WDInitFlag;
|
||||||
|
|
||||||
|
|
||||||
|
IVEC_McalStatus_e xMCAL_WatchdogInit(MCAL_WWDT_TIMER timer)
|
||||||
|
{
|
||||||
|
DL_WWDT_CLOCK_DIVIDE Clk_Div;
|
||||||
|
DL_WWDT_TIMER_PERIOD Tmr_Per;
|
||||||
|
|
||||||
|
assert(WATCHDOG_TIMER != NULL);
|
||||||
|
|
||||||
|
switch(timer)
|
||||||
|
{
|
||||||
|
case MCAL_WDT_1_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_1;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_2_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_2;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_3_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_3;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_4_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_4;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_5_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_5;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_6_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_6;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_7_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_7;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_8_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_8;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_15_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_16_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_2;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_24_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_3;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_32_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_4;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_40_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_5;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_48_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_6;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_56_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_7;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
case MCAL_WDT_64_SEC_TIMER:
|
||||||
|
Clk_Div = DL_WWDT_CLOCK_DIVIDE_8;
|
||||||
|
Tmr_Per = DL_WWDT_TIMER_PERIOD_18_BITS;
|
||||||
|
break;
|
||||||
|
default: return IVEC_MCAL_STATUS_INIT_FAIL;
|
||||||
|
}
|
||||||
|
if(b_WDInitFlag == false)
|
||||||
|
{
|
||||||
|
/* Set Window0 as active window */
|
||||||
|
DL_WWDT_setActiveWindow(WATCHDOG_TIMER, DL_WWDT_WINDOW0);
|
||||||
|
|
||||||
|
DL_WWDT_initWatchdogMode(WATCHDOG_TIMER, Clk_Div,Tmr_Per, DL_WWDT_RUN_IN_SLEEP, DL_WWDT_WINDOW_PERIOD_0, DL_WWDT_WINDOW_PERIOD_0); // DL_WWDT_WINDOW_PERIOD_0 is for selecting the closed percentage of the watchdog
|
||||||
|
if(DL_WWDT_isPowerEnabled(WATCHDOG_TIMER))
|
||||||
|
{
|
||||||
|
while ((DL_SYSCTL_getClockStatus() & (DL_SYSCTL_CLK_STATUS_LFOSC_GOOD))!= (DL_SYSCTL_CLK_STATUS_LFOSC_GOOD));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
return IVEC_MCAL_STATUS_TIMEOUT;
|
||||||
|
}
|
||||||
|
b_WDInitFlag = true;
|
||||||
|
|
||||||
|
return IVEC_MCAL_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return IVEC_MCAL_STATUS_INIT_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IVEC_McalStatus_e xMCAL_WatchdogDeInit(void)
|
||||||
|
{
|
||||||
|
assert(WATCHDOG_TIMER != NULL);
|
||||||
|
|
||||||
|
if(b_WDInitFlag == true)
|
||||||
|
{
|
||||||
|
DL_WWDT_disablePower(WATCHDOG_TIMER);
|
||||||
|
|
||||||
|
b_WDInitFlag = false;
|
||||||
|
|
||||||
|
return IVEC_MCAL_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return IVEC_MCAL_STATUS_INIT_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
IVEC_McalStatus_e xMCAL_WatchdogReset(void)
|
||||||
|
{
|
||||||
|
if(DL_WWDT_isRunning(WATCHDOG_TIMER) == true)
|
||||||
|
{
|
||||||
|
DL_WWDT_restart(WATCHDOG_TIMER);
|
||||||
|
|
||||||
|
return IVEC_MCAL_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return IVEC_MCAL_STATUS_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -162,6 +162,13 @@ SYSCONFIG_WEAK void SYSCFG_DL_GPIO_init(void)
|
||||||
DL_GPIO_initPeripheralInputFunction(
|
DL_GPIO_initPeripheralInputFunction(
|
||||||
GPIO_MCAN0_IOMUX_CAN_RX, GPIO_MCAN0_IOMUX_CAN_RX_FUNC);
|
GPIO_MCAN0_IOMUX_CAN_RX, GPIO_MCAN0_IOMUX_CAN_RX_FUNC);
|
||||||
|
|
||||||
|
DL_GPIO_initDigitalInput(GPIO_GRP_0_soc_IOMUX);
|
||||||
|
|
||||||
|
|
||||||
|
// DL_GPIO_initDigitalInputFeatures(GPIO_GRP_0_soc_IOMUX,
|
||||||
|
// DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_PULL_DOWN,
|
||||||
|
// DL_GPIO_INVERSION_DISABLE, DL_GPIO_WAKEUP_DISABLE);
|
||||||
|
|
||||||
// DL_GPIO_initDigitalOutput(IOMUX_PINCM31);
|
// DL_GPIO_initDigitalOutput(IOMUX_PINCM31);
|
||||||
//
|
//
|
||||||
// DL_GPIO_clearPins(GPIOB, tick_PIN_0_PIN);
|
// DL_GPIO_clearPins(GPIOB, tick_PIN_0_PIN);
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,10 @@ extern "C" {
|
||||||
#define GPIO_CAPTURE_0_C0_IOMUX (IOMUX_PINCM21)
|
#define GPIO_CAPTURE_0_C0_IOMUX (IOMUX_PINCM21)
|
||||||
#define GPIO_CAPTURE_0_C0_IOMUX_FUNC IOMUX_PINCM21_PF_TIMA1_CCP0
|
#define GPIO_CAPTURE_0_C0_IOMUX_FUNC IOMUX_PINCM21_PF_TIMA1_CCP0
|
||||||
|
|
||||||
|
/* Defines for soc: GPIOB.17 with pinCMx 43 on package pin 36 */
|
||||||
|
#define GPIO_GRP_0_soc_PIN (DL_GPIO_PIN_17)
|
||||||
|
#define GPIO_GRP_0_soc_IOMUX (IOMUX_PINCM43)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -286,7 +286,7 @@ IVEC_EcuCommonErr_e xECU_CANGetStatus(IVEC_EcuCANHandle_s *xCanHandle)
|
||||||
IVEC_EcuCommonErr_e l_eFuncStatus = commonECU_SUCCESS;
|
IVEC_EcuCommonErr_e l_eFuncStatus = commonECU_SUCCESS;
|
||||||
if (xCanHandle->__xCanHandle.__u8Init == 0)
|
if (xCanHandle->__xCanHandle.__u8Init == 0)
|
||||||
{
|
{
|
||||||
l_eFuncStatus = commonMCAL_FAIL;
|
l_eFuncStatus = commonECU_FAIL;
|
||||||
return l_eFuncStatus;
|
return l_eFuncStatus;
|
||||||
}
|
}
|
||||||
int8_t l_i8ErrorString[32] = {0};
|
int8_t l_i8ErrorString[32] = {0};
|
||||||
|
|
@ -295,7 +295,8 @@ IVEC_EcuCommonErr_e xECU_CANGetStatus(IVEC_EcuCANHandle_s *xCanHandle)
|
||||||
if (xMCAL_MCANGetErrorStatus(&xCanHandle->__xCanHandle, l_i8ErrorString) == commonMCAL_FAIL)
|
if (xMCAL_MCANGetErrorStatus(&xCanHandle->__xCanHandle, l_i8ErrorString) == commonMCAL_FAIL)
|
||||||
{
|
{
|
||||||
/* Reinitialize CAN if an error is detected */
|
/* Reinitialize CAN if an error is detected */
|
||||||
l_eFuncStatus = xECU_CANReInit(xCanHandle);
|
//l_eFuncStatus = xECU_CANReInit(xCanHandle);
|
||||||
|
l_eFuncStatus = commonECU_FAIL;
|
||||||
}
|
}
|
||||||
return l_eFuncStatus;
|
return l_eFuncStatus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ typedef enum
|
||||||
IVEC_ECU_UART_PORT1 = 0,
|
IVEC_ECU_UART_PORT1 = 0,
|
||||||
IVEC_ECU_UART_PORT2,
|
IVEC_ECU_UART_PORT2,
|
||||||
IVEC_ECU_UART_PORT3,
|
IVEC_ECU_UART_PORT3,
|
||||||
|
IVEC_ECU_UART_PORT4,
|
||||||
IVEC_ECU_UART_PORT_MAX
|
IVEC_ECU_UART_PORT_MAX
|
||||||
} IVEC_ECU_UartPortNumber_e;
|
} IVEC_ECU_UartPortNumber_e;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,10 @@ static void __prv_EcuCanOverUartMsgCallback(IVEC_McalUartPort_e eUartPort, IVEC_
|
||||||
if (eEventType == IVEC_ECU_UART_EVENT_RX_ARRIVED) {
|
if (eEventType == IVEC_ECU_UART_EVENT_RX_ARRIVED) {
|
||||||
u8CMPLX_FifoEnqueue((CmplxFifoQueueHandle_s*)&__gprv_xUartResponseQueue[IVEC_ECU_UART_PORT3], pu8Buffer, u32Size);
|
u8CMPLX_FifoEnqueue((CmplxFifoQueueHandle_s*)&__gprv_xUartResponseQueue[IVEC_ECU_UART_PORT3], pu8Buffer, u32Size);
|
||||||
}
|
}
|
||||||
|
case IVEC_MCAL_UART_PORT_4:
|
||||||
|
if (eEventType == IVEC_ECU_UART_EVENT_RX_ARRIVED) {
|
||||||
|
u8CMPLX_FifoEnqueue((CmplxFifoQueueHandle_s*)&__gprv_xUartResponseQueue[IVEC_ECU_UART_PORT4], pu8Buffer, u32Size);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -116,6 +120,10 @@ IVEC_EcuCommonErr_e xECU_UartInit(IVEC_EcuUartHandle_s* pxUartHandle)
|
||||||
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].i32TotalElements = pxUartHandle->u16QbufSize;
|
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].i32TotalElements = pxUartHandle->u16QbufSize;
|
||||||
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].pu8Buffer = pxUartHandle->u8Qbuffer;
|
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].pu8Buffer = pxUartHandle->u8Qbuffer;
|
||||||
break;
|
break;
|
||||||
|
case IVEC_ECU_UART_PORT4:
|
||||||
|
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].i32TotalElements = pxUartHandle->u16QbufSize;
|
||||||
|
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].pu8Buffer = pxUartHandle->u8Qbuffer;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].pu8Buffer = NULL;
|
__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber].pu8Buffer = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
@ -555,3 +563,9 @@ int32_t iECU_UartInitiateTransmit(IVEC_EcuUartHandle_s* pxUartHandle, uint32_t u
|
||||||
memcpy(&l_u8Buf[ecuUART_PKT_HEADER_u8], pu8Data, u8Len);
|
memcpy(&l_u8Buf[ecuUART_PKT_HEADER_u8], pu8Data, u8Len);
|
||||||
return (xECU_UartFormatPacket(pxUartHandle, l_u8Buf, u8Len, u32Id) == ecuUART_PACKET_SUCCESS_u8) ? 0 : -1;
|
return (xECU_UartFormatPacket(pxUartHandle, l_u8Buf, u8Len, u32Id) == ecuUART_PACKET_SUCCESS_u8) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t xECU_data_length(IVEC_EcuUartHandle_s* pxUartHandle)
|
||||||
|
{
|
||||||
|
uint32_t length = i32CMPLX_FifoCounts((CmplxFifoQueueHandle_s*)&__gprv_xUartResponseQueue[pxUartHandle->eUartPortNumber]);
|
||||||
|
return(length);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "ivec_rte.h"
|
#include "ivec_rte.h"
|
||||||
|
|
||||||
#include "ivec_cmplx_queue.h"
|
#include "ivec_cmplx_queue.h"
|
||||||
|
#include "ivec_cmplx_vFrame.h"
|
||||||
#include "../ivec_ECU/ivec_ecu_uart/inc/ivec_ecu_uart.h"
|
#include "../ivec_ECU/ivec_ecu_uart/inc/ivec_ecu_uart.h"
|
||||||
#include "../ivec_ECU/ivec_ecu_can/inc/ivec_ecu_can.h"
|
#include "../ivec_ECU/ivec_ecu_can/inc/ivec_ecu_can.h"
|
||||||
#include "../../Core/Include/ivec_mcal_gpio.h"
|
#include "../../Core/Include/ivec_mcal_gpio.h"
|
||||||
|
|
@ -18,6 +19,7 @@
|
||||||
|
|
||||||
// UART Handles
|
// UART Handles
|
||||||
IVEC_EcuUartHandle_s g_xUartHandle = {0};
|
IVEC_EcuUartHandle_s g_xUartHandle = {0};
|
||||||
|
IVEC_EcuUartHandle_s __gprv_UartCcHandle = {0};
|
||||||
IVEC_EcuCANHandle_s g_xCanHandle = {0};
|
IVEC_EcuCANHandle_s g_xCanHandle = {0};
|
||||||
|
|
||||||
// Configuration Macros
|
// Configuration Macros
|
||||||
|
|
@ -26,7 +28,7 @@ IVEC_EcuCANHandle_s g_xCanHandle = {0};
|
||||||
#define rteCONFIG_MOTHER_BOARD_u8 3
|
#define rteCONFIG_MOTHER_BOARD_u8 3
|
||||||
|
|
||||||
// UART Configuration
|
// UART Configuration
|
||||||
#define rteUART_PIN_SELECTION_u8 rteCONFIG_BASIL_u8
|
#define rteUART_PIN_SELECTION_u8 rteCONFIG_BASIL_BATTERY_SMART_u8
|
||||||
|
|
||||||
uint8_t g_pu8UartBuffer[ecuUART_MAX_PACKET_LENGTH_u8] = {0};
|
uint8_t g_pu8UartBuffer[ecuUART_MAX_PACKET_LENGTH_u8] = {0};
|
||||||
volatile uint32_t g_u32CanId = 0x1FFFFFFF;
|
volatile uint32_t g_u32CanId = 0x1FFFFFFF;
|
||||||
|
|
@ -50,6 +52,18 @@ static uint8_t __gprv_U8Index = 0;
|
||||||
extern ExtU_socTouchDisplay_T socTouchDisplay_U;
|
extern ExtU_socTouchDisplay_T socTouchDisplay_U;
|
||||||
extern ExtY_socTouchDisplay_T socTouchDisplay_Y;
|
extern ExtY_socTouchDisplay_T socTouchDisplay_Y;
|
||||||
|
|
||||||
|
#define CAN_UART_BUFFER_MAX_SIZE 300
|
||||||
|
uint8_t g_prv_u8CANUartDataBuffer[CAN_UART_BUFFER_MAX_SIZE];
|
||||||
|
uint32_t g_prv_u32CanUartDataAvailable = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// CAN UART Buffer
|
||||||
|
#define eteCAN_UART_Cc_BUFFER_MAX_SIZE_u32 4096
|
||||||
|
volatile uint8_t __gprv_u8CcUartDataBuffer[eteCAN_UART_Cc_BUFFER_MAX_SIZE_u32];
|
||||||
|
|
||||||
|
uint8_t g_u8SmdReceived = 0;
|
||||||
|
IVEC_EcuCommonCanFrame_s g_xSmdCanMsg = {0};
|
||||||
|
int32_t g_u32LastSendTick = 0; // Last time we sent over CAN/UART
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sets the state of the MCU temperature data pin (SDA) for TM1650.
|
* @brief Sets the state of the MCU temperature data pin (SDA) for TM1650.
|
||||||
|
|
@ -127,7 +141,7 @@ static uint8_t _prv_RteReadMcuTempPin(void) {
|
||||||
void vRTE_MatlabInit(void)
|
void vRTE_MatlabInit(void)
|
||||||
{
|
{
|
||||||
u8MCAL_gpioInit();
|
u8MCAL_gpioInit();
|
||||||
tm1650_Init(TM_1650_BRIGHT_8, TM_1650_Segment_8, TM_1650_Normal_Mode, TM_1650_Screen_ON, TM_1650_DIG_3, (void*)&vRTE_SetMcuTempDataPin , (void*)&vRTE_McuSetTempClkPin , &_prv_RteReadMcuTempPin);
|
tm1650_Init(TM_1650_BRIGHT_6, TM_1650_Segment_8, TM_1650_Normal_Mode, TM_1650_Screen_ON, TM_1650_DIG_3, (void*)&vRTE_SetMcuTempDataPin , (void*)&vRTE_McuSetTempClkPin , &_prv_RteReadMcuTempPin);
|
||||||
tm1650_displaySwitch(TM_1650_Screen_OFF);
|
tm1650_displaySwitch(TM_1650_Screen_OFF);
|
||||||
vMCAL_delayTicks(500);
|
vMCAL_delayTicks(500);
|
||||||
tm1650_showDot(TM_1650_DIG_1,false);
|
tm1650_showDot(TM_1650_DIG_1,false);
|
||||||
|
|
@ -135,6 +149,17 @@ void vRTE_MatlabInit(void)
|
||||||
tm1650_showDot(TM_1650_DIG_3,false);
|
tm1650_showDot(TM_1650_DIG_3,false);
|
||||||
socTouchDisplay_initialize();
|
socTouchDisplay_initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void vRTE_InitUartCc(void)
|
||||||
|
{
|
||||||
|
__gprv_UartCcHandle.u8Qbuffer = __gprv_u8CcUartDataBuffer;
|
||||||
|
__gprv_UartCcHandle.u16QbufSize = eteCAN_UART_Cc_BUFFER_MAX_SIZE_u32;
|
||||||
|
__gprv_UartCcHandle.eUartPortNumber = IVEC_ECU_UART_PORT4;
|
||||||
|
__gprv_UartCcHandle.u32BaudRate = IVEC_ECU_UART_BAUD_230400;
|
||||||
|
|
||||||
|
xECU_UartInit(&__gprv_UartCcHandle);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Runs the MATLAB interface for MCU and TM1650 during operation.
|
* @brief Runs the MATLAB interface for MCU and TM1650 during operation.
|
||||||
*
|
*
|
||||||
|
|
@ -219,6 +244,7 @@ void vRTE_AppInit(void)
|
||||||
{
|
{
|
||||||
#if rteUART_PIN_SELECTION_u8 == 1
|
#if rteUART_PIN_SELECTION_u8 == 1
|
||||||
vRTE_MatlabInit();
|
vRTE_MatlabInit();
|
||||||
|
vRTE_InitUartCc();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
vRTE_InitUartCanEcho();
|
vRTE_InitUartCanEcho();
|
||||||
|
|
@ -386,6 +412,11 @@ void vRTE_AppRun(void)
|
||||||
{
|
{
|
||||||
vRTE_ProcessUartData();
|
vRTE_ProcessUartData();
|
||||||
vRTE_ProcessCanData();
|
vRTE_ProcessCanData();
|
||||||
|
|
||||||
|
#if rteUART_PIN_SELECTION_u8 == 1
|
||||||
|
vRTE_CcUartRxProcess();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if rteUART_PIN_SELECTION_u8 == 3
|
#if rteUART_PIN_SELECTION_u8 == 3
|
||||||
vRTE_UartNfcProcess();
|
vRTE_UartNfcProcess();
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -446,6 +477,266 @@ void vRTE_CanFilterSaveVal(uint8_t u8Idx, uint32_t u32Filter, bool bl_bIsExtende
|
||||||
// Store filter value
|
// Store filter value
|
||||||
g_xCanHandle.u32FilterValues[g_xCanHandle.i32FilterCount] = u32Filter;
|
g_xCanHandle.u32FilterValues[g_xCanHandle.i32FilterCount] = u32Filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//IVEC_EcuCommonCanFrame_s g_xSmdCanMsg = {0}; // Global message buffer
|
||||||
|
//uint8_t g_u8SmdReceived = 0;
|
||||||
|
uint32_t g_u32LastSmdTick = 0;
|
||||||
|
|
||||||
|
void vCcUartRxToCanTx(IVEC_EcuCommonCanFrame_s* pxCanMsg)
|
||||||
|
{
|
||||||
|
if( (pxCanMsg->u32CanId == 0x16) && (pxCanMsg->pucCanData[0] == 'V') && \
|
||||||
|
(pxCanMsg->pucCanData[1] == 'E') && (pxCanMsg->pucCanData[2] == 'C') && \
|
||||||
|
(pxCanMsg->pucCanData[3] == 'I') && (pxCanMsg->pucCanData[4]== 'O') && \
|
||||||
|
(pxCanMsg->pucCanData[5] == 'T'))
|
||||||
|
{
|
||||||
|
uint32_t l_u32Id = 0x36; // ID to pass
|
||||||
|
uint8_t pu8Data[1] = {0x79}; // Data array containing 0x79
|
||||||
|
uint8_t u8Len = sizeof(pu8Data); // Length of data array
|
||||||
|
int l_i32RetSize = 0;
|
||||||
|
uint8_t l_u8UartBuffer[30] = { 0 };
|
||||||
|
int l_i32Status = -1;
|
||||||
|
l_i32RetSize = u16CMPLX_vFrameEncode((uint32_t)l_u32Id, (uint8_t*)&pu8Data[1], u8Len, l_u8UartBuffer, 30);
|
||||||
|
l_i32Status = IVEC_ECUUartWrite(&__gprv_UartCcHandle, l_u8UartBuffer, l_i32RetSize);
|
||||||
|
vMCAL_WDG_Refresh();
|
||||||
|
vMCAL_WatchdogDisablePower();
|
||||||
|
vMCAL_softReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pxCanMsg->ucCanDlc > 0 && pxCanMsg->u32CanId == 0x00)
|
||||||
|
{
|
||||||
|
uint32_t l_u32Baudrate = 0;
|
||||||
|
uint8_t l_u8Mode = pxCanMsg->pucCanData[0];//g_pu8UartBuffer[ecuUART_PKT_HEADER_u8];
|
||||||
|
memcpy(&l_u32Baudrate, &pxCanMsg->pucCanData[1], (uint32_t)pxCanMsg->ucCanDlc);
|
||||||
|
iECU_UartInitiateTransmit(&g_xUartHandle, 0x01,(uint8_t*)&pxCanMsg->pucCanData[0],0);
|
||||||
|
if( l_u8Mode == 0 )
|
||||||
|
{
|
||||||
|
__gprv_UartCcHandle.u32BaudRate = l_u32Baudrate;
|
||||||
|
xECU_UartReinit(&__gprv_UartCcHandle);
|
||||||
|
}
|
||||||
|
else if( l_u8Mode == 1 )
|
||||||
|
{
|
||||||
|
g_xCanHandle.u16Speed = (uint16_t)l_u32Baudrate;
|
||||||
|
xECU_CANReInit(&g_xCanHandle);
|
||||||
|
}
|
||||||
|
else if( l_u8Mode == 2 )
|
||||||
|
{
|
||||||
|
|
||||||
|
if( pxCanMsg->pucCanData[1] != 0 ){//22(20+2) rx filter available send each id in a frame
|
||||||
|
uint32_t l_U32FilterId = 0;
|
||||||
|
memcpy(&l_U32FilterId, &pxCanMsg->pucCanData[3], sizeof(uint32_t));
|
||||||
|
bool l_bIsExtended = 0;
|
||||||
|
l_bIsExtended = (l_U32FilterId > 0x7FF); // Standard IDs are <= 0x7FF
|
||||||
|
vRTE_CanFilterSaveVal((pxCanMsg->pucCanData[1] - 1), l_U32FilterId, l_bIsExtended);
|
||||||
|
if( pxCanMsg->pucCanData[2])//All filter received. Trigger Filter Settings
|
||||||
|
{
|
||||||
|
xECU_CANReInit(&g_xCanHandle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
xECU_CANReInit(&g_xCanHandle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ( l_u8Mode == 3 )
|
||||||
|
{
|
||||||
|
if( (pxCanMsg->pucCanData[1] < 1) || (pxCanMsg->pucCanData[1] > 8) )//0-7 maximum received pkts
|
||||||
|
return;
|
||||||
|
uint32_t l_u32u32MaskId = 0;
|
||||||
|
memcpy(&l_u32u32MaskId, &pxCanMsg->pucCanData[3], sizeof(uint32_t));
|
||||||
|
bool l_bIsExtended = 0;
|
||||||
|
l_bIsExtended = (l_u32u32MaskId > 0x7FF); // Standard IDs are <= 0x7FF
|
||||||
|
vRTE_CanFilterMaskSaveVal((pxCanMsg->pucCanData[1] - 1), l_u32u32MaskId, l_bIsExtended);
|
||||||
|
}
|
||||||
|
else if (l_u8Mode == 100)
|
||||||
|
{
|
||||||
|
g_u32CanId = l_u32Baudrate;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vMCAL_delayTicks(100);
|
||||||
|
iECU_UartInitiateTransmit(&g_xUartHandle, 0x01,(uint8_t*)&pxCanMsg->pucCanData[0],0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pxCanMsg->u32CanId != 0x00)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (pxCanMsg->u32CanId == 0x1cea6969)
|
||||||
|
{
|
||||||
|
iECU_UartInitiateTransmit(&g_xUartHandle, (uint32_t)pxCanMsg->u32CanId,(uint8_t*)&pxCanMsg->pucCanData[0],(uint8_t)pxCanMsg->ucCanDlc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(pxCanMsg->u32CanId == 0xabcdef)
|
||||||
|
{
|
||||||
|
pxCanMsg->u32CanId = g_u32CanId;
|
||||||
|
}
|
||||||
|
if (pxCanMsg->u32CanId == 0x696972)
|
||||||
|
{
|
||||||
|
g_xSmdCanMsg = *pxCanMsg; // Store the latest data
|
||||||
|
g_u8SmdReceived = 1; // Flag to indicate data is fresh
|
||||||
|
|
||||||
|
// Add touch info
|
||||||
|
uint32_t l_u32TouchDetect = DL_GPIO_readPins(GPIOB, GPIO_GRP_0_soc_PIN);
|
||||||
|
if (g_xSmdCanMsg.pucCanData[0] == 0)
|
||||||
|
{
|
||||||
|
g_xSmdCanMsg.pucCanData[0] = 0x2;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_xSmdCanMsg.pucCanData[1] = (uint8_t)((l_u32TouchDetect >> 17) & 0x1);
|
||||||
|
}
|
||||||
|
// if(pxCanMsg->u32CanId == 0x696972)
|
||||||
|
// {
|
||||||
|
// g_u8SmdReceived = 1;
|
||||||
|
// IVEC_EcuCommonCanFrame_s xMyCanMsg;
|
||||||
|
//
|
||||||
|
// g_u32LastSmdTick = i32MCAL_getTicks(); // Store time of last valid message
|
||||||
|
//
|
||||||
|
//// // Copy entire struct in one line
|
||||||
|
//// g_xSmdCanMsg = *pxCanMsg;
|
||||||
|
//
|
||||||
|
// uint32_t l_u32TouchDetect = DL_GPIO_readPins(GPIOB, GPIO_GRP_0_soc_PIN);
|
||||||
|
// if(pxCanMsg->pucCanData[0] == 0)
|
||||||
|
// {
|
||||||
|
// pxCanMsg->pucCanData[0] = 0x2;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// pxCanMsg->pucCanData[1] = (uint8_t)((l_u32TouchDetect >> 17) & 0x1);
|
||||||
|
//
|
||||||
|
// // Send immediately
|
||||||
|
// iECU_UartInitiateTransmit(&g_xUartHandle, (uint32_t)pxCanMsg->u32CanId,(uint8_t*)&pxCanMsg->pucCanData[0],(uint8_t)pxCanMsg->ucCanDlc);
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(pxCanMsg->u32CanId != 0x696972)
|
||||||
|
xECU_WriteDataOverCAN(&g_xCanHandle, &pxCanMsg->pucCanData[0], pxCanMsg->u32CanId, pxCanMsg->ucCanDlc, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vRTE_CcUartRxProcess(void)
|
||||||
|
{
|
||||||
|
static int __prv_i32BfrIdx = 0;
|
||||||
|
g_prv_u32CanUartDataAvailable = xECU_data_length(&__gprv_UartCcHandle);
|
||||||
|
//
|
||||||
|
// uint32_t u32CurrentTick = i32MCAL_getTicks();
|
||||||
|
//
|
||||||
|
// // If no message in last 5 sec
|
||||||
|
// if ((u32CurrentTick - g_u32LastSmdTick) >= 5000)
|
||||||
|
// {
|
||||||
|
// uint32_t l_u32TouchDetect = DL_GPIO_readPins(GPIOB, GPIO_GRP_0_soc_PIN);
|
||||||
|
//
|
||||||
|
// IVEC_EcuCommonCanFrame_s g_xSmdCanMsg = {0};
|
||||||
|
// g_xSmdCanMsg.u32CanId = 0x696972;
|
||||||
|
// g_xSmdCanMsg.ucCanDlc = 8;
|
||||||
|
// g_xSmdCanMsg.pucCanData[0] = 0;
|
||||||
|
// g_xSmdCanMsg.pucCanData[1] = (uint8_t)((l_u32TouchDetect >> 17) & 0x1);
|
||||||
|
// iECU_UartInitiateTransmit(&g_xUartHandle, (uint32_t)g_xSmdCanMsg.u32CanId,(uint8_t*)&g_xSmdCanMsg.pucCanData[0],(uint8_t)g_xSmdCanMsg.ucCanDlc);
|
||||||
|
// xECU_WriteDataOverCAN(&g_xCanHandle, &g_xSmdCanMsg.pucCanData[0], g_xSmdCanMsg.u32CanId, g_xSmdCanMsg.ucCanDlc, 0);
|
||||||
|
//
|
||||||
|
// g_u32LastSmdTick = u32CurrentTick;
|
||||||
|
// }
|
||||||
|
|
||||||
|
uint32_t u32CurrentTick = i32MCAL_getTicks();
|
||||||
|
|
||||||
|
if ((u32CurrentTick - g_u32LastSendTick) >= 5000)
|
||||||
|
{
|
||||||
|
IVEC_EcuCommonCanFrame_s xMsgToSend = {0};
|
||||||
|
|
||||||
|
if (g_u8SmdReceived == 1)
|
||||||
|
{
|
||||||
|
xMsgToSend = g_xSmdCanMsg;
|
||||||
|
g_u8SmdReceived = 0; // Reset flag after sending
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xMsgToSend.u32CanId = 0x696972;
|
||||||
|
xMsgToSend.ucCanDlc = 8;
|
||||||
|
xMsgToSend.pucCanData[0] = 0;
|
||||||
|
|
||||||
|
uint32_t l_u32TouchDetect = DL_GPIO_readPins(GPIOB, GPIO_GRP_0_soc_PIN);
|
||||||
|
xMsgToSend.pucCanData[1] = (uint8_t)((l_u32TouchDetect >> 17) & 0x1);
|
||||||
|
}
|
||||||
|
|
||||||
|
iECU_UartInitiateTransmit(&g_xUartHandle, xMsgToSend.u32CanId, xMsgToSend.pucCanData, xMsgToSend.ucCanDlc);
|
||||||
|
xECU_WriteDataOverCAN(&g_xCanHandle, xMsgToSend.pucCanData, xMsgToSend.u32CanId, xMsgToSend.ucCanDlc, 0);
|
||||||
|
|
||||||
|
g_u32LastSendTick = u32CurrentTick; // Update last send time
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int l_u32AvailableData = g_prv_u32CanUartDataAvailable > (CAN_UART_BUFFER_MAX_SIZE - __prv_i32BfrIdx) ? (CAN_UART_BUFFER_MAX_SIZE - __prv_i32BfrIdx) : g_prv_u32CanUartDataAvailable;
|
||||||
|
if ((l_u32AvailableData <= 10 && g_prv_u32CanUartDataAvailable > 10)|| (__prv_i32BfrIdx+l_u32AvailableData)>=CAN_UART_BUFFER_MAX_SIZE)
|
||||||
|
{
|
||||||
|
// printf("Data Overflow detected:%d-%d\n", g_prv_u32CanUartDataAvailable, __prv_i32BfrIdx);
|
||||||
|
__prv_i32BfrIdx = 0;
|
||||||
|
l_u32AvailableData = 0;
|
||||||
|
}
|
||||||
|
if (1)
|
||||||
|
{
|
||||||
|
//record uart recv
|
||||||
|
uint8_t l_u8Goon=0;
|
||||||
|
if (l_u32AvailableData && xECU_UartGetData(&__gprv_UartCcHandle, &g_prv_u8CANUartDataBuffer[__prv_i32BfrIdx], l_u32AvailableData, 3000) == commonECU_SUCCESS)
|
||||||
|
l_u8Goon=1;
|
||||||
|
if(l_u32AvailableData<=0 && __prv_i32BfrIdx>0)
|
||||||
|
l_u8Goon=1;
|
||||||
|
|
||||||
|
if(l_u8Goon)
|
||||||
|
{
|
||||||
|
// g_prv_u32CanUartDataAvailable -= l_u32AvailableData;
|
||||||
|
__prv_i32BfrIdx += l_u32AvailableData;
|
||||||
|
uint8_t* l_ucStart = g_prv_u8CANUartDataBuffer;
|
||||||
|
uint8_t* l_ucFrameStart = NULL;
|
||||||
|
uint8_t* l_ucFrameEnd = NULL;
|
||||||
|
IVEC_ECU_LOG(LOG_STRING, "New Data:%d-%d", l_u32AvailableData, __prv_i32BfrIdx);
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
// IVEC_ECU_LOG(LOG_STRING, "Current Idx:%d", __prv_i32BfrIdx);
|
||||||
|
int l_i32Len = __prv_i32BfrIdx;
|
||||||
|
if (u16CMPLX_vFrameFind(l_ucStart, l_i32Len, &l_ucFrameStart, &l_ucFrameEnd) == 2)//cksum error
|
||||||
|
{
|
||||||
|
// xCANhandle->xMyMetrics.u32CANCommFrameErrors++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l_ucFrameStart == NULL)
|
||||||
|
{
|
||||||
|
__prv_i32BfrIdx = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (l_ucFrameEnd == NULL)
|
||||||
|
{
|
||||||
|
if (memmove(g_prv_u8CANUartDataBuffer, l_ucFrameStart, __prv_i32BfrIdx) != g_prv_u8CANUartDataBuffer)
|
||||||
|
{
|
||||||
|
__prv_i32BfrIdx = 0;
|
||||||
|
IVEC_ECU_LOG(LOG_STRING, "Never Print");
|
||||||
|
}
|
||||||
|
__prv_i32BfrIdx-=(l_ucFrameStart-g_prv_u8CANUartDataBuffer);
|
||||||
|
if(__prv_i32BfrIdx<0)
|
||||||
|
__prv_i32BfrIdx=0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
IVEC_EcuCommonCanFrame_s l_xCanFrame = { 0 };
|
||||||
|
uint8_t l_u8UartFrameLen = l_ucFrameEnd - l_ucFrameStart + 1;
|
||||||
|
int l_CanDlc=0;
|
||||||
|
|
||||||
|
|
||||||
|
u16CMPLX_vFrameDecode(l_ucFrameStart, l_u8UartFrameLen, &l_xCanFrame.pucCanData,8,&l_CanDlc,&l_xCanFrame.u32CanId);
|
||||||
|
l_xCanFrame.ucCanDlc = l_CanDlc;
|
||||||
|
|
||||||
|
vCcUartRxToCanTx(&l_xCanFrame);
|
||||||
|
memset(l_ucFrameStart, 0, l_u8UartFrameLen);
|
||||||
|
l_ucStart = ++l_ucFrameEnd;
|
||||||
|
__prv_i32BfrIdx -= l_u8UartFrameLen;
|
||||||
|
if (__prv_i32BfrIdx < 0)
|
||||||
|
__prv_i32BfrIdx = 0;
|
||||||
|
}
|
||||||
|
// printf( "Out Current Idx:%d\n", __prv_i32BfrIdx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Processes UART data to manage CAN and UART communication.
|
* @brief Processes UART data to manage CAN and UART communication.
|
||||||
*
|
*
|
||||||
|
|
@ -478,7 +769,10 @@ void vRTE_ProcessUartData(void)
|
||||||
uint8_t u8Len = sizeof(pu8Data); // Length of data array
|
uint8_t u8Len = sizeof(pu8Data); // Length of data array
|
||||||
iECU_UartInitiateTransmit(&g_xUartHandle, u32Id, pu8Data, u8Len);
|
iECU_UartInitiateTransmit(&g_xUartHandle, u32Id, pu8Data, u8Len);
|
||||||
iECU_UartInitiateTransmit(&g_xUartHandle, 0x8, NULL, 0);
|
iECU_UartInitiateTransmit(&g_xUartHandle, 0x8, NULL, 0);
|
||||||
|
vMCAL_WDG_Refresh();
|
||||||
|
vMCAL_WatchdogDisablePower();
|
||||||
vMCAL_softReset();
|
vMCAL_softReset();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(l_eRetCode > 0 && l_u32Id == 0x00)
|
if(l_eRetCode > 0 && l_u32Id == 0x00)
|
||||||
|
|
@ -542,10 +836,19 @@ void vRTE_ProcessUartData(void)
|
||||||
if ( l_eRetCode >= 0 && (l_u32Id > 0x00 && l_u32Id < 0xffffffff) )
|
if ( l_eRetCode >= 0 && (l_u32Id > 0x00 && l_u32Id < 0xffffffff) )
|
||||||
{
|
{
|
||||||
//_prvU8Buffer = (_prvU8Buffer + 1) % 2;
|
//_prvU8Buffer = (_prvU8Buffer + 1) % 2;
|
||||||
|
if(l_u32Id == 0x1cecff69)
|
||||||
|
{
|
||||||
|
int l_i32RetSize = 0;
|
||||||
|
uint8_t l_u8UartBuffer[30] = { 0 };
|
||||||
|
int l_i32Status = -1;
|
||||||
|
l_i32RetSize = u16CMPLX_vFrameEncode((uint32_t)l_u32Id, (uint8_t*)&g_pu8UartBuffer[ecuUART_PKT_HEADER_u8], (int32_t)l_eRetCode, l_u8UartBuffer, 30);
|
||||||
|
l_i32Status = IVEC_ECUUartWrite(&__gprv_UartCcHandle, l_u8UartBuffer, l_i32RetSize);
|
||||||
|
}
|
||||||
xECU_WriteDataOverCAN(&g_xCanHandle, &g_pu8UartBuffer[ecuUART_PKT_HEADER_u8], l_u32Id, l_eRetCode, 0);
|
xECU_WriteDataOverCAN(&g_xCanHandle, &g_pu8UartBuffer[ecuUART_PKT_HEADER_u8], l_u32Id, l_eRetCode, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
vMCAL_WDG_Refresh();
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Processes CAN data and handles CAN communication.
|
* @brief Processes CAN data and handles CAN communication.
|
||||||
|
|
@ -571,9 +874,26 @@ void vRTE_ProcessCanData(void)
|
||||||
(l_xCanBuff.u8Data[3] == 'I') && (l_xCanBuff.u8Data[4] == 'O') && \
|
(l_xCanBuff.u8Data[3] == 'I') && (l_xCanBuff.u8Data[4] == 'O') && \
|
||||||
(l_xCanBuff.u8Data[5] == 'T'))
|
(l_xCanBuff.u8Data[5] == 'T'))
|
||||||
{
|
{
|
||||||
|
vMCAL_WatchdogDisablePower();
|
||||||
vMCAL_softReset();
|
vMCAL_softReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if rteUART_PIN_SELECTION_u8 == 1
|
||||||
|
int l_i32RetSize = 0;
|
||||||
|
uint8_t l_u8UartBuffer[30] = { 0 };
|
||||||
|
int l_i32Status = -1;
|
||||||
|
l_i32RetSize = u16CMPLX_vFrameEncode((uint32_t)l_xCanBuff.u32UlId, (uint8_t*)&l_xCanBuff.u8Data[0], (int32_t)l_xCanBuff.u8Length, l_u8UartBuffer, 30);
|
||||||
|
if(l_xCanBuff.u32UlId == g_u32CanId)
|
||||||
|
{
|
||||||
|
|
||||||
|
l_i32RetSize = u16CMPLX_vFrameEncode((uint32_t)0xabcdef, (uint8_t*)&l_xCanBuff.u8Data[0], (int32_t)l_xCanBuff.u8Length, l_u8UartBuffer, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
l_i32Status = IVEC_ECUUartWrite(&__gprv_UartCcHandle, l_u8UartBuffer, l_i32RetSize);
|
||||||
|
#endif
|
||||||
|
|
||||||
iECU_UartInitiateTransmit(&g_xUartHandle, (uint32_t)l_xCanBuff.u32UlId, (uint8_t*)&l_xCanBuff.u8Data[0], (uint8_t)l_xCanBuff.u8Length);
|
iECU_UartInitiateTransmit(&g_xUartHandle, (uint32_t)l_xCanBuff.u32UlId, (uint8_t*)&l_xCanBuff.u8Data[0], (uint8_t)l_xCanBuff.u8Length);
|
||||||
|
|
||||||
socTouchDisplay_U.Input[__gprv_U8Index].ID = l_xCanBuff.u32UlId;
|
socTouchDisplay_U.Input[__gprv_U8Index].ID = l_xCanBuff.u32UlId;
|
||||||
socTouchDisplay_U.Input[__gprv_U8Index].Length = l_xCanBuff.u8Length;
|
socTouchDisplay_U.Input[__gprv_U8Index].Length = l_xCanBuff.u8Length;
|
||||||
memcpy(&socTouchDisplay_U.Input[__gprv_U8Index].Data[0], &l_xCanBuff.u8Data[0], 8);
|
memcpy(&socTouchDisplay_U.Input[__gprv_U8Index].Data[0], &l_xCanBuff.u8Data[0], 8);
|
||||||
|
|
@ -584,5 +904,5 @@ void vRTE_ProcessCanData(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
xECU_CANGetStatus(&g_xCanHandle);
|
xECU_CANGetStatus(&g_xCanHandle);
|
||||||
|
vMCAL_WDG_Refresh();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#ifndef IVEC_RTE_INC_IVEC_RTE_H_
|
||||||
|
#define IVEC_RTE_INC_IVEC_RTE_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include "ivec_bsw_common.h"
|
||||||
|
#include "stdint.h"
|
||||||
|
#include "stdio.h"
|
||||||
|
|
||||||
|
#define IVEC_VFRAME_MIN_LEN 14
|
||||||
|
#define IVEC_VFRAME_DLC 2
|
||||||
|
#define IVEC_VFRAME_DLC_LEN 2
|
||||||
|
#define IVEC_VFRAME_ID 4
|
||||||
|
#define IVEC_VFRAME_ID_LEN 4
|
||||||
|
#define IVEC_VFRAME_DATA_START 12
|
||||||
|
#define IVEC_VFRAME_SYNC_CHAR_0 0xb5
|
||||||
|
#define IVEC_VFRAME_SYNC_CHAR_1 0x63
|
||||||
|
int u16CMPLX_vFrameFind(uint8_t* pcBuffer, int i32Len, uint8_t** pcFrameStartPt, uint8_t** pcFrameEndPt);
|
||||||
|
uint16_t u16CMPLX_vFrameDecode( const uint8_t* pInData, int i32InLen, uint8_t* pu8FrameData, int u8FrameBufLen ,int *pi32FrameDlc,uint32_t *pu32Id);
|
||||||
|
uint16_t u16CMPLX_vFrameEncode(uint32_t u32Id, const uint8_t* pInData, int i32InLen, uint8_t* pu8FrameBuffer, int pu8FrameBufferLen);
|
||||||
|
|
||||||
|
#endif /* IVEC_RTE_INC_IVEC_RTE_H_ */
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
#include "ivec_cmplx_vFrame.h"
|
||||||
|
|
||||||
|
#define LOG_STRING "ivec-cmplx-vframe"
|
||||||
|
|
||||||
|
static void __prv_CalculateChecksum(uint8_t *pkt, int len, uint8_t *ck)
|
||||||
|
{
|
||||||
|
uint8_t mck_a = 0, mck_b = 0;
|
||||||
|
/*Incremented to ignore Sync data*/
|
||||||
|
for (int i = 2; i < len - 2; i++)
|
||||||
|
{
|
||||||
|
mck_a += pkt[i];
|
||||||
|
mck_b += mck_a;
|
||||||
|
}
|
||||||
|
mck_a &= 0xFF;
|
||||||
|
mck_b &= 0xFF;
|
||||||
|
ck[0] = mck_a;
|
||||||
|
ck[1] = mck_b;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t u16CMPLX_vFrameEncode(uint32_t u32Id, const uint8_t *pInData, int i32InLen, uint8_t *pu8FrameBuffer, int pu8FrameBufferLen)
|
||||||
|
{
|
||||||
|
if (i32InLen > (pu8FrameBufferLen - IVEC_VFRAME_MIN_LEN) || pu8FrameBuffer == NULL)
|
||||||
|
return 0;
|
||||||
|
uint16_t u16Dlc = i32InLen;
|
||||||
|
pu8FrameBuffer[0] = IVEC_VFRAME_SYNC_CHAR_0;
|
||||||
|
pu8FrameBuffer[1] = IVEC_VFRAME_SYNC_CHAR_1;
|
||||||
|
|
||||||
|
memcpy(&pu8FrameBuffer[IVEC_VFRAME_ID], &u32Id, IVEC_VFRAME_ID_LEN);
|
||||||
|
|
||||||
|
if (pInData)
|
||||||
|
{
|
||||||
|
memcpy(&pu8FrameBuffer[IVEC_VFRAME_DATA_START], pInData, u16Dlc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
u16Dlc = 0;
|
||||||
|
}
|
||||||
|
memcpy(&pu8FrameBuffer[IVEC_VFRAME_DLC], &u16Dlc, IVEC_VFRAME_DLC_LEN);
|
||||||
|
__prv_CalculateChecksum(pu8FrameBuffer, u16Dlc + IVEC_VFRAME_MIN_LEN, &pu8FrameBuffer[IVEC_VFRAME_MIN_LEN + u16Dlc - 2]);
|
||||||
|
return u16Dlc + IVEC_VFRAME_MIN_LEN;
|
||||||
|
}
|
||||||
|
uint16_t u16CMPLX_vFrameDecode(const uint8_t *pInData, int i32InLen, uint8_t *pu8FrameData, int i32FrameBufLen, int *pi32FrameDlc, uint32_t *pu32Id)
|
||||||
|
{
|
||||||
|
if (pInData == NULL || i32InLen < IVEC_VFRAME_MIN_LEN)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (pu32Id)
|
||||||
|
memcpy(pu32Id, &pInData[IVEC_VFRAME_ID], IVEC_VFRAME_ID_LEN);
|
||||||
|
|
||||||
|
if (pu8FrameData && pi32FrameDlc && i32FrameBufLen > 0)
|
||||||
|
{
|
||||||
|
memcpy(pi32FrameDlc, &pInData[IVEC_VFRAME_DLC], IVEC_VFRAME_DLC_LEN);
|
||||||
|
if (*pi32FrameDlc <= i32FrameBufLen)
|
||||||
|
memcpy(pu8FrameData, &pInData[IVEC_VFRAME_DATA_START], *pi32FrameDlc);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
int u16CMPLX_vFrameFind(uint8_t *pcBuffer, int i32Len, uint8_t **pcFrameStartPt, uint8_t **pcFrameEndPt)
|
||||||
|
{
|
||||||
|
IVEC_BSW_LOG(LOG_STRING, "Scanning Frame : 0x%x-%d", pcBuffer, i32Len);
|
||||||
|
uint8_t *l_pcFrameStartPt = NULL;
|
||||||
|
uint8_t *l_pcFrameEndPt = NULL;
|
||||||
|
int l_i32Ret = 0;
|
||||||
|
if (pcBuffer == NULL || i32Len <= 0)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
int i32Ijk = 0;
|
||||||
|
for (; i32Ijk < i32Len; i32Ijk++)
|
||||||
|
{
|
||||||
|
if (pcBuffer[i32Ijk] == IVEC_VFRAME_SYNC_CHAR_0)
|
||||||
|
{
|
||||||
|
l_pcFrameStartPt = &pcBuffer[i32Ijk];
|
||||||
|
// i32Ijk++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (l_pcFrameStartPt == NULL)
|
||||||
|
goto exit;
|
||||||
|
int i32RemainingLen = i32Len - i32Ijk;
|
||||||
|
IVEC_BSW_LOG(LOG_STRING, "Remaining len: %d", i32RemainingLen);
|
||||||
|
if ((i32RemainingLen > 1) && (pcBuffer[i32Ijk+1] != IVEC_VFRAME_SYNC_CHAR_1))
|
||||||
|
{
|
||||||
|
l_pcFrameStartPt = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l_pcFrameStartPt == NULL || (i32RemainingLen < IVEC_VFRAME_MIN_LEN))
|
||||||
|
goto exit;
|
||||||
|
uint16_t u16Dlc = 0;
|
||||||
|
memcpy(&u16Dlc, l_pcFrameStartPt + IVEC_VFRAME_DLC, IVEC_VFRAME_DLC_LEN);
|
||||||
|
IVEC_BSW_LOG(LOG_STRING, "DLC Found: %d", u16Dlc);
|
||||||
|
if (i32RemainingLen < (u16Dlc + IVEC_VFRAME_MIN_LEN))
|
||||||
|
goto exit;
|
||||||
|
l_pcFrameEndPt = l_pcFrameStartPt + u16Dlc + IVEC_VFRAME_MIN_LEN - 1;
|
||||||
|
uint8_t ucCheckSum[2];
|
||||||
|
__prv_CalculateChecksum(l_pcFrameStartPt, u16Dlc + IVEC_VFRAME_MIN_LEN, ucCheckSum);
|
||||||
|
IVEC_BSW_LOG(LOG_STRING, "Checksum: %d-%d-%d-%d", *(l_pcFrameEndPt - 1), *(l_pcFrameEndPt), ucCheckSum[0], ucCheckSum[1]);
|
||||||
|
if (ucCheckSum[0] == *(l_pcFrameEndPt - 1) && ucCheckSum[1] == *(l_pcFrameEndPt))
|
||||||
|
{
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
l_pcFrameStartPt = l_pcFrameEndPt;
|
||||||
|
l_pcFrameEndPt = NULL;
|
||||||
|
l_i32Ret = 2; // cksum failure
|
||||||
|
|
||||||
|
exit:
|
||||||
|
*pcFrameStartPt = l_pcFrameStartPt;
|
||||||
|
*pcFrameEndPt = l_pcFrameEndPt;
|
||||||
|
IVEC_BSW_LOG(LOG_STRING, "Frame :[0x%x-0x%x|0x%x-0x%x]", l_pcFrameStartPt, l_pcFrameEndPt, *pcFrameStartPt, *pcFrameEndPt);
|
||||||
|
if (l_pcFrameStartPt && l_pcFrameEndPt)
|
||||||
|
return 1;
|
||||||
|
return l_i32Ret;
|
||||||
|
}
|
||||||
2
main.c
2
main.c
|
|
@ -31,6 +31,7 @@ int main(void)
|
||||||
{
|
{
|
||||||
__enable_irq();
|
__enable_irq();
|
||||||
volatile DL_SYSCTL_RESET_CAUSE l_xResetCause = DL_SYSCTL_getResetCause();
|
volatile DL_SYSCTL_RESET_CAUSE l_xResetCause = DL_SYSCTL_getResetCause();
|
||||||
|
vMCAL_WDG_Refresh();
|
||||||
vMCAL_mcuInit();
|
vMCAL_mcuInit();
|
||||||
xMCAL_sysctlInit(IVEC_HFXT,IVEC_STANDBY0);
|
xMCAL_sysctlInit(IVEC_HFXT,IVEC_STANDBY0);
|
||||||
xMCAL_systickInit(IVEC_SYSTICK_PERIOD_1MS);
|
xMCAL_systickInit(IVEC_SYSTICK_PERIOD_1MS);
|
||||||
|
|
@ -43,6 +44,7 @@ int main(void)
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
vRTE_AppRun();
|
vRTE_AppRun();
|
||||||
|
vMCAL_WDG_Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ _Min_Stack_Size = 0x000012E8; /* required amount of stack */
|
||||||
/* Specify the memory areas */
|
/* Specify the memory areas */
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00020000
|
FLASH (RX) : ORIGIN = 0x00008000, LENGTH = 0x00018000
|
||||||
SRAM (RWX) : ORIGIN = 0x20200000, LENGTH = 0x00008000
|
SRAM (RWX) : ORIGIN = 0x20200000, LENGTH = 0x00008000
|
||||||
BCR_CONFIG (R) : ORIGIN = 0x41C00000, LENGTH = 0x00000080
|
BCR_CONFIG (R) : ORIGIN = 0x41C00000, LENGTH = 0x00000080
|
||||||
BSL_CONFIG (R) : ORIGIN = 0x41C00100, LENGTH = 0x00000080
|
BSL_CONFIG (R) : ORIGIN = 0x41C00100, LENGTH = 0x00000080
|
||||||
|
|
@ -33,7 +33,7 @@ SECTIONS
|
||||||
{
|
{
|
||||||
/* section for the interrupt vector area */
|
/* section for the interrupt vector area */
|
||||||
PROVIDE (_intvecs_base_address =
|
PROVIDE (_intvecs_base_address =
|
||||||
DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x00000000);
|
DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x00008000);
|
||||||
|
|
||||||
.intvecs (_intvecs_base_address) : AT (_intvecs_base_address) {
|
.intvecs (_intvecs_base_address) : AT (_intvecs_base_address) {
|
||||||
KEEP (*(.intvecs))
|
KEEP (*(.intvecs))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"name": "cantouart_ti",
|
||||||
|
"version": "1.1.1",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "cantouart_ti",
|
||||||
|
"version": "1.1.1",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"name": "cantouart_ti",
|
||||||
|
"version": "1.1.1",
|
||||||
|
"description": "TI_MCU_firmware",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitea.vecmocon.com/Vecmocon_Technologies/cantouart_ti.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"TI_MCU_FRIMWARE_VIM"
|
||||||
|
],
|
||||||
|
"author": "VIM",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
|
|
@ -231,6 +231,7 @@ void Default_Handler(void)
|
||||||
// // You can use this to trace the fault location in your code
|
// // You can use this to trace the fault location in your code
|
||||||
|
|
||||||
/* Enter an infinite loop. */
|
/* Enter an infinite loop. */
|
||||||
|
DL_SYSCTL_resetDevice(DL_SYSCTL_RESET_CPU);
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,173 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<configurations XML_version="1.2" id="configurations_0">
|
<configurations XML_version="1.2" id="configurations_0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<configuration XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
<configuration XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe_0" href="connections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe_0" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
|
<instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe_0" href="connections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe_0" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
<connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<instance XML_version="1.2" href="drivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
|
<instance XML_version="1.2" href="drivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<instance XML_version="1.2" href="drivers/tixds510cortexM0.xml" id="drivers" xml="tixds510cortexM0.xml" xmlpath="drivers"/>
|
<instance XML_version="1.2" href="drivers/tixds510cortexM0.xml" id="drivers" xml="tixds510cortexM0.xml" xmlpath="drivers"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<instance XML_version="1.2" href="drivers/tixds510sec_ap.xml" id="drivers" xml="tixds510sec_ap.xml" xmlpath="drivers"/>
|
<instance XML_version="1.2" href="drivers/tixds510sec_ap.xml" id="drivers" xml="tixds510sec_ap.xml" xmlpath="drivers"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<property Type="choicelist" Value="1" id="The JTAG TCLK Frequency (MHz)">
|
<property Type="choicelist" Value="1" id="The JTAG TCLK Frequency (MHz)">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<choice Name="Fixed with user specified value" value="SPECIFIC">
|
<choice Name="Fixed with user specified value" value="SPECIFIC">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<property Type="stringfield" Value="1MHz" id="-- Enter a value from 100.0kHz to 2.5MHz"/>
|
<property Type="stringfield" Value="1MHz" id="-- Enter a value from 100.0kHz to 2.5MHz"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</choice>
|
</choice>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<property Type="choicelist" Value="2" id="SWD Mode Settings">
|
<property Type="choicelist" Value="2" id="SWD Mode Settings">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<choice Name="SWD Mode - Aux COM port is target TDO pin" value="nothing"/>
|
<choice Name="SWD Mode - Aux COM port is target TDO pin" value="nothing"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<property Type="choicelist" Value="1" id="Debug Probe Selection">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<choice Name="Select by serial number" value="0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<property Type="stringfield" Value="LS4103EZ" id="-- Enter the serial number"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</choice>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</property>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<platform XML_version="1.2" id="platform_0">
|
<platform XML_version="1.2" id="platform_0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<instance XML_version="1.2" desc="MSPM0G3507_0" href="devices/MSPM0G3507.xml" id="MSPM0G3507_0" xml="MSPM0G3507.xml" xmlpath="devices"/>
|
<instance XML_version="1.2" desc="MSPM0G3507_0" href="devices/MSPM0G3507.xml" id="MSPM0G3507_0" xml="MSPM0G3507.xml" xmlpath="devices"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</platform>
|
</platform>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</connection>
|
</connection>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</configurations>
|
</configurations>
|
||||||
|
|
|
||||||
|
|
@ -158,11 +158,15 @@ void vMCAL_delayTicks(int32_t i32DelayMs)
|
||||||
*
|
*
|
||||||
* Calls the necessary functions to initialize power and GPIO configurations for the MCU.
|
* Calls the necessary functions to initialize power and GPIO configurations for the MCU.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void vMCAL_mcuInit(void)
|
void vMCAL_mcuInit(void)
|
||||||
{
|
{
|
||||||
SYSCFG_DL_initPower();
|
SYSCFG_DL_initPower();
|
||||||
|
vMCAL_WatchdogEnablePower();
|
||||||
|
// if watchDog is not initilized previoulsy in bootloader code then only initilize watchdog with 4sec timer
|
||||||
|
if(bMCAL_IsWatchdogRunning()==false)
|
||||||
|
xMCAL_WatchdogInit(MCAL_WDT_4_SEC_TIMER); // Timer Inputs can be : 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 , 24 , 32 , 40 , 48 , 56 , 64 in seconds
|
||||||
SYSCFG_DL_GPIO_init();
|
SYSCFG_DL_GPIO_init();
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Delays execution for a specified number of microseconds.
|
* @brief Delays execution for a specified number of microseconds.
|
||||||
|
|
@ -211,3 +215,23 @@ void vMCAL_softReset(void)
|
||||||
{
|
{
|
||||||
DL_SYSCTL_resetDevice(DL_SYSCTL_RESET_CPU);
|
DL_SYSCTL_resetDevice(DL_SYSCTL_RESET_CPU);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vMCAL_WDG_Refresh(void)
|
||||||
|
{
|
||||||
|
xMCAL_WatchdogReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void vMCAL_WatchdogDisablePower(void)
|
||||||
|
{
|
||||||
|
DL_WWDT_disablePower(WATCHDOG_TIMER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vMCAL_WatchdogEnablePower(void)
|
||||||
|
{
|
||||||
|
DL_WWDT_enablePower(WATCHDOG_TIMER);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool bMCAL_IsWatchdogRunning(void)
|
||||||
|
{
|
||||||
|
return DL_WWDT_isRunning(WATCHDOG_TIMER);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,26 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "ti_msp_dl_config.h"
|
#include "ti_msp_dl_config.h"
|
||||||
|
|
||||||
|
#define WATCHDOG_TIMER WWDT1
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MCAL_WDT_1_SEC_TIMER = 1,
|
||||||
|
MCAL_WDT_2_SEC_TIMER,
|
||||||
|
MCAL_WDT_3_SEC_TIMER,
|
||||||
|
MCAL_WDT_4_SEC_TIMER,
|
||||||
|
MCAL_WDT_5_SEC_TIMER,
|
||||||
|
MCAL_WDT_6_SEC_TIMER,
|
||||||
|
MCAL_WDT_7_SEC_TIMER,
|
||||||
|
MCAL_WDT_8_SEC_TIMER,
|
||||||
|
MCAL_WDT_16_SEC_TIMER = 16,
|
||||||
|
MCAL_WDT_24_SEC_TIMER = 24,
|
||||||
|
MCAL_WDT_32_SEC_TIMER = 32,
|
||||||
|
MCAL_WDT_40_SEC_TIMER = 40,
|
||||||
|
MCAL_WDT_48_SEC_TIMER = 48,
|
||||||
|
MCAL_WDT_56_SEC_TIMER = 56,
|
||||||
|
MCAL_WDT_64_SEC_TIMER = 64
|
||||||
|
}MCAL_WWDT_TIMER;
|
||||||
|
|
||||||
/* Generic Status Codes */
|
/* Generic Status Codes */
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
@ -86,5 +106,9 @@ void vMCAL_delayTicks(int32_t i32DelayMs);
|
||||||
void vMCAL_softReset(void);
|
void vMCAL_softReset(void);
|
||||||
void vMCAL_delayUs(uint32_t u32Us);
|
void vMCAL_delayUs(uint32_t u32Us);
|
||||||
IVEC_McalStatus_e xMCAL_vrefInit(void);
|
IVEC_McalStatus_e xMCAL_vrefInit(void);
|
||||||
|
void vMCAL_WDG_Refresh(void);
|
||||||
|
void vMCAL_WatchdogDisablePower(void);
|
||||||
|
void vMCAL_WatchdogEnablePower(void);
|
||||||
|
bool bMCAL_IsWatchdogRunning(void);
|
||||||
|
|
||||||
#endif /* UTILS_IVEC_UTILS_H_ */
|
#endif /* UTILS_IVEC_UTILS_H_ */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue