diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 553fdc4d..3e31969c 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -37,41 +37,41 @@ fqbn: - infineon:xmc:kit_xmc_2go_xmc1100_v1 sketch: -# - libraries/LED -# - libraries/RTC/examples/SimpleRTC + - libraries/LED + - libraries/RTC/examples/SimpleRTC - libraries/SPI - libraries/Wire -# - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino -# - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino -# - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# include: -# - fqbn: infineon:xmc:kit_xmc11_boot_001 -# sketch: -# - libraries/I2S -# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:kit_xmc_2go_xmc1100_v1 -# sketch: -# - libraries/I2S -# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:kit_xmc13_boot_001 -# sketch: -# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:kit_xmc14_2go -# sketch: -# - libraries/I2S -# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - libraries/CAN -# - fqbn: infineon:xmc:kit_xmc1400_arduino -# sketch: -# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:kit_xmc47_relax -# sketch: -# - libraries/I2S -# - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino -# - libraries/DMA -# - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino -# - libraries/CAN +include: + - fqbn: infineon:xmc:kit_xmc11_boot_001 + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: infineon:xmc:kit_xmc_2go_xmc1100_v1 + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: infineon:xmc:kit_xmc13_boot_001 + sketch: + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: infineon:xmc:kit_xmc14_2go + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - libraries/CAN + - fqbn: infineon:xmc:kit_xmc1400_arduino + sketch: + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: infineon:xmc:kit_xmc47_relax + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino + - libraries/DMA + - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino + - libraries/CAN exclude: - fqbn: infineon:xmc:kit_xmc11_boot_001 diff --git a/config/project.yml b/config/project.yml index 7b32099f..f73e214c 100644 --- a/config/project.yml +++ b/config/project.yml @@ -194,6 +194,7 @@ unit-test: query: onewire_DS18x20_board == '1:1' working_dir: extras/arduino-core-tests +########################################################################################## unit-test-digital-io-1400: - description: Compiling, flashing and monitoring digital IO unit test. command: make test_digitalio_single ENABLE_SYNC=0 @@ -231,12 +232,7 @@ unit-test: command: make test_analogio_pwm query: analogio_pwm_single_board == '2:1' working_dir: extras/arduino-core-tests - - # unit-test-iic-1400: - # - description: Compiling, flashing and monitoring timer unit test. - # command: make test_wire_connected1_pingpong - # query: iic_ping_pong_single_board == '2:1' - # working_dir: extras/arduino-core-tests + unit-test-analog-io-adc-1400: - description: Compiling, flashing and monitoring ADC unit test. command: make test_analogio_adc @@ -277,6 +273,22 @@ unit-test: query: onewire_DS18x20_board == '2:1' working_dir: extras/arduino-core-tests + unit-test-spi-pingpong-1400: + - description: Compiling, flashing and monitoring SPI pingpong slave unit test. + command: make test_spi_connected2_slavepingpong + query: spi_ping_pong_multiple_boards_slave == '1:1' + working_dir: extras/arduino-core-tests + options: + USE_CORE: + name: infineon:psoc6@0.8.1 + url: https://github.com/Infineon/arduino-core-psoc6/releases/latest/download/package_psoc6_index.json + + - description: Compiling, flashing and monitoring SPI pingpong master unit test. + command: make test_spi_connected2_masterpingpong + query: spi_ping_pong_multiple_boards_master == '2:1' + working_dir: extras/arduino-core-tests + + ######################################################################################### unit-test-digital-io-1100: - description: Compiling, flashing and monitoring digital IO unit test. @@ -315,12 +327,7 @@ unit-test: command: make test_analogio_pwm query: analogio_pwm_single_board == '3:1' working_dir: extras/arduino-core-tests - - # unit-test-iic-1400: - # - description: Compiling, flashing and monitoring timer unit test. - # command: make test_wire_connected1_pingpong - # query: iic_ping_pong_single_board == '2:1' - # working_dir: extras/arduino-core-tests + unit-test-analog-io-adc-1100: - description: Compiling, flashing and monitoring ADC unit test. command: make test_analogio_adc @@ -355,18 +362,43 @@ unit-test: query: spi_ping_pong_single_board == '3:1' working_dir: extras/arduino-core-tests -########################################################################################## unit-test-onewire-DS18x20-1100: - description: Compiling, flashing and monitoring OneWire sensor DS18B20 data. command: make test_onewire_DS18x20 query: onewire_DS18x20_board == '3:1' working_dir: extras/arduino-core-tests + + unit-test-spi-pingpong-1100: + - description: Compiling, flashing and monitoring SPI pingpong slave unit test. + command: make test_spi_connected2_slavepingpong + query: spi_ping_pong_multiple_boards_slave == '1:1' + working_dir: extras/arduino-core-tests + options: + USE_CORE: + name: infineon:psoc6@0.8.1 + url: https://github.com/Infineon/arduino-core-psoc6/releases/latest/download/package_psoc6_index.json + + - description: Compiling, flashing and monitoring SPI pingpong master unit test. + command: make test_spi_connected2_masterpingpong + query: spi_ping_pong_multiple_boards_master == '3:1' + working_dir: extras/arduino-core-tests +########################################################################################## unit-test-can-1400-2go: - description: Compiling, flashing and monitoring CAN unit test. command: make test_can_single query: can_single_board == '1:1' working_dir: extras/arduino-core-tests - + unit-test-can-multi-1400-2go: + - description: Compiling, flashing and monitoring can node 1 test. + command: make test_can_connected2_node1 + query: can_multiple_boards_node1 == '1:1' + working_dir: extras/arduino-core-tests + + - description: Compiling, flashing and monitoring can node 2 test. + command: make test_can_connected2_node2 + query: can_multiple_boards_node2 == '1:1' + working_dir: extras/arduino-core-tests + \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index b1a8e3c6..356d2a0d 100644 --- a/config/user.yml +++ b/config/user.yml @@ -28,7 +28,6 @@ unit-test: - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - - unit-test-can-1400-2go - unit-test-digital-io-1400 - unit-test-tone-1400 - unit-test-iic-pingpong-1400 @@ -40,6 +39,7 @@ unit-test: - unit-test-onewire-DS18x20-1400 - unit-test-analog-io-adc-1400 - unit-test-analog-io-pwm-1400 + # - unit-test-spi-pingpong-1400 # disable because of current shared spi slave - unit-test-digital-io-1100 - unit-test-tone-1100 @@ -52,3 +52,7 @@ unit-test: - unit-test-onewire-DS18x20-1100 - unit-test-analog-io-adc-1100 - unit-test-analog-io-pwm-1100 + # - unit-test-spi-pingpong-1100 # disable because of current shared spi slave + + - unit-test-can-1400-2go + - unit-test-can-multi-1400-2go \ No newline at end of file diff --git a/extras/arduino-core-api b/extras/arduino-core-api index 0f4e57ea..cd91833d 160000 --- a/extras/arduino-core-api +++ b/extras/arduino-core-api @@ -1 +1 @@ -Subproject commit 0f4e57ea193a00163ae59f0f0ff478feae7eb5db +Subproject commit cd91833d90b4fe50e428021ba5051e2b7ceafc84 diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index dce488b0..aa5f86c1 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit dce488b0847cc04433d4b4ea5b6126655c16af3d +Subproject commit aa5f86c103cd165c9cdc4bc4f07af9ae0ec56eb9 diff --git a/extras/arduino-examples b/extras/arduino-examples index d8debf24..f2bf63b4 160000 --- a/extras/arduino-examples +++ b/extras/arduino-examples @@ -1 +1 @@ -Subproject commit d8debf24cffd53c2932727f9d3b34695a0ed1de2 +Subproject commit f2bf63b4499fdd984891b6dff074732f3e9effaf diff --git a/libraries/DMA/src/DMA.cpp b/libraries/DMA/src/DMA.cpp index c7602c12..4db1e8b3 100644 --- a/libraries/DMA/src/DMA.cpp +++ b/libraries/DMA/src/DMA.cpp @@ -35,7 +35,7 @@ #include #include "DMA.h" -static interrupt_cb_t event_handler = NULL; +static voidFuncPtr event_handler = NULL; event_t event; void DMA::beginDMA(XMC_DMA_t *const dma) { @@ -217,7 +217,7 @@ void DMA::configDMA_P2P(XMC_DMA_t *const dma, void DMA::attachDMAInterrupt(XMC_DMA_t *const dma, uint8_t channel, - interrupt_cb_t _event_handler, + voidFuncPtr _event_handler, event_t _event) { event = _event; XMC_DMA_CH_EnableEvent(dma, channel, event); diff --git a/libraries/DMA/src/DMA.h b/libraries/DMA/src/DMA.h index 3eb31e8e..c57d9312 100644 --- a/libraries/DMA/src/DMA.h +++ b/libraries/DMA/src/DMA.h @@ -156,7 +156,7 @@ class DMA { // Interrupt configuration void attachDMAInterrupt(XMC_DMA_t *const dma, uint8_t channel, - interrupt_cb_t _event_handler, + voidFuncPtr _event_handler, event_t event); void detachDMAInterrupt(XMC_DMA_t *const dma, uint8_t channel, XMC_DMA_CH_EVENT_t event); diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index 91c9cd07..0d113b26 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -299,26 +299,24 @@ XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, .protocol_irq_service_request = 5}; - // // XMC_I2S instance - // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = - // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = - // XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - // .input_hysteresis = - // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = - // XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, - // .protocol_irq_service_request = 2}; +// XMC_I2S instance +XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, + .protocol_irq_service_request = 2}; // Serial Interrupt and event handling #ifdef __cplusplus diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index a4e7913c..4051f1ba 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -269,26 +269,24 @@ XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C0_CH0, .protocol_irq_num = (IRQn_Type)USIC0_3_IRQn, .protocol_irq_service_request = 3}; - // // XMC_I2S instance - // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = - // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = - // XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - // .input_hysteresis = - // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = - // XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, - // .protocol_irq_service_request = 2}; +// XMC_I2S instance +XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, + .protocol_irq_service_request = 2}; // Serial Interrupt and event handling #ifdef __cplusplus diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 03410783..a82a456d 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -322,26 +322,24 @@ XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, .protocol_irq_service_request = 5}; - // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = - // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = - // XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - // .input_hysteresis = - // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = - // XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .protocol_irq_num = (IRQn_Type)USIC1_2_IRQn, - // .protocol_irq_service_request = 2, - // .protocol_irq_source = XMC_SCU_IRQCTRL_USIC1_SR2_IRQ11}; +XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .protocol_irq_num = (IRQn_Type)USIC1_2_IRQn, + .protocol_irq_service_request = 2, + .protocol_irq_source = XMC_SCU_IRQCTRL_USIC1_SR2_IRQ11}; // XMC CAN instance #ifdef CAN_xmc diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 216c8f39..b5d4a134 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -575,30 +575,30 @@ XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, .protocol_irq_num = (IRQn_Type)94, .protocol_irq_service_request = 4}; - // // XMC_I2S instance - // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .protocol_irq_num = (IRQn_Type)USIC2_2_IRQn, - // .protocol_irq_service_request = 2}; - - // // XMC CAN instance - // #ifdef CAN_xmc - // XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, - // .can_node_num = XMC_NODE_NUM_1, - // .can_clock = XMC_CAN_CANCLKSRC_FPERI, - // .can_frequency = (uint32_t)144000000, - // .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, - // .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, - // .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, - // .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, - // .node_input = CAN_NODE1_RXD_P1_13, - // .irq_num = CAN0_7_IRQn, - // .irq_service_request = 7u}; - // #endif +// XMC_I2S instance +XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .protocol_irq_num = (IRQn_Type)USIC2_2_IRQn, + .protocol_irq_service_request = 2}; + + // XMC CAN instance + #ifdef CAN_xmc +XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, + .can_node_num = XMC_NODE_NUM_1, + .can_clock = XMC_CAN_CANCLKSRC_FPERI, + .can_frequency = (uint32_t)144000000, + .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, + .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, + .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, + .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, + .node_input = CAN_NODE1_RXD_P1_13, + .irq_num = CAN0_7_IRQn, + .irq_service_request = 7u}; + #endif // Serial Interrupt and event handling #ifdef __cplusplus