From adb5c3eb2d8ff705f81662c544382cef947bed3b Mon Sep 17 00:00:00 2001 From: Roy_01 Date: Fri, 20 Mar 2026 14:48:24 +0800 Subject: [PATCH] [sdk] updated sdk version: pec930_sdk-PEC930_SDK_v1.0.0-RC1 --- .gitmodules | 3 - Apps/app_demo_project/.cproject | 298 ++++++ .../.project | 2 +- .../Project.nuproject | 0 .../component.mk | 0 .../inc/isr.h | 0 .../inc/main.h | 0 .../app_demo_project}/readme.md | 4 +- .../src/isr.c | 0 .../src/main.c | 2 +- Apps/demo_project/readme.md | 10 - Common/syslog.c | 21 +- Common/syslog.h | 1 + .../DAC_ADC_Simple_BOARD_010(20250730)_2.pdf | Bin 101452 -> 0 bytes .../PB5700_EV_BOARD_SOP24(010)_20250305_M.pdf | Bin 34340 -> 0 bytes .../PB5700_EV_BOARD_SSOP24(010)_20250327.pdf | Bin 34475 -> 0 bytes .../Schematic/PEC930_EV_BOARD_SSOP24(010).pdf | Bin 0 -> 34391 bytes Docs/commit_rule.md | 161 ---- Docs/image/IDE_close_proj.jpg | Bin 0 -> 102048 bytes Docs/image/IDE_delet_recent_proj.jpg | Bin 0 -> 89068 bytes Docs/image/TortoiseGit_clone.jpg | Bin 105773 -> 0 bytes Docs/image/gitlab_login.jpg | Bin 41294 -> 0 bytes Drivers/PB5700/Flash/readme.md | 10 - Drivers/PB5700/HAL_Lib/inc/hal_comp.h | 204 ---- Drivers/PB5700/HAL_Lib/inc/hal_i2c.h | 152 --- Drivers/PB5700/HAL_Lib/src/hal_comp.c | 86 -- Drivers/PB5700/HAL_Lib/src/hal_i2c.c | 288 ------ Drivers/PB5700/component.mk | 92 -- .../BSP/StarterKit/starterkit.c | 0 .../BSP/StarterKit/starterkit.h | 0 .../Device/inc/SVD/PEC930.svd} | 276 +++++- .../pb57xx.h => PEC930/Device/inc/device.h} | 10 +- .../pb5700.h => PEC930/Device/inc/pec930.h} | 225 ++++- .../Device/inc/system_dev.h | 8 - .../Device/src/Startup/startup.S | 6 +- .../Device/src/Startup/trap.S | 0 .../{PB5700 => PEC930}/Device/src/interrupt.c | 20 +- .../{PB5700 => PEC930}/Device/src/syscalls.c | 13 - .../Device/src/system_dev.c | 2 +- .../{PB5700 => PEC930}/HAL_Lib/inc/hal_adc.h | 58 +- .../HAL_Lib/inc/hal_amisc.h | 89 +- .../PEC930/HAL_Lib/inc/hal_comp.h | 13 +- .../{PB5700 => PEC930}/HAL_Lib/inc/hal_crc.h | 0 .../{PB5700 => PEC930}/HAL_Lib/inc/hal_def.h | 2 +- .../HAL_Lib/inc/hal_device.h | 19 + .../{PB5700 => PEC930}/HAL_Lib/inc/hal_dsp.h | 0 .../HAL_Lib/inc/hal_flash.h | 0 .../{PB5700 => PEC930}/HAL_Lib/inc/hal_gpio.h | 20 +- Drivers/PEC930/HAL_Lib/inc/hal_i2c.h | 333 +++++++ .../HAL_Lib/inc/hal_lptim.h | 0 .../HAL_Lib/inc/hal_opamp.h | 1 + .../{PB5700 => PEC930}/HAL_Lib/inc/hal_pwr.h | 52 +- .../{PB5700 => PEC930}/HAL_Lib/inc/hal_spi.h | 0 .../HAL_Lib/inc/hal_syscfg.h | 12 +- .../{PB5700 => PEC930}/HAL_Lib/inc/hal_tim.h | 52 +- .../{PB5700 => PEC930}/HAL_Lib/inc/hal_uart.h | 19 +- .../{PB5700 => PEC930}/HAL_Lib/inc/hal_wdg.h | 14 +- .../{PB5700 => PEC930}/HAL_Lib/src/hal_adc.c | 34 +- .../HAL_Lib/src/hal_amisc.c | 88 +- .../PEC930/HAL_Lib/src/hal_comp.c | 10 +- .../{PB5700 => PEC930}/HAL_Lib/src/hal_crc.c | 0 .../HAL_Lib/src/hal_device.c | 0 .../{PB5700 => PEC930}/HAL_Lib/src/hal_dsp.c | 0 .../HAL_Lib/src/hal_flash.c | 16 +- .../{PB5700 => PEC930}/HAL_Lib/src/hal_gpio.c | 64 +- Drivers/PEC930/HAL_Lib/src/hal_i2c.c | 870 ++++++++++++++++++ .../HAL_Lib/src/hal_lptim.c | 6 +- .../HAL_Lib/src/hal_opamp.c | 0 .../{PB5700 => PEC930}/HAL_Lib/src/hal_pwr.c | 77 +- .../{PB5700 => PEC930}/HAL_Lib/src/hal_spi.c | 0 .../HAL_Lib/src/hal_syscfg.c | 0 .../{PB5700 => PEC930}/HAL_Lib/src/hal_tim.c | 212 +++-- .../{PB5700 => PEC930}/HAL_Lib/src/hal_uart.c | 0 .../{PB5700 => PEC930}/HAL_Lib/src/hal_wdg.c | 21 +- .../NMSIS/Core/Include/core_compatiable.h | 0 .../NMSIS/Core/Include/core_feature_base.h | 0 .../Core/Include/core_feature_bitmanip.h | 0 .../NMSIS/Core/Include/core_feature_cache.h | 0 .../NMSIS/Core/Include/core_feature_cidu.h | 0 .../NMSIS/Core/Include/core_feature_dsp.h | 6 +- .../NMSIS/Core/Include/core_feature_eclic.h | 0 .../NMSIS/Core/Include/core_feature_fpu.h | 0 .../NMSIS/Core/Include/core_feature_plic.h | 0 .../NMSIS/Core/Include/core_feature_pmp.h | 0 .../NMSIS/Core/Include/core_feature_spmp.h | 0 .../NMSIS/Core/Include/core_feature_timer.h | 0 .../NMSIS/Core/Include/core_feature_vector.h | 0 .../NMSIS/Core/Include/nmsis_bench.h | 0 .../NMSIS/Core/Include/nmsis_compiler.h | 0 .../NMSIS/Core/Include/nmsis_core.h | 0 .../NMSIS/Core/Include/nmsis_gcc.h | 0 .../NMSIS/Core/Include/nmsis_iar.h | 0 .../NMSIS/Core/Include/nmsis_version.h | 0 .../NMSIS/Core/Include/riscv_bits.h | 0 .../NMSIS/Core/Include/riscv_encoding.h | 0 Drivers/PEC930/component.mk | 92 ++ Drivers/{PB5700 => PEC930}/gcc_flashxip.ld | 0 Examples/I2C/I2C_Master_EEPROM/inc/isr.h | 59 -- Examples/I2C/I2C_Master_EEPROM/src/isr.c | 50 - Examples/I2C/I2C_Master_EEPROM/src/main.c | 401 -------- Examples/I2C/I2C_Slave_STM32/inc/isr.h | 59 -- Examples/I2C/I2C_Slave_STM32/readme.md | 13 - Examples/I2C/I2C_Slave_STM32/src/isr.c | 50 - Examples/I2C/I2C_Slave_STM32/src/main.c | 176 ---- Examples/adc/adc_conv_mode/.cproject | 54 +- Examples/adc/adc_conv_mode/Project.nuproject | 2 +- Examples/adc/adc_conv_mode/component.mk | 2 +- Examples/adc/adc_conv_mode/readme.md | 358 ++++++- Examples/adc/adc_conv_mode/src/main.c | 63 +- Examples/adc/adc_for_TI/.cproject | 293 ------ Examples/adc/adc_for_TI/readme.md | 17 - Examples/adc/adc_for_TI/src/main.c | 77 -- .../adc/adc_single_conv}/.cproject | 52 +- .../adc_single_conv}/.project | 0 .../adc_single_conv}/Project.nuproject | 0 .../adc_single_conv}/component.mk | 0 .../{adc_for_TI => adc_single_conv}/inc/isr.h | 0 .../adc_single_conv}/inc/main.h | 0 .../readme.md | 26 + .../{adc_for_TI => adc_single_conv}/src/isr.c | 0 .../src/main.c | 114 ++- Examples/adc/adc_trigger_src/.cproject | 294 ------ Examples/adc/adc_trigger_src/readme.md | 34 - Examples/adc/adc_trigger_src/src/main.c | 111 --- .../adc_trigger_src_io}/.cproject | 52 +- .../adc_trigger_src_io}/.project | 0 .../adc_trigger_src_io}/Project.nuproject | 0 .../adc_trigger_src_io}/component.mk | 0 .../inc/isr.h | 0 .../adc_trigger_src_io}/inc/main.h | 0 Examples/adc/adc_trigger_src_io/readme.md | 108 +++ .../src/isr.c | 0 Examples/adc/adc_trigger_src_io/src/main.c | 223 +++++ Examples/adc/adc_verify_wr_rd_reg/.cproject | 293 ------ Examples/adc/adc_verify_wr_rd_reg/inc/isr.h | 59 -- Examples/adc/adc_verify_wr_rd_reg/readme.md | 284 ------ Examples/adc/adc_verify_wr_rd_reg/src/isr.c | 51 - Examples/adc/adc_verify_wr_rd_reg/src/main.c | 209 ----- Examples/amisc/dac_test/.cproject | 293 ------ Examples/amisc/dac_test/Project.nuproject | 25 - Examples/amisc/dac_test/inc/isr.h | 51 - Examples/amisc/dac_test/src/main.c | 149 --- Examples/comp/Compare_GpioVsVref/.cproject | 293 ------ .../comp/Compare_GpioVsVref/Project.nuproject | 25 - Examples/comp/Compare_GpioVsVref/inc/isr.h | 51 - Examples/comp/Compare_GpioVsVref/readme.md | 17 - Examples/comp/Compare_GpioVsVref/src/main.c | 113 --- Examples/comp/Compare_for_TI/.cproject | 293 ------ .../comp/Compare_for_TI/Project.nuproject | 25 - Examples/comp/Compare_for_TI/readme.md | 17 - Examples/comp/Compare_for_TI/src/main.c | 109 --- Examples/comp/comp_test/.cproject | 293 ------ Examples/comp/comp_test/Project.nuproject | 25 - Examples/comp/comp_test/component.mk | 16 - Examples/comp/comp_test/inc/isr.h | 51 - Examples/comp/comp_test/inc/main.h | 51 - Examples/comp/comp_test/src/main.c | 125 --- Examples/crc/crc_calculate/.cproject | 53 +- Examples/crc/crc_calculate/Project.nuproject | 4 +- .../dac_base}/.cproject | 52 +- .../{adc/adc_for_TI => dac/dac_base}/.project | 0 .../dac_base}/Project.nuproject | 2 +- .../adc_for_TI => dac/dac_base}/component.mk | 0 .../dac_base}/inc/isr.h | 0 .../adc_for_TI => dac/dac_base}/inc/main.h | 0 Examples/dac/dac_base/readme.md | 62 ++ .../dac_base}/src/isr.c | 0 .../sys_exception => dac/dac_base}/src/main.c | 57 +- Examples/dsp/dsp_divide/.cproject | 53 +- Examples/dsp/dsp_divide/Project.nuproject | 4 +- Examples/dsp/dsp_sqrt/.cproject | 53 +- Examples/dsp/dsp_sqrt/Project.nuproject | 4 +- Examples/flash/flash_prog_erase/.cproject | 53 +- .../flash/flash_prog_erase/Project.nuproject | 4 +- Examples/flash/flash_prog_erase/inc/main.h | 2 +- Examples/flash/flash_prog_erase/readme.md | 44 +- Examples/flash/flash_prog_erase/src/main.c | 65 +- .../flash/flash_prog_erase_nvr/component.mk | 16 - .../flash/flash_prog_erase_nvr/inc/main.h | 57 -- Examples/flash/flash_prog_erase_nvr/readme.md | 126 --- .../flash/flash_prog_erase_nvr/src/main.c | 310 ------- Examples/flash/flash_set_latency/.cproject | 293 ------ Examples/flash/flash_set_latency/.project | 54 -- .../flash/flash_set_latency/Project.nuproject | 25 - Examples/flash/flash_set_latency/component.mk | 16 - Examples/flash/flash_set_latency/inc/main.h | 51 - Examples/flash/flash_set_latency/readme.md | 36 - Examples/flash/flash_set_latency/src/main.c | 111 --- Examples/flash/flash_sram_run/.cproject | 293 ------ Examples/flash/flash_sram_run/.project | 54 -- .../flash/flash_sram_run/Project.nuproject | 25 - Examples/flash/flash_sram_run/component.mk | 16 - Examples/flash/flash_sram_run/inc/main.h | 51 - Examples/flash/flash_sram_run/readme.md | 48 - Examples/flash/flash_sram_run/src/isr.c | 39 - Examples/flash/flash_sram_run/src/main.c | 104 --- Examples/flash/flash_status_flags/.cproject | 293 ------ Examples/flash/flash_status_flags/.project | 54 -- .../flash_status_flags/Project.nuproject | 25 - .../flash/flash_status_flags/component.mk | 16 - Examples/flash/flash_status_flags/inc/main.h | 51 - Examples/flash/flash_status_flags/readme.md | 107 --- Examples/flash/flash_status_flags/src/isr.c | 39 - Examples/flash/flash_status_flags/src/main.c | 236 ----- Examples/gpio/gpio_interrupt/.cproject | 53 +- .../gpio/gpio_interrupt/Project.nuproject | 4 +- Examples/gpio/gpio_interrupt/readme.md | 65 +- Examples/gpio/gpio_interrupt/src/main.c | 48 +- Examples/gpio/gpio_toggle/.cproject | 53 +- Examples/gpio/gpio_toggle/Project.nuproject | 4 +- Examples/gpio/gpio_toggle/readme.md | 41 +- Examples/gpio/gpio_toggle/src/main.c | 20 +- .../i2c_mster_transceiver}/.cproject | 54 +- .../i2c_mster_transceiver}/.project | 0 .../i2c_mster_transceiver}/Project.nuproject | 2 +- .../i2c_mster_transceiver}/component.mk | 0 .../i2c_mster_transceiver}/inc/isr.h | 0 .../i2c_mster_transceiver}/inc/main.h | 0 Examples/i2c/i2c_mster_transceiver/readme.md | 78 ++ .../i2c_mster_transceiver}/src/isr.c | 0 Examples/i2c/i2c_mster_transceiver/src/main.c | 211 +++++ Examples/i2c/i2c_slave_transceiver/.cproject | 294 ++++++ .../i2c_slave_transceiver}/.project | 0 .../i2c_slave_transceiver}/Project.nuproject | 4 +- .../i2c_slave_transceiver}/component.mk | 0 .../i2c_slave_transceiver}/inc/isr.h | 0 .../i2c_slave_transceiver}/inc/main.h | 0 Examples/i2c/i2c_slave_transceiver/readme.md | 67 ++ .../i2c_slave_transceiver}/src/isr.c | 0 Examples/i2c/i2c_slave_transceiver/src/main.c | 210 +++++ Examples/lptim/lptim_count/.cproject | 53 +- Examples/lptim/lptim_count/Project.nuproject | 4 +- Examples/lptim/lptim_count/readme.md | 6 +- .../lptim/lptim_match_Interrupt/.cproject | 53 +- .../lptim_match_Interrupt/Project.nuproject | 4 +- .../lptim/lptim_match_Interrupt/readme.md | 6 +- .../lptim/lptim_match_Interrupt/src/main.c | 4 + Examples/lptim/lptim_prescaler/.cproject | 293 ------ Examples/lptim/lptim_prescaler/.project | 54 -- .../lptim/lptim_prescaler/Project.nuproject | 25 - Examples/lptim/lptim_prescaler/component.mk | 16 - Examples/lptim/lptim_prescaler/inc/main.h | 51 - Examples/lptim/lptim_prescaler/readme.md | 17 - Examples/lptim/lptim_prescaler/src/isr.c | 39 - Examples/lvd_lvr/lvd_lvr/.cproject | 294 ++++++ .../lvd_lvr}/.project | 0 .../lvd_lvr}/Project.nuproject | 4 +- .../lvd_lvr}/component.mk | 0 .../lvd_lvr}/inc/isr.h | 0 .../lvd_lvr}/inc/main.h | 0 Examples/lvd_lvr/lvd_lvr/readme.md | 21 + .../lvd_lvr}/src/isr.c | 0 .../lvd_lvr}/src/main.c | 89 +- Examples/pga/pga_src_internal/.cproject | 294 ++++++ .../pga_src_internal}/.project | 0 .../pga/pga_src_internal/Project.nuproject | 25 + .../pga_src_internal}/component.mk | 0 .../pga_src_internal}/inc/isr.h | 0 .../pga_src_internal}/inc/main.h | 0 Examples/pga/pga_src_internal/readme.md | 114 +++ .../pga_src_internal}/src/isr.c | 0 Examples/pga/pga_src_internal/src/main.c | 188 ++++ Examples/pga/pga_src_io/.cproject | 294 ++++++ .../pga_src_io}/.project | 0 Examples/pga/pga_src_io/Project.nuproject | 25 + .../pga_src_io}/component.mk | 0 .../pga_src_io}/inc/isr.h | 0 .../pga_src_io}/inc/main.h | 0 Examples/pga/pga_src_io/readme.md | 108 +++ .../pga_src_io}/src/isr.c | 0 Examples/pga/pga_src_io/src/main.c | 220 +++++ Examples/pga/pga_test/.cproject | 293 ------ Examples/pga/pga_test/.project | 54 -- Examples/pga/pga_test/Project.nuproject | 25 - Examples/pga/pga_test/component.mk | 16 - Examples/pga/pga_test/inc/main.h | 51 - Examples/pga/pga_test/src/main.c | 121 --- Examples/pga/pga_verify_wr_rd_reg/.cproject | 293 ------ Examples/pga/pga_verify_wr_rd_reg/.project | 54 -- .../pga_verify_wr_rd_reg/Project.nuproject | 25 - Examples/pga/pga_verify_wr_rd_reg/inc/isr.h | 59 -- Examples/pga/pga_verify_wr_rd_reg/inc/main.h | 51 - Examples/pga/pga_verify_wr_rd_reg/readme.md | 44 - Examples/pga/pga_verify_wr_rd_reg/src/isr.c | 51 - Examples/pga/pga_verify_wr_rd_reg/src/main.c | 112 --- Examples/pwr/pwr_sleep_mode/.cproject | 53 +- Examples/pwr/pwr_sleep_mode/Project.nuproject | 4 +- Examples/pwr/pwr_sleep_mode/readme.md | 204 +++- Examples/pwr/pwr_sleep_mode/src/main.c | 316 ++++++- Examples/spi/spi_fifo/.cproject | 293 ------ Examples/spi/spi_fifo/.project | 54 -- Examples/spi/spi_fifo/Project.nuproject | 25 - Examples/spi/spi_fifo/component.mk | 16 - Examples/spi/spi_fifo/inc/isr.h | 50 - Examples/spi/spi_fifo/inc/main.h | 51 - Examples/spi/spi_fifo/readme.md | 18 - Examples/spi/spi_fifo/src/isr.c | 39 - Examples/spi/spi_fifo/src/main.c | 141 --- Examples/spi/spi_interrupt/.cproject | 293 ------ Examples/spi/spi_interrupt/.project | 54 -- Examples/spi/spi_interrupt/Project.nuproject | 25 - Examples/spi/spi_interrupt/component.mk | 16 - Examples/spi/spi_interrupt/inc/isr.h | 50 - Examples/spi/spi_interrupt/inc/main.h | 51 - Examples/spi/spi_interrupt/readme.md | 17 - Examples/spi/spi_interrupt/src/isr.c | 39 - Examples/spi/spi_interrupt/src/main.c | 358 ------- Examples/spi/spi_io_af/.cproject | 293 ------ Examples/spi/spi_io_af/.project | 54 -- Examples/spi/spi_io_af/Project.nuproject | 25 - Examples/spi/spi_io_af/component.mk | 16 - Examples/spi/spi_io_af/inc/isr.h | 50 - Examples/spi/spi_io_af/inc/main.h | 51 - Examples/spi/spi_io_af/readme.md | 36 - Examples/spi/spi_io_af/src/isr.c | 39 - Examples/spi/spi_io_af/src/main.c | 168 ---- Examples/spi/spi_manual/.cproject | 293 ------ Examples/spi/spi_manual/.project | 54 -- Examples/spi/spi_manual/Project.nuproject | 25 - Examples/spi/spi_manual/component.mk | 16 - Examples/spi/spi_manual/inc/isr.h | 50 - Examples/spi/spi_manual/inc/main.h | 51 - Examples/spi/spi_manual/readme.md | 22 - Examples/spi/spi_manual/src/isr.c | 39 - Examples/spi/spi_manual/src/main.c | 129 --- Examples/spi/spi_master/.cproject | 294 ++++++ .../spi_master}/.project | 0 Examples/spi/spi_master/Project.nuproject | 25 + .../spi_master}/component.mk | 0 .../spi_master}/inc/isr.h | 0 .../spi_master}/inc/main.h | 0 .../spi/{spi_send => spi_master}/readme.md | 2 +- .../spi_master}/src/isr.c | 0 .../spi/{spi_send => spi_master}/src/main.c | 30 +- Examples/spi/spi_send/.cproject | 293 ------ Examples/spi/spi_send/.project | 54 -- Examples/spi/spi_send/Project.nuproject | 25 - Examples/spi/spi_send/component.mk | 16 - Examples/spi/spi_send/inc/isr.h | 50 - Examples/spi/spi_send/inc/main.h | 51 - Examples/spi/spi_send/src/isr.c | 39 - Examples/spi/spi_slave/.cproject | 53 +- Examples/spi/spi_slave/Project.nuproject | 4 +- Examples/spi/spi_slave/readme.md | 4 +- Examples/spi/spi_slave/src/main.c | 31 +- Examples/system/sys_exception/.cproject | 293 ------ Examples/system/sys_exception/.project | 54 -- .../system/sys_exception/Project.nuproject | 25 - Examples/system/sys_exception/component.mk | 16 - Examples/system/sys_exception/inc/isr.h | 50 - Examples/system/sys_exception/inc/main.h | 51 - Examples/system/sys_exception/readme.md | 26 - Examples/system/sys_exception/src/isr.c | 39 - Examples/system/sys_mco/.cproject | 53 +- Examples/system/sys_mco/Project.nuproject | 4 +- Examples/system/sys_mco/readme.md | 6 +- Examples/system/sys_mco/src/main.c | 4 +- Examples/system/sys_tick_src/component.mk | 16 - Examples/system/sys_tick_src/inc/isr.h | 50 - Examples/system/sys_tick_src/inc/main.h | 51 - Examples/system/sys_tick_src/readme.md | 54 -- Examples/system/sys_tick_src/src/isr.c | 39 - Examples/system/sys_tick_src/src/main.c | 126 --- Examples/system/sys_tick_swi/.cproject | 294 ++++++ .../sys_tick_swi}/.project | 0 .../system/sys_tick_swi/Project.nuproject | 25 + Examples/systick/systick_count/.cproject | 293 ------ Examples/systick/systick_count/.project | 54 -- .../systick/systick_count/Project.nuproject | 25 - Examples/systick/systick_count/component.mk | 16 - Examples/systick/systick_count/inc/isr.h | 50 - Examples/systick/systick_count/inc/main.h | 51 - Examples/systick/systick_count/readme.md | 17 - Examples/systick/systick_count/src/isr.c | 39 - Examples/systick/systick_count/src/main.c | 82 -- Examples/systick/systick_interrupt/.cproject | 293 ------ Examples/systick/systick_interrupt/.project | 54 -- .../systick_interrupt/Project.nuproject | 25 - .../systick/systick_interrupt/component.mk | 16 - Examples/systick/systick_interrupt/inc/isr.h | 50 - Examples/systick/systick_interrupt/inc/main.h | 51 - Examples/systick/systick_interrupt/readme.md | 20 - Examples/systick/systick_interrupt/src/isr.c | 39 - Examples/systick/systick_interrupt/src/main.c | 124 --- .../systick/systick_soft_interrupt/.cproject | 293 ------ .../systick/systick_soft_interrupt/.project | 54 -- .../systick_soft_interrupt/Project.nuproject | 25 - .../systick_soft_interrupt/component.mk | 16 - .../systick/systick_soft_interrupt/inc/isr.h | 50 - .../systick/systick_soft_interrupt/inc/main.h | 51 - .../systick/systick_soft_interrupt/readme.md | 16 - .../systick/systick_soft_interrupt/src/isr.c | 39 - .../systick/systick_soft_interrupt/src/main.c | 87 -- Examples/template/demo_project/.cproject | 52 +- Examples/template/demo_project/readme.md | 4 +- Examples/tim/tim_6StepOutput/.cproject | 53 +- .../tim/tim_6StepOutput/Project.nuproject | 4 +- Examples/tim/tim_6StepOutput/readme.md | 2 +- Examples/tim/tim_ETRFClearOCxREF/.cproject | 293 ------ Examples/tim/tim_ETRFClearOCxREF/.project | 54 -- .../tim/tim_ETRFClearOCxREF/Project.nuproject | 25 - Examples/tim/tim_ETRFClearOCxREF/component.mk | 16 - Examples/tim/tim_ETRFClearOCxREF/inc/isr.h | 50 - Examples/tim/tim_ETRFClearOCxREF/inc/main.h | 51 - Examples/tim/tim_ETRFClearOCxREF/readme.md | 14 - Examples/tim/tim_ETRFClearOCxREF/src/isr.c | 39 - Examples/tim/tim_ETRFClearOCxREF/src/main.c | 113 --- Examples/tim/tim_InputCapture/.cproject | 53 +- .../tim/tim_InputCapture/Project.nuproject | 4 +- Examples/tim/tim_InputCapture/readme.md | 2 +- Examples/tim/tim_InputCapture/src/main.c | 21 +- Examples/tim/tim_Synchro/.cproject | 293 ------ Examples/tim/tim_Synchro/.project | 54 -- Examples/tim/tim_Synchro/Project.nuproject | 25 - Examples/tim/tim_Synchro/component.mk | 16 - Examples/tim/tim_Synchro/inc/isr.h | 50 - Examples/tim/tim_Synchro/inc/main.h | 51 - Examples/tim/tim_Synchro/readme.md | 19 - Examples/tim/tim_Synchro/src/isr.c | 39 - Examples/tim/tim_Synchro/src/main.c | 137 --- Examples/tim/tim_clk_sel/.cproject | 293 ------ Examples/tim/tim_clk_sel/.project | 54 -- Examples/tim/tim_clk_sel/Project.nuproject | 25 - Examples/tim/tim_clk_sel/component.mk | 16 - Examples/tim/tim_clk_sel/inc/isr.h | 50 - Examples/tim/tim_clk_sel/inc/main.h | 51 - Examples/tim/tim_clk_sel/readme.md | 16 - Examples/tim/tim_clk_sel/src/isr.c | 39 - Examples/tim/tim_clk_sel/src/main.c | 146 --- Examples/tim/tim_encoder/.cproject | 293 ------ Examples/tim/tim_encoder/.project | 54 -- Examples/tim/tim_encoder/Project.nuproject | 25 - Examples/tim/tim_encoder/component.mk | 16 - Examples/tim/tim_encoder/inc/isr.h | 50 - Examples/tim/tim_encoder/inc/main.h | 51 - Examples/tim/tim_encoder/readme.md | 19 - Examples/tim/tim_encoder/src/isr.c | 39 - Examples/tim/tim_encoder/src/main.c | 114 --- Examples/tim/tim_forceOutput/.cproject | 53 +- .../tim/tim_forceOutput/Project.nuproject | 4 +- Examples/tim/tim_forceOutput/readme.md | 4 +- Examples/tim/tim_forceOutput/src/main.c | 9 + Examples/tim/tim_onePulseOutput/.cproject | 293 ------ Examples/tim/tim_onePulseOutput/.project | 54 -- .../tim/tim_onePulseOutput/Project.nuproject | 25 - Examples/tim/tim_onePulseOutput/component.mk | 16 - Examples/tim/tim_onePulseOutput/inc/isr.h | 50 - Examples/tim/tim_onePulseOutput/inc/main.h | 51 - Examples/tim/tim_onePulseOutput/readme.md | 13 - Examples/tim/tim_onePulseOutput/src/isr.c | 39 - Examples/tim/tim_onePulseOutput/src/main.c | 99 -- Examples/tim/tim_outputCompare/.cproject | 53 +- .../tim/tim_outputCompare/Project.nuproject | 4 +- Examples/tim/tim_outputCompare/readme.md | 2 +- Examples/tim/tim_outputCompare/src/main.c | 18 +- Examples/tim/tim_pwm_output/.cproject | 53 +- Examples/tim/tim_pwm_output/Project.nuproject | 4 +- Examples/tim/tim_pwm_output/readme.md | 4 +- Examples/tim/tim_pwm_output/src/main.c | 8 +- Examples/tim/tim_xorInput/.cproject | 293 ------ Examples/tim/tim_xorInput/.project | 54 -- Examples/tim/tim_xorInput/Project.nuproject | 25 - Examples/tim/tim_xorInput/component.mk | 16 - Examples/tim/tim_xorInput/inc/isr.h | 50 - Examples/tim/tim_xorInput/inc/main.h | 51 - Examples/tim/tim_xorInput/readme.md | 19 - Examples/tim/tim_xorInput/src/isr.c | 39 - Examples/tim/tim_xorInput/src/main.c | 121 --- Examples/uart/uart_Interrupt/.cproject | 71 +- .../uart/uart_Interrupt/Project.nuproject | 10 +- Examples/uart/uart_Interrupt/readme.md | 42 +- Examples/uart/uart_Interrupt/src/isr.c | 11 - Examples/uart/uart_Interrupt/src/main.c | 182 ++-- Examples/uart/uart_polling/.cproject | 52 +- Examples/uart/uart_polling/readme.md | 35 +- Examples/uart/uart_polling/src/main.c | 82 +- Examples/wdg/wdg_count/.cproject | 53 +- Examples/wdg/wdg_count/Project.nuproject | 4 +- Examples/wdg/wdg_count/readme.md | 32 +- Examples/wdg/wdg_count/src/main.c | 91 +- Examples/wdg/wdg_lock/.cproject | 293 ------ Examples/wdg/wdg_lock/.project | 54 -- Examples/wdg/wdg_lock/Project.nuproject | 25 - Examples/wdg/wdg_lock/component.mk | 16 - Examples/wdg/wdg_lock/inc/isr.h | 50 - Examples/wdg/wdg_lock/inc/main.h | 51 - Examples/wdg/wdg_lock/readme.md | 17 - Examples/wdg/wdg_lock/src/isr.c | 39 - Examples/wdg/wdg_lock/src/main.c | 114 --- Makefile | 17 +- README.md | 68 +- .../scripts/target/{pb5700.cfg => pec930.cfg} | 2 +- .../Profiles/Project_Debug_OpenOCD.launch | 4 +- .../Profiles/Project_Debug_jLink.launch | 80 -- 494 files changed, 8455 insertions(+), 22700 deletions(-) delete mode 100644 .gitmodules create mode 100644 Apps/app_demo_project/.cproject rename Apps/{demo_project => app_demo_project}/.project (98%) rename Apps/{demo_project => app_demo_project}/Project.nuproject (100%) rename Apps/{demo_project => app_demo_project}/component.mk (100%) rename Apps/{demo_project => app_demo_project}/inc/isr.h (100%) rename Apps/{demo_project => app_demo_project}/inc/main.h (100%) rename {Examples/I2C/I2C_Master_EEPROM => Apps/app_demo_project}/readme.md (56%) rename Apps/{demo_project => app_demo_project}/src/isr.c (100%) rename Apps/{demo_project => app_demo_project}/src/main.c (97%) delete mode 100644 Apps/demo_project/readme.md delete mode 100644 Docs/Schematic/DAC_ADC_Simple_BOARD_010(20250730)_2.pdf delete mode 100644 Docs/Schematic/PB5700_EV_BOARD_SOP24(010)_20250305_M.pdf delete mode 100644 Docs/Schematic/PB5700_EV_BOARD_SSOP24(010)_20250327.pdf create mode 100644 Docs/Schematic/PEC930_EV_BOARD_SSOP24(010).pdf delete mode 100644 Docs/commit_rule.md create mode 100644 Docs/image/IDE_close_proj.jpg create mode 100644 Docs/image/IDE_delet_recent_proj.jpg delete mode 100644 Docs/image/TortoiseGit_clone.jpg delete mode 100644 Docs/image/gitlab_login.jpg delete mode 100644 Drivers/PB5700/Flash/readme.md delete mode 100644 Drivers/PB5700/HAL_Lib/inc/hal_comp.h delete mode 100644 Drivers/PB5700/HAL_Lib/inc/hal_i2c.h delete mode 100644 Drivers/PB5700/HAL_Lib/src/hal_comp.c delete mode 100644 Drivers/PB5700/HAL_Lib/src/hal_i2c.c delete mode 100644 Drivers/PB5700/component.mk rename Drivers/{PB5700 => PEC930}/BSP/StarterKit/starterkit.c (100%) rename Drivers/{PB5700 => PEC930}/BSP/StarterKit/starterkit.h (100%) rename Drivers/{PB5700/Device/inc/SVD/PB5700.svd => PEC930/Device/inc/SVD/PEC930.svd} (97%) rename Drivers/{PB5700/Device/inc/pb57xx.h => PEC930/Device/inc/device.h} (89%) rename Drivers/{PB5700/Device/inc/pb5700.h => PEC930/Device/inc/pec930.h} (97%) rename Drivers/{PB5700 => PEC930}/Device/inc/system_dev.h (96%) rename Drivers/{PB5700 => PEC930}/Device/src/Startup/startup.S (95%) rename Drivers/{PB5700 => PEC930}/Device/src/Startup/trap.S (100%) rename Drivers/{PB5700 => PEC930}/Device/src/interrupt.c (80%) rename Drivers/{PB5700 => PEC930}/Device/src/syscalls.c (94%) rename Drivers/{PB5700 => PEC930}/Device/src/system_dev.c (99%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_adc.h (90%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_amisc.h (79%) rename Examples/pga/pga_test/inc/isr.h => Drivers/PEC930/HAL_Lib/inc/hal_comp.h (88%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_crc.h (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_def.h (99%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_device.h (86%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_dsp.h (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_flash.h (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_gpio.h (94%) create mode 100644 Drivers/PEC930/HAL_Lib/inc/hal_i2c.h rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_lptim.h (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_opamp.h (98%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_pwr.h (66%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_spi.h (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_syscfg.h (98%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_tim.h (91%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_uart.h (86%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/inc/hal_wdg.h (87%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_adc.c (87%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_amisc.c (64%) rename Examples/pga/pga_test/src/isr.c => Drivers/PEC930/HAL_Lib/src/hal_comp.c (90%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_crc.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_device.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_dsp.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_flash.c (95%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_gpio.c (83%) create mode 100644 Drivers/PEC930/HAL_Lib/src/hal_i2c.c rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_lptim.c (96%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_opamp.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_pwr.c (54%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_spi.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_syscfg.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_tim.c (91%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_uart.c (100%) rename Drivers/{PB5700 => PEC930}/HAL_Lib/src/hal_wdg.c (90%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_compatiable.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_base.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_bitmanip.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_cache.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_cidu.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_dsp.h (99%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_eclic.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_fpu.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_plic.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_pmp.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_spmp.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_timer.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/core_feature_vector.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/nmsis_bench.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/nmsis_compiler.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/nmsis_core.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/nmsis_gcc.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/nmsis_iar.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/nmsis_version.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/riscv_bits.h (100%) rename Drivers/{PB5700 => PEC930}/NMSIS/Core/Include/riscv_encoding.h (100%) create mode 100644 Drivers/PEC930/component.mk rename Drivers/{PB5700 => PEC930}/gcc_flashxip.ld (100%) delete mode 100644 Examples/I2C/I2C_Master_EEPROM/inc/isr.h delete mode 100644 Examples/I2C/I2C_Master_EEPROM/src/isr.c delete mode 100644 Examples/I2C/I2C_Master_EEPROM/src/main.c delete mode 100644 Examples/I2C/I2C_Slave_STM32/inc/isr.h delete mode 100644 Examples/I2C/I2C_Slave_STM32/readme.md delete mode 100644 Examples/I2C/I2C_Slave_STM32/src/isr.c delete mode 100644 Examples/I2C/I2C_Slave_STM32/src/main.c delete mode 100644 Examples/adc/adc_for_TI/.cproject delete mode 100644 Examples/adc/adc_for_TI/readme.md delete mode 100644 Examples/adc/adc_for_TI/src/main.c rename {Apps/demo_project => Examples/adc/adc_single_conv}/.cproject (95%) rename Examples/{I2C/I2C_Master_EEPROM => adc/adc_single_conv}/.project (100%) rename Examples/{I2C/I2C_Master_EEPROM => adc/adc_single_conv}/Project.nuproject (100%) rename Examples/{I2C/I2C_Master_EEPROM => adc/adc_single_conv}/component.mk (100%) rename Examples/adc/{adc_for_TI => adc_single_conv}/inc/isr.h (100%) rename Examples/{I2C/I2C_Master_EEPROM => adc/adc_single_conv}/inc/main.h (100%) rename Examples/adc/{adc_single_conv_interrupt => adc_single_conv}/readme.md (59%) rename Examples/adc/{adc_for_TI => adc_single_conv}/src/isr.c (100%) rename Examples/adc/{adc_single_conv_interrupt => adc_single_conv}/src/main.c (51%) delete mode 100644 Examples/adc/adc_trigger_src/.cproject delete mode 100644 Examples/adc/adc_trigger_src/readme.md delete mode 100644 Examples/adc/adc_trigger_src/src/main.c rename Examples/{I2C/I2C_Master_EEPROM => adc/adc_trigger_src_io}/.cproject (95%) rename Examples/{I2C/I2C_Slave_STM32 => adc/adc_trigger_src_io}/.project (100%) rename Examples/{I2C/I2C_Slave_STM32 => adc/adc_trigger_src_io}/Project.nuproject (100%) rename Examples/{I2C/I2C_Slave_STM32 => adc/adc_trigger_src_io}/component.mk (100%) rename Examples/adc/{adc_single_conv_interrupt => adc_trigger_src_io}/inc/isr.h (100%) rename Examples/{I2C/I2C_Slave_STM32 => adc/adc_trigger_src_io}/inc/main.h (100%) create mode 100644 Examples/adc/adc_trigger_src_io/readme.md rename Examples/adc/{adc_single_conv_interrupt => adc_trigger_src_io}/src/isr.c (100%) create mode 100644 Examples/adc/adc_trigger_src_io/src/main.c delete mode 100644 Examples/adc/adc_verify_wr_rd_reg/.cproject delete mode 100644 Examples/adc/adc_verify_wr_rd_reg/inc/isr.h delete mode 100644 Examples/adc/adc_verify_wr_rd_reg/readme.md delete mode 100644 Examples/adc/adc_verify_wr_rd_reg/src/isr.c delete mode 100644 Examples/adc/adc_verify_wr_rd_reg/src/main.c delete mode 100644 Examples/amisc/dac_test/.cproject delete mode 100644 Examples/amisc/dac_test/Project.nuproject delete mode 100644 Examples/amisc/dac_test/inc/isr.h delete mode 100644 Examples/amisc/dac_test/src/main.c delete mode 100644 Examples/comp/Compare_GpioVsVref/.cproject delete mode 100644 Examples/comp/Compare_GpioVsVref/Project.nuproject delete mode 100644 Examples/comp/Compare_GpioVsVref/inc/isr.h delete mode 100644 Examples/comp/Compare_GpioVsVref/readme.md delete mode 100644 Examples/comp/Compare_GpioVsVref/src/main.c delete mode 100644 Examples/comp/Compare_for_TI/.cproject delete mode 100644 Examples/comp/Compare_for_TI/Project.nuproject delete mode 100644 Examples/comp/Compare_for_TI/readme.md delete mode 100644 Examples/comp/Compare_for_TI/src/main.c delete mode 100644 Examples/comp/comp_test/.cproject delete mode 100644 Examples/comp/comp_test/Project.nuproject delete mode 100644 Examples/comp/comp_test/component.mk delete mode 100644 Examples/comp/comp_test/inc/isr.h delete mode 100644 Examples/comp/comp_test/inc/main.h delete mode 100644 Examples/comp/comp_test/src/main.c rename Examples/{I2C/I2C_Slave_STM32 => dac/dac_base}/.cproject (95%) rename Examples/{adc/adc_for_TI => dac/dac_base}/.project (100%) rename Examples/{adc/adc_single_conv_interrupt => dac/dac_base}/Project.nuproject (89%) rename Examples/{adc/adc_for_TI => dac/dac_base}/component.mk (100%) rename Examples/{adc/adc_trigger_src => dac/dac_base}/inc/isr.h (100%) rename Examples/{adc/adc_for_TI => dac/dac_base}/inc/main.h (100%) create mode 100644 Examples/dac/dac_base/readme.md rename Examples/{adc/adc_trigger_src => dac/dac_base}/src/isr.c (100%) rename Examples/{system/sys_exception => dac/dac_base}/src/main.c (61%) delete mode 100644 Examples/flash/flash_prog_erase_nvr/component.mk delete mode 100644 Examples/flash/flash_prog_erase_nvr/inc/main.h delete mode 100644 Examples/flash/flash_prog_erase_nvr/readme.md delete mode 100644 Examples/flash/flash_prog_erase_nvr/src/main.c delete mode 100644 Examples/flash/flash_set_latency/.cproject delete mode 100644 Examples/flash/flash_set_latency/.project delete mode 100644 Examples/flash/flash_set_latency/Project.nuproject delete mode 100644 Examples/flash/flash_set_latency/component.mk delete mode 100644 Examples/flash/flash_set_latency/inc/main.h delete mode 100644 Examples/flash/flash_set_latency/readme.md delete mode 100644 Examples/flash/flash_set_latency/src/main.c delete mode 100644 Examples/flash/flash_sram_run/.cproject delete mode 100644 Examples/flash/flash_sram_run/.project delete mode 100644 Examples/flash/flash_sram_run/Project.nuproject delete mode 100644 Examples/flash/flash_sram_run/component.mk delete mode 100644 Examples/flash/flash_sram_run/inc/main.h delete mode 100644 Examples/flash/flash_sram_run/readme.md delete mode 100644 Examples/flash/flash_sram_run/src/isr.c delete mode 100644 Examples/flash/flash_sram_run/src/main.c delete mode 100644 Examples/flash/flash_status_flags/.cproject delete mode 100644 Examples/flash/flash_status_flags/.project delete mode 100644 Examples/flash/flash_status_flags/Project.nuproject delete mode 100644 Examples/flash/flash_status_flags/component.mk delete mode 100644 Examples/flash/flash_status_flags/inc/main.h delete mode 100644 Examples/flash/flash_status_flags/readme.md delete mode 100644 Examples/flash/flash_status_flags/src/isr.c delete mode 100644 Examples/flash/flash_status_flags/src/main.c rename Examples/{adc/adc_single_conv_interrupt => i2c/i2c_mster_transceiver}/.cproject (94%) rename Examples/{adc/adc_single_conv_interrupt => i2c/i2c_mster_transceiver}/.project (100%) rename Examples/{adc/adc_trigger_src => i2c/i2c_mster_transceiver}/Project.nuproject (89%) rename Examples/{adc/adc_single_conv_interrupt => i2c/i2c_mster_transceiver}/component.mk (100%) rename Examples/{comp/Compare_for_TI => i2c/i2c_mster_transceiver}/inc/isr.h (100%) rename Examples/{adc/adc_single_conv_interrupt => i2c/i2c_mster_transceiver}/inc/main.h (100%) create mode 100644 Examples/i2c/i2c_mster_transceiver/readme.md rename Examples/{amisc/dac_test => i2c/i2c_mster_transceiver}/src/isr.c (100%) create mode 100644 Examples/i2c/i2c_mster_transceiver/src/main.c create mode 100644 Examples/i2c/i2c_slave_transceiver/.cproject rename Examples/{adc/adc_trigger_src => i2c/i2c_slave_transceiver}/.project (100%) rename Examples/{adc/adc_for_TI => i2c/i2c_slave_transceiver}/Project.nuproject (83%) rename Examples/{adc/adc_trigger_src => i2c/i2c_slave_transceiver}/component.mk (100%) rename Examples/{flash/flash_prog_erase_nvr => i2c/i2c_slave_transceiver}/inc/isr.h (100%) rename Examples/{adc/adc_trigger_src => i2c/i2c_slave_transceiver}/inc/main.h (100%) create mode 100644 Examples/i2c/i2c_slave_transceiver/readme.md rename Examples/{comp/Compare_GpioVsVref => i2c/i2c_slave_transceiver}/src/isr.c (100%) create mode 100644 Examples/i2c/i2c_slave_transceiver/src/main.c delete mode 100644 Examples/lptim/lptim_prescaler/.cproject delete mode 100644 Examples/lptim/lptim_prescaler/.project delete mode 100644 Examples/lptim/lptim_prescaler/Project.nuproject delete mode 100644 Examples/lptim/lptim_prescaler/component.mk delete mode 100644 Examples/lptim/lptim_prescaler/inc/main.h delete mode 100644 Examples/lptim/lptim_prescaler/readme.md delete mode 100644 Examples/lptim/lptim_prescaler/src/isr.c create mode 100644 Examples/lvd_lvr/lvd_lvr/.cproject rename Examples/{adc/adc_verify_wr_rd_reg => lvd_lvr/lvd_lvr}/.project (100%) rename Examples/{adc/adc_verify_wr_rd_reg => lvd_lvr/lvd_lvr}/Project.nuproject (83%) rename Examples/{adc/adc_verify_wr_rd_reg => lvd_lvr/lvd_lvr}/component.mk (100%) rename Examples/{flash/flash_set_latency => lvd_lvr/lvd_lvr}/inc/isr.h (100%) rename Examples/{adc/adc_verify_wr_rd_reg => lvd_lvr/lvd_lvr}/inc/main.h (100%) create mode 100644 Examples/lvd_lvr/lvd_lvr/readme.md rename Examples/{comp/Compare_for_TI => lvd_lvr/lvd_lvr}/src/isr.c (100%) rename Examples/{lptim/lptim_prescaler => lvd_lvr/lvd_lvr}/src/main.c (52%) create mode 100644 Examples/pga/pga_src_internal/.cproject rename Examples/{amisc/dac_test => pga/pga_src_internal}/.project (100%) create mode 100644 Examples/pga/pga_src_internal/Project.nuproject rename Examples/{amisc/dac_test => pga/pga_src_internal}/component.mk (100%) rename Examples/{flash/flash_sram_run => pga/pga_src_internal}/inc/isr.h (100%) rename Examples/{amisc/dac_test => pga/pga_src_internal}/inc/main.h (100%) create mode 100644 Examples/pga/pga_src_internal/readme.md rename Examples/{comp/comp_test => pga/pga_src_internal}/src/isr.c (100%) create mode 100644 Examples/pga/pga_src_internal/src/main.c create mode 100644 Examples/pga/pga_src_io/.cproject rename Examples/{comp/Compare_GpioVsVref => pga/pga_src_io}/.project (100%) create mode 100644 Examples/pga/pga_src_io/Project.nuproject rename Examples/{comp/Compare_GpioVsVref => pga/pga_src_io}/component.mk (100%) rename Examples/{flash/flash_status_flags => pga/pga_src_io}/inc/isr.h (100%) rename Examples/{comp/Compare_GpioVsVref => pga/pga_src_io}/inc/main.h (100%) create mode 100644 Examples/pga/pga_src_io/readme.md rename Examples/{flash/flash_prog_erase_nvr => pga/pga_src_io}/src/isr.c (100%) create mode 100644 Examples/pga/pga_src_io/src/main.c delete mode 100644 Examples/pga/pga_test/.cproject delete mode 100644 Examples/pga/pga_test/.project delete mode 100644 Examples/pga/pga_test/Project.nuproject delete mode 100644 Examples/pga/pga_test/component.mk delete mode 100644 Examples/pga/pga_test/inc/main.h delete mode 100644 Examples/pga/pga_test/src/main.c delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/.cproject delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/.project delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/Project.nuproject delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/inc/isr.h delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/inc/main.h delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/readme.md delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/src/isr.c delete mode 100644 Examples/pga/pga_verify_wr_rd_reg/src/main.c delete mode 100644 Examples/spi/spi_fifo/.cproject delete mode 100644 Examples/spi/spi_fifo/.project delete mode 100644 Examples/spi/spi_fifo/Project.nuproject delete mode 100644 Examples/spi/spi_fifo/component.mk delete mode 100644 Examples/spi/spi_fifo/inc/isr.h delete mode 100644 Examples/spi/spi_fifo/inc/main.h delete mode 100644 Examples/spi/spi_fifo/readme.md delete mode 100644 Examples/spi/spi_fifo/src/isr.c delete mode 100644 Examples/spi/spi_fifo/src/main.c delete mode 100644 Examples/spi/spi_interrupt/.cproject delete mode 100644 Examples/spi/spi_interrupt/.project delete mode 100644 Examples/spi/spi_interrupt/Project.nuproject delete mode 100644 Examples/spi/spi_interrupt/component.mk delete mode 100644 Examples/spi/spi_interrupt/inc/isr.h delete mode 100644 Examples/spi/spi_interrupt/inc/main.h delete mode 100644 Examples/spi/spi_interrupt/readme.md delete mode 100644 Examples/spi/spi_interrupt/src/isr.c delete mode 100644 Examples/spi/spi_interrupt/src/main.c delete mode 100644 Examples/spi/spi_io_af/.cproject delete mode 100644 Examples/spi/spi_io_af/.project delete mode 100644 Examples/spi/spi_io_af/Project.nuproject delete mode 100644 Examples/spi/spi_io_af/component.mk delete mode 100644 Examples/spi/spi_io_af/inc/isr.h delete mode 100644 Examples/spi/spi_io_af/inc/main.h delete mode 100644 Examples/spi/spi_io_af/readme.md delete mode 100644 Examples/spi/spi_io_af/src/isr.c delete mode 100644 Examples/spi/spi_io_af/src/main.c delete mode 100644 Examples/spi/spi_manual/.cproject delete mode 100644 Examples/spi/spi_manual/.project delete mode 100644 Examples/spi/spi_manual/Project.nuproject delete mode 100644 Examples/spi/spi_manual/component.mk delete mode 100644 Examples/spi/spi_manual/inc/isr.h delete mode 100644 Examples/spi/spi_manual/inc/main.h delete mode 100644 Examples/spi/spi_manual/readme.md delete mode 100644 Examples/spi/spi_manual/src/isr.c delete mode 100644 Examples/spi/spi_manual/src/main.c create mode 100644 Examples/spi/spi_master/.cproject rename Examples/{comp/Compare_for_TI => spi/spi_master}/.project (100%) create mode 100644 Examples/spi/spi_master/Project.nuproject rename Examples/{comp/Compare_for_TI => spi/spi_master}/component.mk (100%) rename Examples/{lptim/lptim_prescaler => spi/spi_master}/inc/isr.h (100%) rename Examples/{comp/Compare_for_TI => spi/spi_master}/inc/main.h (100%) rename Examples/spi/{spi_send => spi_master}/readme.md (91%) rename Examples/{flash/flash_set_latency => spi/spi_master}/src/isr.c (100%) rename Examples/spi/{spi_send => spi_master}/src/main.c (86%) delete mode 100644 Examples/spi/spi_send/.cproject delete mode 100644 Examples/spi/spi_send/.project delete mode 100644 Examples/spi/spi_send/Project.nuproject delete mode 100644 Examples/spi/spi_send/component.mk delete mode 100644 Examples/spi/spi_send/inc/isr.h delete mode 100644 Examples/spi/spi_send/inc/main.h delete mode 100644 Examples/spi/spi_send/src/isr.c delete mode 100644 Examples/system/sys_exception/.cproject delete mode 100644 Examples/system/sys_exception/.project delete mode 100644 Examples/system/sys_exception/Project.nuproject delete mode 100644 Examples/system/sys_exception/component.mk delete mode 100644 Examples/system/sys_exception/inc/isr.h delete mode 100644 Examples/system/sys_exception/inc/main.h delete mode 100644 Examples/system/sys_exception/readme.md delete mode 100644 Examples/system/sys_exception/src/isr.c delete mode 100644 Examples/system/sys_tick_src/component.mk delete mode 100644 Examples/system/sys_tick_src/inc/isr.h delete mode 100644 Examples/system/sys_tick_src/inc/main.h delete mode 100644 Examples/system/sys_tick_src/readme.md delete mode 100644 Examples/system/sys_tick_src/src/isr.c delete mode 100644 Examples/system/sys_tick_src/src/main.c create mode 100644 Examples/system/sys_tick_swi/.cproject rename Examples/{comp/comp_test => system/sys_tick_swi}/.project (100%) create mode 100644 Examples/system/sys_tick_swi/Project.nuproject delete mode 100644 Examples/systick/systick_count/.cproject delete mode 100644 Examples/systick/systick_count/.project delete mode 100644 Examples/systick/systick_count/Project.nuproject delete mode 100644 Examples/systick/systick_count/component.mk delete mode 100644 Examples/systick/systick_count/inc/isr.h delete mode 100644 Examples/systick/systick_count/inc/main.h delete mode 100644 Examples/systick/systick_count/readme.md delete mode 100644 Examples/systick/systick_count/src/isr.c delete mode 100644 Examples/systick/systick_count/src/main.c delete mode 100644 Examples/systick/systick_interrupt/.cproject delete mode 100644 Examples/systick/systick_interrupt/.project delete mode 100644 Examples/systick/systick_interrupt/Project.nuproject delete mode 100644 Examples/systick/systick_interrupt/component.mk delete mode 100644 Examples/systick/systick_interrupt/inc/isr.h delete mode 100644 Examples/systick/systick_interrupt/inc/main.h delete mode 100644 Examples/systick/systick_interrupt/readme.md delete mode 100644 Examples/systick/systick_interrupt/src/isr.c delete mode 100644 Examples/systick/systick_interrupt/src/main.c delete mode 100644 Examples/systick/systick_soft_interrupt/.cproject delete mode 100644 Examples/systick/systick_soft_interrupt/.project delete mode 100644 Examples/systick/systick_soft_interrupt/Project.nuproject delete mode 100644 Examples/systick/systick_soft_interrupt/component.mk delete mode 100644 Examples/systick/systick_soft_interrupt/inc/isr.h delete mode 100644 Examples/systick/systick_soft_interrupt/inc/main.h delete mode 100644 Examples/systick/systick_soft_interrupt/readme.md delete mode 100644 Examples/systick/systick_soft_interrupt/src/isr.c delete mode 100644 Examples/systick/systick_soft_interrupt/src/main.c delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/.cproject delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/.project delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/Project.nuproject delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/component.mk delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/inc/isr.h delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/inc/main.h delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/readme.md delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/src/isr.c delete mode 100644 Examples/tim/tim_ETRFClearOCxREF/src/main.c delete mode 100644 Examples/tim/tim_Synchro/.cproject delete mode 100644 Examples/tim/tim_Synchro/.project delete mode 100644 Examples/tim/tim_Synchro/Project.nuproject delete mode 100644 Examples/tim/tim_Synchro/component.mk delete mode 100644 Examples/tim/tim_Synchro/inc/isr.h delete mode 100644 Examples/tim/tim_Synchro/inc/main.h delete mode 100644 Examples/tim/tim_Synchro/readme.md delete mode 100644 Examples/tim/tim_Synchro/src/isr.c delete mode 100644 Examples/tim/tim_Synchro/src/main.c delete mode 100644 Examples/tim/tim_clk_sel/.cproject delete mode 100644 Examples/tim/tim_clk_sel/.project delete mode 100644 Examples/tim/tim_clk_sel/Project.nuproject delete mode 100644 Examples/tim/tim_clk_sel/component.mk delete mode 100644 Examples/tim/tim_clk_sel/inc/isr.h delete mode 100644 Examples/tim/tim_clk_sel/inc/main.h delete mode 100644 Examples/tim/tim_clk_sel/readme.md delete mode 100644 Examples/tim/tim_clk_sel/src/isr.c delete mode 100644 Examples/tim/tim_clk_sel/src/main.c delete mode 100644 Examples/tim/tim_encoder/.cproject delete mode 100644 Examples/tim/tim_encoder/.project delete mode 100644 Examples/tim/tim_encoder/Project.nuproject delete mode 100644 Examples/tim/tim_encoder/component.mk delete mode 100644 Examples/tim/tim_encoder/inc/isr.h delete mode 100644 Examples/tim/tim_encoder/inc/main.h delete mode 100644 Examples/tim/tim_encoder/readme.md delete mode 100644 Examples/tim/tim_encoder/src/isr.c delete mode 100644 Examples/tim/tim_encoder/src/main.c delete mode 100644 Examples/tim/tim_onePulseOutput/.cproject delete mode 100644 Examples/tim/tim_onePulseOutput/.project delete mode 100644 Examples/tim/tim_onePulseOutput/Project.nuproject delete mode 100644 Examples/tim/tim_onePulseOutput/component.mk delete mode 100644 Examples/tim/tim_onePulseOutput/inc/isr.h delete mode 100644 Examples/tim/tim_onePulseOutput/inc/main.h delete mode 100644 Examples/tim/tim_onePulseOutput/readme.md delete mode 100644 Examples/tim/tim_onePulseOutput/src/isr.c delete mode 100644 Examples/tim/tim_onePulseOutput/src/main.c delete mode 100644 Examples/tim/tim_xorInput/.cproject delete mode 100644 Examples/tim/tim_xorInput/.project delete mode 100644 Examples/tim/tim_xorInput/Project.nuproject delete mode 100644 Examples/tim/tim_xorInput/component.mk delete mode 100644 Examples/tim/tim_xorInput/inc/isr.h delete mode 100644 Examples/tim/tim_xorInput/inc/main.h delete mode 100644 Examples/tim/tim_xorInput/readme.md delete mode 100644 Examples/tim/tim_xorInput/src/isr.c delete mode 100644 Examples/tim/tim_xorInput/src/main.c delete mode 100644 Examples/wdg/wdg_lock/.cproject delete mode 100644 Examples/wdg/wdg_lock/.project delete mode 100644 Examples/wdg/wdg_lock/Project.nuproject delete mode 100644 Examples/wdg/wdg_lock/component.mk delete mode 100644 Examples/wdg/wdg_lock/inc/isr.h delete mode 100644 Examples/wdg/wdg_lock/inc/main.h delete mode 100644 Examples/wdg/wdg_lock/readme.md delete mode 100644 Examples/wdg/wdg_lock/src/isr.c delete mode 100644 Examples/wdg/wdg_lock/src/main.c rename Tools/openocd/scripts/target/{pb5700.cfg => pec930.cfg} (98%) delete mode 100644 Tools/scripts/Profiles/Project_Debug_jLink.launch diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b1fecda..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "BitFiles"] - path = BitFiles - url = https://60.248.80.176:28080/wlhsu/fpga_bit_file.git diff --git a/Apps/app_demo_project/.cproject b/Apps/app_demo_project/.cproject new file mode 100644 index 0000000..a42ccb9 --- /dev/null +++ b/Apps/app_demo_project/.cproject @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Apps/demo_project/.project b/Apps/app_demo_project/.project similarity index 98% rename from Apps/demo_project/.project rename to Apps/app_demo_project/.project index 83b30c3..123d8c1 100644 --- a/Apps/demo_project/.project +++ b/Apps/app_demo_project/.project @@ -42,7 +42,7 @@ - 0 + 1762843010815 6 diff --git a/Apps/demo_project/Project.nuproject b/Apps/app_demo_project/Project.nuproject similarity index 100% rename from Apps/demo_project/Project.nuproject rename to Apps/app_demo_project/Project.nuproject diff --git a/Apps/demo_project/component.mk b/Apps/app_demo_project/component.mk similarity index 100% rename from Apps/demo_project/component.mk rename to Apps/app_demo_project/component.mk diff --git a/Apps/demo_project/inc/isr.h b/Apps/app_demo_project/inc/isr.h similarity index 100% rename from Apps/demo_project/inc/isr.h rename to Apps/app_demo_project/inc/isr.h diff --git a/Apps/demo_project/inc/main.h b/Apps/app_demo_project/inc/main.h similarity index 100% rename from Apps/demo_project/inc/main.h rename to Apps/app_demo_project/inc/main.h diff --git a/Examples/I2C/I2C_Master_EEPROM/readme.md b/Apps/app_demo_project/readme.md similarity index 56% rename from Examples/I2C/I2C_Master_EEPROM/readme.md rename to Apps/app_demo_project/readme.md index b4f1dcd..a718da5 100644 --- a/Examples/I2C/I2C_Master_EEPROM/readme.md +++ b/Apps/app_demo_project/readme.md @@ -1,10 +1,8 @@ demo_project --- -This example is a demo project to descript -> + How to log message +This example is a demo project to descript `how to log message` ## Log Use serial port with baudrate 115200, 8bit, no parity check. - diff --git a/Apps/demo_project/src/isr.c b/Apps/app_demo_project/src/isr.c similarity index 100% rename from Apps/demo_project/src/isr.c rename to Apps/app_demo_project/src/isr.c diff --git a/Apps/demo_project/src/main.c b/Apps/app_demo_project/src/main.c similarity index 97% rename from Apps/demo_project/src/main.c rename to Apps/app_demo_project/src/main.c index d84273f..5e1b4a5 100644 --- a/Apps/demo_project/src/main.c +++ b/Apps/app_demo_project/src/main.c @@ -52,7 +52,7 @@ int main(void) syslog_init(); - info("This is a demo project\n"); + info("This is a app demo project\n"); msg("log debug message: $pc= x%08X\n", __get_pc()); log_color(SLOG_GREEN, "color green\n"); log_color(SLOG_YELLOW, "color yellow\n"); diff --git a/Apps/demo_project/readme.md b/Apps/demo_project/readme.md deleted file mode 100644 index b4f1dcd..0000000 --- a/Apps/demo_project/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -demo_project ---- - -This example is a demo project to descript -> + How to log message - -## Log - -Use serial port with baudrate 115200, 8bit, no parity check. - diff --git a/Common/syslog.c b/Common/syslog.c index e93c49a..8a21e23 100644 --- a/Common/syslog.c +++ b/Common/syslog.c @@ -16,7 +16,11 @@ //============================================================================= // Constant Definition //============================================================================= -#define CONFIG_LOG_MSG_DEVICE UART0 +#define CONFIG_LOG_MSG_DEVICE UART0 +#define CONFIG_LOG_DEVICE_TX_IO_PORTx GPIOA +#define CONFIG_LOG_DEVICE_TX_IO_PINx GPIO_Pin_15 +#define CONFIG_LOG_DEVICE_TX_IO_AF GPIO_AF_1 +#define CONFIG_LOG_DEVICE_RESET() __HAL_SYSCFG_RESET_UART0() //============================================================================= // Macro Definition //============================================================================= @@ -47,11 +51,11 @@ void syslog_init(void) GPIO_InitTypeDef gpio_init = {0}; UART_InitTypeDef uart_init = {0}; - /* configure GPIO Pin mux of UART (Tx through PA15) */ - gpio_init.GPIO_Pin = GPIO_Pin_15; + /* configure GPIO Pin mux of UART Tx */ + gpio_init.GPIO_Pin = CONFIG_LOG_DEVICE_TX_IO_PINx; + gpio_init.GPIO_AF_Mode = CONFIG_LOG_DEVICE_TX_IO_AF; gpio_init.GPIO_Mode = GPIO_Mode_AF; - gpio_init.GPIO_AF_Mode = GPIO_AF_1; - GPIO_Init(GPIOA, &gpio_init); + GPIO_Init(CONFIG_LOG_DEVICE_TX_IO_PORTx, &gpio_init); uart_init.BaudRate = SLOG_SERIAL_BPS; uart_init.WordLength = UART_WordLength_8b; @@ -64,6 +68,13 @@ void syslog_init(void) return; } +void syslog_deinit(void) +{ + GPIO_DeInit(CONFIG_LOG_DEVICE_TX_IO_PORTx, CONFIG_LOG_DEVICE_TX_IO_PINx); + CONFIG_LOG_DEVICE_RESET(); + return; +} + void syslog_dump_mem( char *prefix, diff --git a/Common/syslog.h b/Common/syslog.h index e292755..53b8eac 100644 --- a/Common/syslog.h +++ b/Common/syslog.h @@ -82,6 +82,7 @@ extern "C" { // Public Function Definition //============================================================================= void syslog_init(void); +void syslog_deinit(void); /** * \brief Dump memory data through system log diff --git a/Docs/Schematic/DAC_ADC_Simple_BOARD_010(20250730)_2.pdf b/Docs/Schematic/DAC_ADC_Simple_BOARD_010(20250730)_2.pdf deleted file mode 100644 index c306ba879b731c49eb21c33c451189eaac90327c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101452 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

HA4YRr=Ni+ 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 Cq~a$4 diff --git a/Docs/Schematic/PB5700_EV_BOARD_SOP24(010)_20250305_M.pdf b/Docs/Schematic/PB5700_EV_BOARD_SOP24(010)_20250305_M.pdf deleted file mode 100644 index 70fc48564132c55a4fc5cdeeef25ceec73c92606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34340 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 NYXKXZl8!Ry{{a&s@W=oF diff --git a/Docs/Schematic/PB5700_EV_BOARD_SSOP24(010)_20250327.pdf b/Docs/Schematic/PB5700_EV_BOARD_SSOP24(010)_20250327.pdf deleted file mode 100644 index 69b3716cb6858b506047c2a22d9b6c773fbcea98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34475 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 W;b`~M#wQ>k3gstaXP4JdAo@Q#Fj>z4 diff --git a/Docs/Schematic/PEC930_EV_BOARD_SSOP24(010).pdf b/Docs/Schematic/PEC930_EV_BOARD_SSOP24(010).pdf new file mode 100644 index 0000000000000000000000000000000000000000..da8974c4c03c979b55ac04cde4434e4190890fab GIT binary patch literal 34391 zcma%i1yEeimu|4&Fjxrg65QS03GObz-DL>w9xTBn5D0EVaCdii26xvt`Tcj_?$-Nn z)vLPIdT-C|?$hUd=R0?(K1)b3vNCZXQS~3k=Ob~FvXDBO+8_xCFe_L%d~vfP<$|=R zGD}(8xmmc7GE3Q+xLHV8m^qqT2niv%y17`G*duvmo@nbh5^|#ebByx(vvLdMW(=_5 zOu1=|ucK-uiGzgdgtp$Vee{SYeYq(rOzc_As;?D!zu(=5KpIsnq)KRWma&1E9uZ*S zTz$|c;CXzKv+9rA2qSZbvP^1H9>>vqa%^r8>d^e-l+!m}kA!b8L6Uxl)ud?r;=hTVyTHSf}O%=hAAi!qtkPkA$y+Ehhr5 zQ`QOon{TMRXvMM9%n(F@VgTi8yeUr6KZY^%n)g$!R= zUWaVz7_%p~Yt~JCoQ7=D0~CsgXblW&g@V5OP#rAjpm99>-FSTg(U(rNirYlxI1Bq` z!3F(xIF!ZoO#(1yDt-H48^KC@rDJv;W^1Q+5DoJw#1SlB)pvvuCMo6w6+T3I7fNbI zml_O3+87YjeUMF>3S){AMD8qinhzTjgAx?!@n=L9GjoO7(^7P%+I&K8$L(?$)17#< zFrz6`PMdcS!B3L~+XELqIVSVik`hjoy+#JWK|w=Fk*k=CC+j8;Wp&gzm=&{8L5?T8 z!$F~wZ%LUevC_!C1${bRZ>9Kgi=ansNhNQSD z39$8mh1=LDtc%9?vIatUgUG8^g@|^Ymnrm*^-!D6YZCG872|(8d7km%W-bW@^o;UX zbdp_PHvC2QaaM06^$L^^sICA6-m0%nkuNi;mCKisdfB-A)jov%`DO4>3Mbn97hsfO zr--eJO!HVSSa`h-K|ZYd=X~J+*b|=+aj2 z+$CYm&0ow|g&hy?{w&7`U2CI6B+G@nSRu1w^1^|8^|9WHxy{<5kH5+omnkFNc(sp) zEsgli24D4-^TTf^;dD9{CR&3JpGP;-=wInXc(gG~og^l5d?ZPJ*)ng(c8hKQoN=eGv_+aC z4c_I04YS9V?uWgbf61*@5*_L{HuX3BU zUIkhU$aStsC0Ff%`szVk^&LKf7$&3aanRZZ7IU}Nb|q1%$T>`tnJ4>veOB#ibiCll z)8Ohd=IlQsp6phJL{6QIZAo>WSlgc;{#4w;O_@s?)C-C?Z{-Fad3_P1n;SNZ7HnAf zcgb5ov|{7A#U081^<4!YG~H~KNan7UuoXt zymt41gFBGcq_p?FQZkzqp~@$cL8sw(wLY^0Ek+`hU8RNVm65P4e2} zM_05X3@~!}5s$2@b-4w8q-h&&>N<`7G->*RZ z2g#B4rV;VS(4idrPtw#}!sf8%r4lR9;yPmedMa37EMUH;%fG#W-)_kehrov!xVVNf z{tw`F;C*wSq1fAjxL@r<02Nfg+g@`TiT@95&bE8*ljNAT(Z%Z@szc3b%8$FrauL3Z zNrtwP%o=-+{LEg_kN`C^-%K) zJMTGEn%BNkJEg7+7#dnv6AcP~#&-hdbCA9vapd062~4dwTcM_nGA1oEtpeas)04y;J6?ZqZZI?@6|_v5CSjA%qVfo<;3ovY z;ZO9+#M_GGAbB0xDQJ=8%rxf8s0pPA=C54t2z{JZpVYV1ifGp*nHC zZ>=>pP)#$Dk>S~V6xv>tlT{!j)aqcA`xAqmymxPDr5mYHw99EIk# z=@j}$ca@>0AGT*(h!1_UyEAwCz82IZQ$DjNXFF>oOww-HSNX;Qe1W{J&GYx7XO&9T z11a}_Uyg0R(!;n_{XH1XS^gZ+$ZKycr(Pbl^{WizGW6?pA@O;QjZ5fOX+<0EGoRQge9O;p za6W;5TF42e{cJjwaIp6UziXcT!u)yUNL4>YIDhz2nLUKtAb|eYO`r4XO+essPs{1! z^1wda8l+O3w`Pm~fP6qD=KmhwGTBUKQ=p+QKzGN9$OB%M`x@@PXbhzJH&nAt-Bi&3_$x5EqzV$NL>H zWf^H35K_!K5_5X8TF4f4P0Z-6v7i5mN+*uXC;sp*z59BvgDdyrA65l#Bf(grYQ6XE zKzB!0mCbGCsmfeGHtoI2cG>nA_c`G8_I#z$C%v9!uDyV)<%NCLA>64E>sTs=iX?Ji7ZdpiZkOS!JNPmpQ;ik*%Sy2PE5SqXs=DEv9(p%BVmkE5edH;v4p zXsdfuYGFg~l5SOeXQiOFp;@Xzy=RAA`fFc?d4i+dnv?oQ%sLP)SR{82v%!;UmT(I) zJbF{>6F^&*Gn^;2s^=;r>`>g8s{Vp--XCFQ`xieLxOj!DY7edTw^}47o|D0Yw%dLF z^>L*KL*hj`KzoDW(3L6{>xSgTBt8uZ)!(5o6?6*^;_?peM8#@LShJ4v^^5_(M0v;P z$T%|ew^oOH2^rtoT+b`;k?@@Q@pP4snfc^w5#Uj+DTWXk?s0T0<~m#|3rw(P!?T#G zwIGhU2(VxUZhOB&wu|D%hVGBdKp-54`B?pF4VLP>Ljg8SFZn&|Y(W1qR=16>jOF;hXxFh;D_^x3imeV_rzR-ZGw4;OA_P)4fpbk&dZdvWaXgQ<0# z6tp+j7QeATDvhFZ&k0pM;)b$;4CY$2+aS1bo6$yIAl?5J(mWP9u?wa&!}lHuiY zAg)XDy+_Ep8Psd-!zC@8TGhpE@C?ltkdjHD&tMWs<1R0T_kb*mS?u%`*LLCV z5O-*-E&dvMbk522XI@6la^Hm1*`(OO23e zWa_wLRDSJ?RX;XFyDrZRCe7Mj_rJY9ewvlHU+xd^=5*9`R0?>0O1#xO4w8-E-(5BW z-ru5MRydv&)qZ`u`~FH!hpX10+!uNuM&BMlC@A1))NI$}|7=v*w^REye!caP`$#Q7 zUgs(2MI4^S?6202bHTNEo>%E(ILR?8=k&L>u8BzAEq+w;X105Mc>^-iK))~x&kljx zvo#)>w<~F)YeNE_Y?2U`+I$QXOA7H$qSgFz_@CMhSYDX5CGendu0}`Zq`x0UwG|dQ z8X|r(yD|T=>=c zOz!x>r9At{kF7m5JY%&e;^tT}^s?Rxba7nMJE^eRYY({bE?Fp{0}6%wT=TMdZY6G4 zS4+E1Q`6gsZuINf=ik>!hjdyTMG^Wx6oq>s^888_k{J)w4s@d`H*el^TBXLbBZ z$#=!1vU0euzK+oJ6+i4lMgGPELb)g3ORFB{WHE2AHRsE_0D+m@<42rcdBORzq%T&* z_|m&$Xlhu+juN$^yYZlK6Cl% zc3!|xuLOa8ZA=^zszdb7_4VHgLn(mZ#(OcmoQ%5|L0QEbwa?yu?l|06b-%a5h;n3~ ziHk;0tPOv&so55z8i!#X&MT*KUF|hC{K~=tS5_JYv-*y%dcrb{NP1=8Y65rBHwz-SasMPTcpP2qbMUz-nwACeoft; zK-mkcB7+S}&2Wwdr*gNU0@$+?wR_OTMluEF5h4YWB1HyugunswNx8DP_f!D4=Ax7o z3$CKt09a?y1Z+q$u?>sSJMiunE$OnPs8uxotqVEpL<3ob8~km0~iRDxG~jCm&1@vic&~h?pZ<9&ZP>4 z23gGaZ%=v${4go}a0k46WDYF?){Zfr@&^fBfrw7FAjoKVkox^UqnTt8GBno0RS$N$ z0Lhk1Xd`IhhX?+7D58a#?0C=`i_Q`&n*vwf;<%6z?@midTc7!}f(vb|A8pEghG~>3 ztz^XwOwW!!p3c1K76}Idi4`~Rgo9sh%6+71snRESQ#N!!^1Q{0LA3Q-XAN7egtzT< z2_5O4$3)72iC>aCW#!=w#Ci)YGfNa(Xu@k$Y3)jC=S-jSd(y<$- zf0qA3HSZG%rDLbb6?1c8#%6O?Wtt64+kCncvJzKLe#ag$B}AIH+$LK5h_1`Mn3VL! zhvzB87BpH`loz=S+m;&ioIwO?&K^3J;p>eLxa%wO9=&d9TyG<|4zGy4v=z}(>LcHW zLBH?OxTWtWJ{vTAalb>WD9q?bV=xJH+~txTH>8b>8?mjs0;SlpBuf_Fl`t)5z&QBf z4c?If<1MYSx(DsmnD z6lz|T-RT#1d9Ys2fRA$6Xbnlj8qvBpTLiDFXGEy;7oumA?A)*}&6Mtwdbo3yMJTF* zpT)Ebl5e$YcfZf!FxA~ByXNq&FXpJ0a^DvdCae|E$XV0>fLrt|khjj>4)9Tg%WB;l z)Ptu@Y}&Molnn`yh>#5-rozx#AxpZ|ZcQ6#2i{C((I=`$c2Kc-W@m{;nj;;>ToVf_ zldq+oYkEtaVLmL{t_6%{<4!Yf(%6j&NprEDQRLd~S=L1>aH$MXvn}>W4~D6)vCF)y zpe*{a_oX)N`E;C$>V{e~{b&+CSwuMQ{dly9z%Yqrp>_-|tMTqgh0@_Yy;Qv56Mqtb zUiKDeS;Dow2qU3f`RbcxAhHogOuh0oZL7mQlxpSc{MN>M#((PPVa$*m*Le%oOhJ2t z=EU79idkuK*2Ro4K=ABg zwS=6@V;^BDO=_uts8?we zL0pUz&D3QlqlHpIlMXidzAxtA6e%|6KCmzDXP+Adj5v5(FFL%7+n!gr+MYLRXWO=8 zN^JVMW1HJ!tL%n|Q%zA_`*g& zMz?Xc>V)y9>xuU=H%X5GO*tgz;G{kykJMA9k}B-takpEgq5JDFai93q7UvaM=Kbp) zNI9D;vUT_49N_GNX2pZ>>4qnH6l$lq^6K{91#CB2+p+&8uQMMZ1cm)PJ#^}2??uW+hdu7K8I>0C@sMbfc_rKp;KOlmw^P+p>r1dOE1ol zXZSj2?QX=((6}+2i*zGj=yp-Mc-qc$G5Zq<)5>yypUD|6whX_aXlhkQ(bxQ*g64>; z)mB3P!sgJuXmT(Qu(ZWJjUu_Pb-g&?rO+LpOkbPNd#wCM&-{_U&KZ%&G#WK3y908N z10H-X)GGbMl3`swFCG^sj8l#~Kd<xV10i;4w|^BD0pv-? zx6WT&$pE~$1%J0qpiNE^k6=_yj7dGx9WvCOCALNFB^et8{*{f8BfP@Od|ou(-vtS6 zQB!qYPkXy{LsULXzuqP(yoO!`iV;za@MkiKL~6R zqy`yFb?_&UIlx4LcSwgQ^>!M zZGqUh(TkZCJ_czKz{LgUam)WT;=R_nRUvv#O=1)dmU7RA^NL%yH}l3u%2?DH^pox0 z!!arKqKvapD91Wk*3OmADyxcHKX|(`c$4m&YCDrV{U*{Glb)Ev_IQeTP1BYLC>XZX z8!qhHfKS$jfv*oNVtb#?P)u*Wm^EFN`6VP+`dwWxPk*d$J>Yolve`S5-1Bbsd|hQu zYeZjk=i**@kF@*qFBB295a;{jmykFz7`mFc>O}1t8Z-`BhqKL3j5#o1>+kOt>*2jr zgJ^oaRB0{?FE2Q_6O0TwVS6tJUQL>CK?9Un{{avjP4Y;IU6GOD z$Q(=pNo@*+0RN^Vk5mRJ2t>N?97Nk#^%)S~6dD=?Xsi+eaL!O5Kx2Kl_YSi9?;W23 zE>+ilRp0I-gG&B;y9j_1UVbaMsAn9zhZ=skf2B)IG(u0CG~)k4fe0VSt6Ze(Y11M& z|9z?dgb4q$9TsEP81G+jW75H7cXZX^vklLd{|qBT!te#W?K^!yGNBv=i5wO1XZj)I z@A`CNPvj#Jg=ol6{ZvG&gMa`kV1D}2fAw4jSEb1pUK-;$h;Q`!#}GgKKwc6d-B=#qI8pqjB{f_()xsNyTvf6qjGF{u*lgMJQ(Sr>`3}QpFdtR_WTOg%Lg4 z$ga@}IGep%SD(+TfrlSQ;nA_mIX`ED#jk%S&g{H9cC-u-mCo@Hl~z|nBrB0G0T}<) zn@X!J$KF-uQjW*|ED-;!wmTKi@k&Frsl$18d*SRtcVob4fJo@-%xRQZ*!KANp1LWT6wa;~B)V!+S}opIyD4hJm6?X! zDJ?Fg_bJo1pw(F2=b-~m{XzQTC?nq1Fg@?xnM?ZOc_)g>LVO_mbfz~Ir=B0YmTEDZ zgAs8&8cz2BeQ}tPtie{z7XJ$2=9NTG%F#Z9TuS`1KtOK@&Z#@ld&k2M1 zA@4b+_DsABlg6*MHc@J;k9gzmv|{&5=gpyu&9}DY2Y{;7?1(jm=4GdGg9F)hq4@n@;u*&?3cMWA{RzE^GQTK{BtnQ_f zCo#o}H;OBmHEqS)LySg+DxbpbIuNre?Gg1^ZuGnyLX;4yd+jlPlQ@xd1CdL-(h*G| z&#=@vNd|!_u3u?;JiOi4vl`eo>M6F|rG4UEnj|mgNTz(<(4u*X(Tmn^!J&G%-^S# zoFSErc5%Fxe}oU9(ZpH&wQH~Y@<7@y{}m$OS7`WA!jxD&i$D?kN>=`Wk}OyKMF&Yy ziBAy&a2O=i5u-C@uWA6AC#d>WW9*OxVfg=aL=;57NeUosnG5GO7{v!wJt?laSfLIV zZP<~YxPkg0j$9QLn?ktlKc1Yu?$srCxnr-Z^YY5R8N^T&fvhASUdYCeK>AAW+cLl1 z%l;Ufqiee~^tN2S^Rkq0B_*~@pd#FC_BnIn>naZV@K$(0ek!|y&;c1(@t@2IlN*|4 z^MfDOKUro^>^sO$#c%b!gB(m#Z*;}l6I z=i(fXNL!`6Ph@f-R&Y(ys8R2ewvrx`-MlW#*zc=?4A!Dyhx8jo5>J-vBWv$wKs~J3EIRL zURS$-A&y_%bp-%ip1KT%7o>JcUDQl=5TEe)P~r{Eq@N&E5gp)s)87xJbHBY!S-eA8 zd{0?SOg()V|Av;~z&*qvV46f9_lUl}V`A_chC_gsGN(;MRDZ5K4Bu$3cs0vTkGo0(^?%^O{$M5-5pZr|T_C@$0 zk11@A73|c%H*i0-DNH=B;@gvu?)$g`;7;xhRI%#_s- zd0LvE%h;ZQ5OnLZf9|)RaG%i-@^G2g-J)0U0z=*HbAV00n-EFn7I zTy=-^s2S@K52!00?)YQ{veio^C-4mz5^>{z06k@+sE-zp1-1e17ADn86(GAO!7il= zd5rB5J(T962m^+i;wm%ju0DvpeM}er)BkWwfwKQ+KnTEf#_t}>7E1IDzy%S^ z>3Q0RsUT!-MBn-XR_Tw?0v z?vJ?;fM}hgJhi7UE`D^ zTTLlqX>GHFQNVb+fFVXLl?TCKL=&0z(=gM}FhkPFoVNU7a;~RA+bAy!lHU@~$cP^kQ7tc zzj)NDo~`p|gjO+uT92A%a;xv3)4B3Gm`=In)c6k3xQ@X14oqQZw%_3+eT6kGec*)} zp5hMT^9Xf*HlZqFncpp-8$i(wpy`J6f?dmS7nb*jUO}yLU><$ffk9&yJPCrGBcKu2 z2D=&Fx(@U%8j*X0FABLT-3i7ps{7yN$Q37`v$D{lD3+X!k6D; zpbgO;MJOI1-mdVPxwOVC)5>7(8lf^fq82m~P$1iVI=pp@G`rY$L6O99Q87~~?gyQgbGJi{8$`3WsGRgEl0&$K$n9&T zmKJA0k`xh0v*y70W5)7D*8~H};Ih-J)%zsw%_1>1A(^$H@q?n4*G(|z!!v#i&4qx% zUzlCl=@p~=4srhC5g+B-IK-W~vSs-!^sk<(ONa-g-?kbDVUJG1X3wGf$lg48>%&*9 zYJo#nET8|IFN3aF!37Dzb6_nH4*2-Im_gXLRm_9pd0_}cm$t>lIJEwk(ir>EG3*FY z;!Qjg>Zwl14tw$f(-Ljf910XL%?PXI6gd>W{#b)}(&Y&ki{Uh%1w(ehZ(s zBV{DnTWGtG$uQZR6Upxtd32uv;vGm`9lGX@_N0)!N}H$d*^a6j1xZ_kQsJXdSI;$FUXn9KXti70AFz_XvXsd6j z?Q;hMG*b^Me6P-yr!7;|t~SWp`V`X6Qngz%VZE`!#3Na%x)x)h*SOCXj#NfyTF(~F zVQJ6LyN;;L;bsuUZ_P~G{@cDaD|uAen8xa+=5~C@qGaRb)MAS8-uU%#y8ct$VJdZ$ zgN12J#IVDco#355qRnaS%PJIQf6Dej|E|$`9|YOH(b`aN*H}0`700~t0R0iYY6~dX zY_qFbMPcB}gO{xJ*xl9H*8NQ!r`iQ|dfAglBetanSZabobE@wI3uC_!2!C_(rw*0Cncb=C;-{bbem7}WfW+91sNG? z`)4opi^y$R6DFvVsmP^Qb&Qkz%reaC81V!Yw-8S*FIAz|AU)4P50oa*(nF>PR=#86 zFRAK2TUiGB88>F~9R!D*ZxW*jyg#$V3L$a@MANs+@x=63A2*NXXm%J2K`FR+T*dZ0 zb8#r5&s7=<|7vVuU?q9;czs^AWiwDS+aZOsP!o(jJ>dT)lzcqMVOgE7NOM27v#>EI zMw!#T@k1>ml4X4@oosRf<5%%!>&8nZ3(((3F{nW=WEzb3Bdr;)`W`t|@YcRpZ%yWG zl3A7G0k$#r67H1uOhsq$IxZc37o`VE$|ruUTTR`&ZLoReNye^6Laawp%nea6uy|K~ zH?+9=&Y%s6{{`|qmY1A(Xw$QTb)@jw_kJ-$+3XjEU#NKkosGbso_ZvuMUlGo!7oi> zcIX?hHm|{r6*vJj`8Um*IVv*Eo6|@M5Q~^8a(MA=*^VT3EKb+TY=GT5uJo5@bT?hZ z=Dw<|7kS!WGy}Ie>ovE1ToS4XIPwe`4o1nv$S}wM%V9&f=v`5viHPKa4@;vK{Mejb zNTLd{Ra=whf2}PptWD2gWg3@gt`rZ16ptnSh0((qL|lZSq~e_c;Mm%km%sYuuz|lB zN-9DjV*|M(SK3+v>%X2FVP3Ff36?TXvi_GZooAn=P%M@C>|L&s1M!_NkBSrlB^b}hvq#awtqm6?ArMd)DNQBuNcZR8R4C%*A|MpP;77%VpZrKh z`|B8OpE;Tl;=W$v@8VDeViM&|+pQxIrJQ^K)$&1fu;+?S7KCyd#y#eG4O!J#asJ{C zQJcj7>ZCdSJ%;(=zI823YuyL>&HZ{}$*8QwN2);$XG`b^62C~xU)bD3$T2I5`q%*C zYY_u|`KxoqfDI|W9k(GzUhZC@mpTwdefQfB(veMMsPmBEgk0eTvV|<>+3aGW#dPGC zT`~e732{xX$kGK8gqL7~!=@r$mCUryG}f_L--(eXsw-uND|=WPT%k9CKX22wlxz%( zrZKU@mB8)XUo)e(?({`~@C=`BHHe$1O9cpE>z0S;4Rtz9$P&dNN5+%Ya_E(h&GIX2 zHy(S^-{cFMrb7dTnd?Kg^y;8i-bO7%?w$yrhYXy|hfYR!d>XhZ*3__>iHy5Yy(TV; zU`CDjKoApiUIe26f@1EiPDA4eIM_fkj1EpiW7&K!5RsP!*{#}J7sWPT&l^VAmx@LJ z$Z|&97-QxAx|sH6^Y?!o1xW*9mn__rp|S=q6+|peFYmrNHyqo_B_&4(h_h`QND<&4 zqP4~ThQ^FOsPsz5&;N>cfn~T#rQ78j# z8tvXt-n_rDFx8dJ3GFUMuMb~f`H>;(Z$KS8P9W)1KW9RpIRmO|?_~SZg6yf|ahNEp zobQv(v|aPap9wLs#XS{wTx=sA9U)Z20{R?N+0f15J&-{5pzts=Pij0OeG3am*s&B{ zB)#v~b+8iVPUsCu@XyR^>Z?DYxirRIWK2{L0f~32+KgO<8HsnTw#|XWH;8-cl_5Ts z=hhMp1P{PFpI|}w(=5So%-;om zXBqLUJyz_6)g(0SS?vWmZWRXd^~C{m2v!RB%g<=8&eH*tx_RN$onux{Mbip~*}4pV z*=Yi8aHlo9Ba`1ViJ9*~qnXTOd!^y8UKvUW1DV|r+J4kgBH&mZ!ai6jRjWcu7}-%~dy8!9#p zC8oO|%qB&FH6F435&r4Fx;@F4K0ttevd8nKc%z%(QtDHUm7c0}X2j1>#Bk8JPDoUT zhktw$_DpxLJ987kcOJj<x68)(5v0^U@A(L7h++wDOYYui{~GWh zLzb1G=#eLTqYQH`%j`PLydS$p`;)n36O1zLh9TkfJHHcAlyDo2OrGu#xPG+lLmN?b z?!1e(E)7ool7+Fqjiun~6~ucsMku*t&Ud;9^%EDIoK0jTcm1u2Yw;;OJS{HEfX|uZ zU}3OG;>^u~PoUB5cws71O}6lE-{4AGK&Ynfcwj0@Ty{8)fyyW6Yy*`hwRhfl&BU3G zB(0~(xd$S@gL@0D(?Xs91aZ@$O#VtPQ=H{ziobd(nxg&Ua?r7HE0K9a2Z8{Gfsqd> zc4Z@nDRwcp&yu&%Gl>J;f>j~n`U4&EEBzFHaRLxnjFTFJDKJO)QoRuzxOCc9wbOa|_O#DIRCgg71 zeh|WoeMbgiPH5t$`7a1xF$D?}S`aIdq<;gQ@B?s|QARHlTTsEo#*_y875|B|uMR?2 z2>GV0qhJ{wbx?Uq(0OxJxW%*AFTQ z6?=YU6g(4KXp{nrcC3ux+kk4&5jTloUY^$$wdyHY0$Tv)sHC)2la64Vh-{CvgipLB z=fjlVZqu~i0i$4>6Av6?8$F^K}cGSywE!aW- zhFkq5qLifR5MJG1Y?h|tF{G5_^9_X-q_I8k&{6GBdEh3$JC&Hl2+8YC9&@V*p21zV_tpvag9h7Q;J_WV#(+` zDs`Jz)d3Unp1v8)t)JZ^qFV=;2XYz@IFYK8B|jt5P^JSKQA0qIfUOT10Qgk6Syu~a zIlCR~tqmA&{rwKt>VQHRQ{gwkr&aG<(oxNtECv`&x*rK0oiQB0&1Jjg8nEnHerV%Y zSyqTur5r!&4#LqdDlznJflUJ#@@1+&6(*-}!l@yA;tCzvu1iAx2~f2|%Fwn{?8FX& zEYN}`ODN#}nkU3VU^c@$&!|$Egd!mH33;)bZkoiNFY99|k6mYeKc_9;w;h$Ydm! ztHSRv$M6iZ)CHMzUOtk6ZJRA$y4(22>g|`2LEzyCoPd9av!qAK02gDHVia~HlTi4CS9&di~PHiw^eD2 zh%ClAQAY)6(teWCF0)L0*n=AFBg|ScxK0m-m%i)b72_fC8WKrer1sw#FG;X4&0^@x z_0VVZ?TbFk6P88vFdBD?{OgpqX}Y*Wjw!E|Fws*^KXBE&S!jiLPoEvh26p*)Vxxms zM=jGn)Xvsi&$WTGraZx(s_->Lzw$TXg~;O*iLo+?(|7C4>0D>7h7KZG8ck1+ELD;6-8yM2BSc}TM*@I>!_eKIwfre&<-zgRAJhOH2HS8V= zbrVXl1Lk`Nx)n6>1b}$rU3{77*{=m*t8QPv#iGhL+*K+k1?is4HzcKzB*|`13q7sR}ukBQwA9J?NtXtg@5PV$*=U;Lh_| z*b_~xw2LH?82TkVt-pmm{3KUYgYHFR!#~#_C5TY=VvS)sKc)(z?e)OBc6ADD7!%(c z6Fafc5RM#pG5PS_#=9Zx;V+GHra3!<_g_4NB8WJ?IFG;>!o!co8jGz=K(9eA5L`Y~$Ofqp@XaaTUA;(Vo;0Q%@~{l;p@GbvPEueC>`s4Stvk}J zIHH5riSL2F9WNeTf3I7A0wJ6yX?q#FwzU%`!@dj^wNmk_7p_s1{+RD_UAM~|`Vj=2 zAySGW1=LOj)VV6+Rx=aTinngZ%u6hn(PUQnia!p>$2@L=!VFq-jkPK`cjTiwK1rBzAAZ^UBtBQ)Kt?!bB|b)~f02 z+8SKl^nWstOFU^QTi_v1;^_OH7&XN$xW6b$&;^yO-Tq`1A?2R5X-|>9B*%*#=RnX$ z>qQ+Xk}>N@WNK@q24P-&a61I5s*5_s&ZIHT+qtXiy8jV^f#+iP5{W1xwJ_;%E)igtRYl5f#{yb1e`@Ke2l}Ui#Xa^gDxBjRuL`HyfTTrMq;Rx?JAl}Yg zr$DklXfCWE%P@~O(>UiM);)MAezvfk@_w~cht>dmk|aKl*!r#LN#F4wFw#xHP^NlA z&nx}Lci#KsiI-=s(FtwMg|KGJMI^cf$nj^MmsyiPMXUON84<`Wgj{5UDuO>7E8xzOGdTi z_}dj(LdCU22aM5@Ka)$*WGN{9U|%)%LQfT*V+0}SFYY=Fox?nO89oz6ScjG z6#A}Ps^!{tfxiPYmW?^upoKmouet?i(cFOeoBg)}Lask@c`pu^ztmIoM^&hFhYxF% z=2j)9+7tf=&;oe~!1p7cEVTBIED5unXy;CZo%vAljSmYjJHE+V-5{P&`Sv$m+JzbA z)$S8@bBW?N7cJ*oZQg9Z7qv6Gh}asszN> zJkP{`FYsR_vc7h8YMI}^%sk>iA6oupMN$=lV|Y0ZAF95?jw`RdN#5>Jb_u@2JgxW*hxeQC$NA(-UINyx>IY?t3kS8v6vV5*f zfV?c-a}q31BSVraFtf~mS?V&y_GDKq7r`I2;n@?kjse?FfdJ%I@{pr#j`L!7^$NDo zu(@8maNn@Ss5tW-zW_5WJMWhJHL8T>c)*pvNGUD%)_)JCF5a%udvK6u6NYREQR4J# zN|M=+%q_-Nu<`Ykj^2Rz(1#i|moo+X+paad_^*Pl3$Hd`V$<4|y?ElfK>MJt4h)Xi zR&Hq%v8XgEZjbv+dC$$-Q*GvvaR!yKRcQ{u+o{n}!zCa$XNmfWE2s2Hbp7u&dG7D6 zZpgK1bL$1aS$wTWC)<>yw}&9>m+oD|OSW|MIhs;;t?lDpna0Ysq)#B`u)Ht!CDOMA zGtaYS1eUOJEF_(?Xs9);51>OnpLtew8vs^q6YqH5VPu5L>$cW*nrX23X75;IlVUYx zq}FJR;tdgyq@PbX!j!h{)0i`H50C@+z}hov;wYre2H%_0{yiZ|)ydp)(X=Gtx5?ix z5ww~aDYTZwuWknzM0~YrmS7-Gy+2{v{*%^nw}D-}quTe&ACn|+JG1RNj+w9bqqcZb z4X9}BIJS7j62lPUw7o3b+ED9)Y6pCYP1LC1@7u+{ewY#9&pwf{4c>k@nq41F9x_6! z6W|}QfU-aRX5|WDXJ`htYGQY z{0@D21Gw}M5*lNa^gk@@Q7&hC{g{rlH?(lBA03Ug7vg-5zk6A!MV%9?;p&G(yXM)o zpoI zbscR^x&0(=SLiOM=q^|2lI{_2+LlypCi%haI46l>^f^|;%6KNxNp%qsdJ>rJXN$Z6 z$&wQK@R52Fl#JwC9}*#hEf`cqv;`SX>ls^=jU`@IX+SrI1=WQ?Qc9o}(G|Nqcb(iu zIVMOEvm*qLP`pg`88&Wxl1}M->?DEoB%$L35V_v}l*)NnTDP5Tb}_@3#??qo2^^x< zuoTQdox6XfU8f3fVYpqSoh3zDJ0-egV<04=XvE8}!y|9RgWTw{w3I+IQifW85jNB! zA}&dRPv?RqvIXW)x5(n08JB_?`4Zjp5&J=(WLKZ$L7(};weWOB@yACWg-ug_ipxm; zp-BGANWCqZa|f>P&7ib!sy1a?E+I}w7n`;F8HS5yue-;-(I_U*Rxr^{+n}t^c5+>h z^2Q613wMlX87i^m9=!j83AH>=515|uY|N;Q`Er|{x$F|7vBj@U;z84()B8bl@N!nN zMM=pRX<&7-V`zQbVx-P)WXC_1IhvAb=j!xKxm~+=rQmW|J9s4CGB$WY$&LFn9Fr=e zmMgKwh%8(@4K@auDEjS}gaMApo`&MXeJ1Z%ftMGmMdHvPOIbXM@;|A1l$DbNI zM>yBT9bgyTrsb((bh1YNTp3{?S&bIA#k4+YT9eXeCt^P}5qiWNk~ z0?wfXkZ4-LW&yi&o%mHr&F_g%+B>#|gdMl(K?BVFWH=9ZcRY?EUt>iU5PAp#t1zIs z#CBo<)filMA+g+DVSkHT)o6l5Pw-=1HK>*KtXt&mA7HTMwYL=_@SzWI;}=vIN1+e6 z*%TZX$!H-Z-1hlMQPLNw5lpfK;PC7Nk01O7WSe-OrrQ2KzG3Qv#Vw61#VfuTg5JnV zq~GUu%=9z3EFI0kl+OcWx>HaAex8M>IrLxy^Jg%B`sw-m1BliH?I(qw9Td*VSRpF# zbe$kfYFvDjeEk@IuGZjH`-g^7XV}&AvE@optAg!oL_W6Y4!Q0oZ9c6ec2fi_Fvomo z@GQ`LjNhJtdl)>tlOlm<+=ax2T@B*sHbRcwn@3@foH9m~zW=64RsIqCXPw7= zMpm}0?a;RL_Iz3sA>7)Fina<8g^NkK6SgMguh9D1(8767Mk$kNO4y z6olsLGW22S2@p+^G^t6*Rxz|ctgj9e&l%+Do00%UO}I%~Ag0S25)?xTjE`wy+ueEm z9<#QqiJD|GhLvK@NyCH}saHF$%=X4w(b|OwN@8iM3ZYoh4bwwV8^T1paQ4qjtnpI~ z_o{e{(bA9=hvx3T$4gGTg}Yc1;Av2`2!JgwHUCy0>lQIh{`Nugl^#UWFPQ?X76$pG z>rc>n63IQixf3+Wb`SpDRX*e3WBHJDi}D)cU;$WrS5>#mO;t^Ixllhu!YEm@rd-Rm zq9LiADo%r`D0HOfcc6Y~I+bRPfBDX#-@ACz#8`5D~G1?tG9seK|uXBB?_nQ>vntpiDj^T-j2kaem&q)V#T>Znx^*xV85(=}7Q$ z-nlbbTVH%8MUF$H7ih+ZiR&#NTHh2J`*KnXc5w>k$ZmM<59x^rQkPkWrcBYVkW`|h zx-AQhr0kdqfDj81wr=r198zZ?$ZG{uly@z75HEP3EjUQL$xso%aB7*Ar}8X#z}hvx zv(qyDKfQegSd?AUup+sDgn)p=(#;0Bq;z+KfD0_$T~Z>5NQr=ggtUNk3J3y93n(cF z2uMh$Qu^PE@%Y61eee5S@Ab3XyXVY3XXczaF?;6BJ)2A!vYuMJDzL zp7m6m?dKSl2^|{Cj4!U9jGC+>zNwpe_b=0LPVy0#v32|JzzpWtrYyc>``^LOK#`mf zE&_oTq9PqxsgkIGGYjYIlmT2oQ)1mD>h#F8w}1a~?CyT73p8@D zb8aPOpV>%bZa;VT(?fGiKA$n2*qnXmgeF_(T@r!es(3>U;2Xo|5kBjM=uh2CS0CrF z7K`7%>1#p%&?;~=Hru`_kaYG>JAxyh;F~Vah{tccKoxZHK4REp-E)k$dcW}|K z$)}Vfo&2MeHeJU@sip3m{q^D<*MhEjL6ag+`}oL9k2laZU?f33CsA;u81F>yVG@RT zk-l`CbU$!5&$5Y2Z>EV$AG=3a!@U`BA#qc47PKO6KfiVr z+7u#ehSFwgg34ySNBy1hCc3oVng+S?TGEO>veaI>V`vfn(e zy{}hlXHjdZYy!6Vm4)gtd%f0q;Q6HY*rKynCzu#JZHZ~&9V*M3GbaRVx)CRfjs-iG z)y)szZPI;&s-p@K_K9Pa&)^GV);QS(@Zp)}68VwAX?xBKJ1k)dl31P5Od;;MVjI4} z-FTi+H%14ft`#Y;)u@oG2CFLW=|oFw#{`*sXc0!6tK`zbBoi-cBYaR8aQ9#`+A>W?J?1yxMDOwbCZdA+|R1qm5z$wkwQdi+rE|C^}{~51$}|+Of~&Bu|*Xlw_m%nn0VQj z>JJ&u5r_4&MPKN(i3KdO)=^20=3IcvZq2c62e#9NgtvktlAL@=H0aB(;ZoeXu7#V7 z|00{18w6M@4avgf7z}waqovE)F$1R128L`x)D^i2`EAhi&4SInZRB$XiW@TAM-he_ zS1g8vI#);h~H880l{sfXP z{w(Y}m_piA>I^)B9Q+J)Z9|@;`VJqj>{oX-C+qIdii9!Cmz%gIT%uF1t!w-8xJ_Li zn8|z~6kkkS)uCKlmUJzhXto0P2(KZdjgHA5m6ecGBlyZYtm6Hv#pK>|la{h&1O$Co zx;_$e4PE(?$~4;^g|~v&fZab`AM04iMB>HlPK#H_6fPotO##=7IV)DS6aZSu&`x-# zo~mBcKwcUnk)~xBCYckF{)HB*%$ft4v%DP7{-OuMZ*| z6|6+vYndvW&rfPvu!ODyRyEwVAkI>$@z5&Tcqi%FsEYSuqsF{Ajzp4muR<==D)71( zMoqVl(EtW?CeZQ2dfv9zlMWKE{cd>Nto92S=#+S?ZxNUqe2IY<~D}dxBwV_7|7CAE=a0ej6U2(6qHf$*F zK223-w8P+9%xYJJ2&t9=<5)rnT8bTBfB-Q*DK4Oag2NxUY3yCf422@nBvVOOeWAA#ZK!j5aVSEao6jzQc*FOv~JgBD+*zNVj6a| zaHvq%7Y7?gvxKeOj;x{dGmQ4iUIkL)eZVNHxR=F*31Ea+OOlW2jAyLFJu54)8wsLj z9ZjqN!*4{DQ@qnSs+E)r&oN*ewTy`i43N@x#pgSDkt9jc#Dg^E}@!7@a-{8qP?)~d4&`t ztxOmusV7DsImI|~S(&VdpL$-?==V-tx&1ba32ot3Si=^vU|PN%qpESz3pkAgTM5#}Q>gO#-s^|FH(#1!<2Mp?)ymhBS3dP_3lb?UC_jBQ zesHCH9Wd&SADkaQz;q0-a3tcc8uid)gx4OA*_RTIAEc3?#T}W@U}W@cbe!3<+-L%K zl%caWr?X#qE-fiME$O@v*M*r9f_fvRdLulsHt3G-wE;Q8iYNJrUU*lbBg7R?B5?Dm z86Vh-45i>;>hyQ%;R%l1EgQK8-0Q~MX{gUg6&JO#TOT5!@$8a^(o&iBT1GNYGvJ9@ zwO*w1jU*TclFaK72?g{1xL0aF@LljYo_rw~2uy-2uUFCknPWna#)KY>Rdj?*ZiP>7 zwa$|rc({q*68}5^nzWqhdGXbVDSo}-(xTh9yI;OiefVnBdRo=`c>rT0lVl_Fd>j}( z@<5XnPpqBuW>={?G6%qck~haMQ14(7PQ7^{#D7~dTk3=yNGCvo#TbAQ(n0aul8t$Zu}E#CH%2-hM!;So%U5zI&SxCPYj)Z#Tdy-2*Fjvub@a|hlGyXC@kq`)~r zS=d1BP}A|k8(O|aNI~&D=>dze;g`{~6%TZL2rN4pyZ*?mfr48#5^n{8CC_F#H9BM+ zQFa*{+Zt(BCTrywS4Q<WyZ+YK`wAY`zK;XS#EdQO?{L1ghAjwbYt(+AKVKKL&rdsqg<-_td%jF{fl6_XwhYck}8F zzMr_lSMlB=-Bab)LoF8r$rB`Sa%6JbX)|X{rNeCSqMDTzx7Zn8q=k26Ff;om#Lr4e zTWpe$iYX{=Q8Vla$Q?D??0MkjXZ7f4C%rw{Fe=yyusvkp`0`%4Y&ejEr^Q+?D5Y{M zuR1h0m`UL<29g(3cAsW9ulj4_?L7qL>C^^^n)>dLRl&|f6eQ==InSUdsBW?FWVlkK z;84>Y9OQ0{w)HJkFWQ>>Naqf`u#I{jKSP&FTh!z^+`WUXZE&Do4dJiEntj?}Y&&f{ zhdY^OE|LnUvfeBD*+N?a3aycekRl2CG1K66L$72}3(UG6T<0W`Mm>4g;=8l@6NWAT zkapX8aSOY*Xjn5EZMa+B{G2(&@a6-T-t)=AHjQ0V`<8^ai`%*$gA1O%N=cjE%)4(r z?$3}Q*3CH(wcQ;4Ug9`8M!8pz^DaSxUl*t>$rDUalrAnY%VRr=4n@LvhWui9SS z)Y5+tWA0I1mN@uk>3VfZea7bYM$??XM5$!3@2EmsX8fx6)t)J~mds7vF}@+T>(vmN z=ifBA>u$9J6|(p!G2_rS(Q`whw75KTW8yvI8ZaYEW-?Z9Og;|^;4SU#Iw6DfE+!mu zP@alOKNTN&t6>zJ8Mn%?w&b7l1pm09{_DvHqZtc->C#}|u$9jzm~TB~SvM3?X9DDV z4<~hGd;6DMG+rz(EfIDc2VT?Q+jt`V`XcZSlxuqI1W@8wD*(-jgaZp55mM5idYE@@ zX-)+HctG+bSOL=!9YX5Q0jAC(N1a8O5=QVNeukLh{}FZyhykeU=Zb=8B5hC*HI$Vd zQrg8AYyt&t3m^o*!u)Vk5JcO>6Nm^1MnC~Hca*aym=CzE4Zu+zE?(}IC=Y;&rn`%! z4$9L60>l~wLv&HToE{YC2sDH)_E($U4{C(R!cS3`Lst$;gV_;;#*5D@w^fj>kKf@o-} zfngF7KLv~KiSN~hXbXYR<+T4GbJjIK@4}!U*qI<8+QJ~=zaXN;^%L=LWX|OG^X_kC zU_v0+8OML3h-USpj5N{%g&ryp4H*>!LoF^qbnbR2cL*9Li}J8^w{!J$aR%zxSP+WlgMOh?f8>5ZLBGTPxcgUJ zAP@R}_b1Mub3b_ip8&=0ub-H|a_AZ2420RVbG8Ah=Pc#yVfQPq<7MHAo|x!?1$5r8 zY4KY>{}Pg(tfrE>_D>=4NV_;%{Y_G5-S^Lu;)DMtDcCPb{b=9M+W-9%XwR><{r&D4 zr=Be!KYH~{5B_<9IqOe#q!a3&)*)#?Qv!;T2PO>E1OWpJ!ud_nv2$%afNFvu zQXZCQRS7@=Er)bfMA_NcdV&Rn1VIq=3WmOiE((Gu0SmpIrIfRcBMMk7AUd8XCw;K6 zFhIfE=4{bIPZtnG4e9%P&d$RFST=rxpcg$r0kcD-AaW2Th%!V2q6yK4=s^r1R**C1 z5POIR${Xbj@w9bEp*YSO2gLkE0Ym9*9sOgKVUb4J*g5}H?;>Dp01M2H*6e8cpv$1A zf;k+<0Xi%CLxSG}2>%{G7--J#>zK^XfWt68eyD`Ruh7Ejx(=$k3S=3m&DZaHKt2AZ zj;Kvz`ueOWTuvgaz$`2hvM@4>yQIW+gDmX#QMYGkFj_LS@Z2M>0_8ESmfq! z>JQ$zT`PZQ(mbF{3Jja;kEM&$w#=Q_GI06$}8Is0MH6tc^Ab(xrFfCBg^Ib3)R~;7`EGlSV zvbtL2K)shWf8~w?2>;Gg>r-z*`ZrnqUA=Ff`8VoTKV39GZno%Ea+Q5dTVTR)uBFzx zbWPC3N6q6lMrsu4#*qAZ*(qTv$BZuj^n1ik2vyIc&6k8VWqTb_G~D6I#4pc|eo+6d!4{{V6{_5t=sU#> zRo8A+D{v~v^OQAQ2x)4&IJeMfV%)|e;IY4Lz0r5W_k8`GcWcMmODoahpYnot$}ETI z6kECRcqN-y4dN3j`yJ?C?eLJkuVz4(~MqLv!j3@J4@WdYvI22E&y(&Af4fiuBj zmtC`NqKJEl`>Z@V$Sw}I@bxXi%H;0aa7J9dK!gn?=*EGl?_5#Hk}ln?j(Vlt(_xG` zh-_^+ASA>(cuisi3%cN@Ijd_Yj*X8)etm)7yVJ$6MUZ!v<%AdGFmY>U`~w%(RtJ%{ zxuS1Ra&Z~rL088MXs4&(Gq1vi^?Sol>2TNfhpH-tM2Nf|L|7IsfaxiAo9ixF2t_bc z0}r@UN?++3HwT4WA&2kw7Rs0NEC?~PDSVnBU}HZ2ZFEGO`3=unb&kRd5UOplL5PNs zUwSr{z{AivOUHX=KQgu_>WbU+<9is5YV=n+f=Ecds*HUm_=GGUka}8zs(n5z!r}ls zQ8`x_60n20g;}G0i6<#~L2#E9JLC0**FdzfTP-OHUmoa`9SMg8Ma(-IshXt~sXcJ3 zo!I7A5m?{{%SRU7h$SNSkMbS-te7G8JZ^=|m-&85Qc99iI@|M&_|hkt;qMRBRV&w& zMwX00ecB1n3SS*{cane19R1WHGBWL{r~S>B31MHr;Z3sL8NPqQ0f`_6HrjiodoFVQI4@abjEyTkWX^Db( z{z>_rZB74kuok3r4$Eq?Dwu_hZ{~F4^!?1~dvn?F6dVT9DC?5$E-hv@&SbIlgxdDQ zcK4vz+buIUGglvS`F>+O`slaWAS;{xjlk@aitf>!*0D>0&D0y2RBLh54Ofgdq+jyk zK@ye|wjO-K$zc-WApjXSvC3qWDNaAUPh0LdQlxi&a`%FK24*;mHOrRR(z@zs`Di0U-Q2@b>|xYb~yuld*bnmLxxt#4Z-7vEw4#NQd0B4 z{k*Oit)Vn&3|tF|ZN}{Y#`tkXZZI8lcGRs7M#kH|sfNvd)2GdW<7RM(+!q zkFl~6AN~}hN0D3;N?1Z2eMj#K)eUT1x4>y`hM4<}14R$p5~}PIM|D4(JL1vCrJ~>p zc@byRX!(|d5UVrS_Fy54wMHr@WU(VvL%wxlA7bC!=C;nhjiEC zi%*$e0v;rr<@@~&Q>o2HtR;Eg3kwBvo^ibrS5kQ1C+O74+!@t!bu(~j3%#GeUb9V% z)!kFi!>?X@dtRpAsxg@D_1=vjreGz~kBV?-3}al1Kuk&GE$&C86gdyW*!*_}Hb=Z@ z66qY@ZHCA{V`ckzNa*1^r|bzrg|X7n@7~yPQun@fwB5csLoe3BZj$SCi&al= zbeg+)v=C3lqZT>fTsa@xs*u0l2JgN+7k_G4PcohY{8}Zp|^|7T} z`o6=bHC2D6>NmDSuKWT~CieO!rb7hPD8mxws%v}oG2(Z% z9C%$YjZc^|?@%NTUVD*TX|KW%O@C9nn71v(0eo|sx%_@3t3chO-Imx|Zdd8pcQ8aa z!s`4Q=NQ5cN|7>B?@Zn@!BQx6*QP0&wdB~0KV;Hr!g5?R;Sp6m6}&ox4AQ(kl8_&Z zu!bfX>wZB#p;}IU^=eeaNv%{Zc~SAHQdoby;ntVvx|_UhSyhjgC}$^*NC|us)Wost zl?J4v@wXP=W2Z+^J)OW4*3rTM3C*tc-d`=ZCY}A_I_Ubzk)w>z2@r7~4Cg(uDl%y$%y>&_)(F`TgCU7R9Ft{}V1f0JXhkZU+z38InBn%K3# zTdktVVqg{{weTd)F@`Nq!BL=QP_}MSut%kuTs4$mLbQ|_o0Oql^I9>VZn>sL<1OAq z8BilGmnlfz7w?TyxSz7UcJFY>YaTnk4RG$=Mj{b2Rqu@na~!965h~#ZQNuE$0yC5F zLupW|3qxASNR`hW#0S@-uP3kF{SDVh-)~=?C2;tr5Mh6Vbx@f<&XW)qvM6gyw9zSf zDAr9pfjd%1>#EcHKDH|H@(6ofWW>wR#E7F&YEczBhjOoHVcqiCSkDms^Fw0ok4f*= zfy{%0+V<=8Ak}IY``7?3K6#I&^Zsw!JHW*K;6L+ICch`zP;6Dq1jRbxY?Q>L%) zn|57EUQYxN?SCGRZ54Hnm9S7inqONy2?&;c$52qhacJ~8%Z^gHYFg7P@{n70d*S-B z(TCD;O+Bec{6xLX3vX8T5l>5uTElawqG$mgzoRd-s4p!x}|uuyqI&(%kP}lnOSZveoF2#Ws$GiuE^)1((Aoa z$v>%bY3qp{WIxcoBe3g3d`&H_V9WW=S>pNDYwtSO`pbHTR_}`BymCK&=e40^ASmP# z6l94#aaw|8iGrn9Cm#pb4xQ}#0AsbBQzJDxo>}IFqRYSFAc#(QR)lJT?f}dGM zs}?I+M%Cef#eYC8>SNzanK9SO%lAsOEc2yx2Ob9_yEJyqmCGO2n>^q;(elOkph0$* zf(e!yO?N7??%%;;)Ytkfd8yns;Kt{a>!GA#`dAR-FXP}Hc{6&VAg(K>sllD5ciXqs z5pqylT}-wBCWd9`#Ds@?A5Lt-=i%lbkoKLS5Puxb1=`qkDs0#1q9P z?1xrdPo6w!`&>ZWpJcj_v(51F3AMt6N$s~dS7R|(+>6Vrai}n?EBR7dM?Q4=raqP zJUK$${nj@-5}L3MbII)$*%2LfNog{0q-T{)*yCs6`xHIun)d>X~CX9JglwqFnxc<(cNcD+fx)X!C-@la*oFaMD} zipeZO0Y_x!S)g=At1{t}bJ!^Z0y8^G>MjUYx#p<>8d4-TqZ2+l;u zVa+Lz&acnD@_OODUpOL6Yi|>L6sU9OSz}>T(H*BKEt7{I?!cWtdr<6_%#OWz-S2+b8d!yJRA$&iP?YaGv z0n$X%7NVjRYwlMQoL-gMoPl39J0G053l!RLrB>3a)#Tr#;0T&5>*|Xf%bu`~yhXD^ zl`3Jow@BaR%O;j%M=uZb7Us-)=V9mj=grJ_dmhBo#|7dA@p85T$XdF% zqafZ8KZrlXALZ`yr|r(!QPO|D-QfeaJAa&b0S7JU9}D|;Y<>JN1aN@yhpo@R&QMo@ z;>N%t4@UMIzpU){xbj*g@p4jFBvQ#CU|eijlJin|QY3N&lyx17c8@6QC@tqBRCFmU zJ&754-J(J4oP>gmJnF^FskZLLI{iXA@2%j8hY0iC{bJ5fBh8al_R#fJbky}GDtgv?RGqT0`G+faA(q{Sd^aes|`x-B}a|^{zw$XkF0v;S_IPv~kGYcle^^tRMi!kK*IxSlBxih($ zN5SxQ?a7;Sn0!wZtJ8^KLy@pbU|gnuj;1S#F8n_z4XS1I8r^2Fxm9$wf4A=S!v7jFj>ygBy2NB=qA_}&f#{pcVc#_=dj>-J|Zx< zF4)i(+L|^!+@{Y%X6IzGH<+DST9?w|RB?f4Cgk~~fmeQ$_KowVQqQVI>fE(rUFapf zw!eaP4K&l;;Pbk3DGZ9t0!bf?%JzaqIY->*O(JhisIZPg9Tq zh4-=u6w=Ns6@aU~;zS_y%- zR3s|0C0r2#nC2O7F5UQ;ZwHH0jv35o`pYz~HI}n0kki%-W?~!e-n~$wV+_53Mb-+kI1eJtV`lTaQFk-k1pSrP=SrR>UQ>gm~cnVVYJP0^v;9JVT9PJ zjdfowu*@8~9qeCfIdE_2uh>0b>m6%jGiHBVX|wNJqi?O)aZk4NiFnYAhdc~VL5!~@`<)91I4-(0LagkuZW}A zj`$|#CtHnI&HlVMF>fkU%f#hH23b5Opx|7;ev$X%tF4Zg%NjHllC;vf757I^*$%01 zCZ@hW#z@xg$Q<;E5yj-6&yg$M0eM_5H4f>B-}~f^s#y)ds2IkS4vw#@4ta`^N#3V! z8E1Wdd@ie z_%E}n&e`q_A(i@Mx60U(Wx7<GNqrTojgBOiwJ_m#ZWVKIv z!XKel$tMqL_1UmP7ZRxk8H?}seX^@*FfI<{Bb!=Fp`w=)?VNsCJ;Y^M5Dh3CXMk;|`hFRGPm-1t;A)iG`T0KEzK0%~DQea1k=`_Kq(?Jq_lO9LILviGjD9l0`X zysl=5lp4QsuWgZy$v5&N3ryiX2SUv33uRdz0mbU+;>~5$?@5qd;nr|fDc;n2 za#6!pZ$;va(f$l!7_xTho4mE5F=LFKv#;+C0s{$Nr&gbprx+YCmu~i1@6|CNcWFl4 z0|n$E+&M)9JMT5#=n$e4$pE^gVRA*<;c4)-o~saaQwa zd5nMG8_&UcQ*AuqI7g;L+kC&qFA3)}M%*B~_lYHr>3d&uU#+;Hb#$kC?IQxqW3(en zi9N`C^dXCRu&@0tVkmlsrdIT$t+CVcylVX8i=GCire-=`Clt@3MCP3v?KVK zQp+_q(c^z;1 z9&IZ+BfU`GDBs2_rfj?|&)Ufz5Hx4ByJAiAK1kq8vOl$?s(+Kx=~LXNdCG7FXYz%O z?&D`$R;3kb+->itaOn;-pW0jJf78xaQ4K!W(fLMEU@R51^dWC`Uq~Gl&Y@Um_kzFK zEQ8KDb&jEJ_X|FgjJ81sGe;$)fQ~>edx{CO-$+DAy9qLWLN_%Z^0@0_cHxEBVpLXv z%B-^m!{_0#7b6EB^AQaVr)2t3#+kP<&#T0OXk{4JOLXYF_n1}uu?~b7FkTp9W+V{9 zFxFl^Y>E{g8x$>2j`d|B35Lwc?tjdwvA^wXg;dBPpvS3^eFNqR&rPT%&N7d=TEO}~ zbh@0@g?Y*07Dj6AGq7Lc0|x#Kk~ zT%Y`s==M{qHRTS|d>$?jWy;yy2eV9wYNxk1N<6-TXbxUZvhw(~+b7wsJTSyCLE_JJ~{C zDr2!)Gv4hMZLMI<`QC;kWqY@6^io`?@MPa1bzsW`1(#@n*Sp>;*Ewu+(*s{xmlg}6 z9xe4@eje&x0wQm%ymX0qUvYhNZfEdS2`_Wo))FnWkgwQ#N-MAF^x(s#8Xug{{&3d0 ztB=@@6NfU{Jx>;0>gc8#%uT%xW?7i+i}mYVw+-HN%Qz*YIWxr!DZGiUb^r z+1@&*WTuSaiII-ktbXDx{ISf14O;FD#UUf< zvX1d+4d^?!xGygD>Kl22=GUTK{e@WVJ+Hd!t%9gulv0VhtE6PawxqmQW^xVM$CeMx znN)!b!<=gDpYPx@ySYBcA+0ZMc=9#I>WuOeBhW^3Lnq>g9&x@Q3Evkwd z(cAR0Ye6*lv9n(+*%W!~3{H#4c6b@v)K^{{-naXp#G#YVoZhTs?s4#3`z!vFnnBa( zUEpi9&?wuHvdLskul0od(@y(Yc|MZ~yd((93#$H3r6clfh!nMF-A-EC67?`GF7vxC zeER%p)fQ5(slCZwHzrRlnls_73cJ8z?;VDD9MXbQ)TJ&7%<4 z-L_3n6~|E`1?G7-|tVL%nl5R=Ay9cx>F^EMiKcoRR3uKPM6 zOA1Mc#64LsoPuN^jd_k76|d5CS(xnwGv+jIlYOf>&VBq{qS-g%#ElM%=gll9obwLT zYP^oUS0xB`Az55^)BkR-I&+l$-NWmr3+*4SNrq~wzxg|9keDPA_+eiZk1x`d z$NJ1j;sFNyy~G)1v{mI9(FndGzD}-AfG025*U8b@L&R5{?W~9hkVbG%!}ZK@xb`F!Pf48PnwU5y8{@;E64_rbhok=(FWYJz7qs;;%v5_ zo~|Mgh>wpCuMZ!ui@Oa3hCm=7P&fn*=K(NyJp7zJk-j|69!vngvx?Xm{wn6|!FyIG zUck@=u``6gc%hJ=jD9-c+POG`(TtH6E?%DEY+hb=Rw7UsOh5o>Vaa1@Apiv&2&|zz zP~eZp8i9ZcLgB)eC^+mVJ0R-BKl1}_01Wv6IRGgUz_Z-S%M#@-&ZeNL3RbXn@$mfa z01QU(LIv3%KbrsFsuj>T|6D7eLw|@t48Rdl1N?Ta{bT`4p9CBV7XaGI1LxO;@rl6r zMFe16P+<`$R1ESLOrZ0DqB3U&!hfgeZjjb$2tXy1D|Mnn+JT&JbW^vPp;m zH$Ck<9Z?czGf>LW^LxV44n3np9Ffj8;%vS=Rw!$vm!l_}ge%Gt!3Q-*d7E3fAl}o;r#4S7?i^t7)0MY$Yd*X~7RKUu=@*% zGZZw5Uj_eR9GroG)dLt3kY8()1PJ_J`upz@`eQ)`o@Eec^Fc4Se|z5LH z{ri)pi#z+jp1S~&l$WP1fb+9YIetC6;p>jF2K=Dm0wDCF`uz_qC?LQm0Ja8yhryx3 z2;htc{Rejb0pkOHTON3B;7>3B4{gr>3ylA7WdQ{AgD-!=gTnav0Ppla!QfDYAmCa4 zXBbQvIO6#WObCvC7U(Z{Faf}8?awec9Pu|83<~{gUEnY%(E7iWg$fD+e&K(j2hX24&@j6n_SR+|5rSIDF5Ghz@S2ZqX+oL{S5{eL_ZAkr@FxT`JsQ8i_qWj_yCRl z8$C~VB;a}N4iXasLv-x?QNTC=1J7o;01s3FPVm}bh?29l3;4{N4LBf^1)GS$;lhFl zd0}}0gp`n=j1Wu~3cL&ONy*5`3cv)Q{1X2=hAH})EDuklyXV>9 一個好的 Commit Message 必須兼具 What & Why & How, 能幫助開發者瞭解這個提交版本: - - - 這個提交版本做了什麼事情(What) - > 這個版本修正了什麼 bug, 新增了什麼 feature, 或是優化了什麼效能, 也可能只是簡單的文字修正. - 這是一個 GCM 最重要的一部分, 必須要簡潔明瞭地告訴開發者這個提交版本的目的 - - - 為什麼要做這件事情(Why) - > 說明更動的`動機`與`原因`是什麼, 並補充說明 `What` 所描述的項目 - - - 用什麼方法做到的(How) - > 用什麼方法做到提交版本的目的.
- 在大部分簡單的提交版本中, 是不需要特別詳註的. - > 建議是有需要特別補充的才紀錄在訊息中, 並且應該是提供 High-level 的方法與概念的敘述, 例如用了什麼演算法, 設計模式等, 而不是方法的實際細節. - >> 方法細節應當透過更動的程式碼本身, 以及程式碼註解來自行解釋. - - -# 設定 Git - - -``` -$ git config --global user.name "your-name" -$ git config --global user.email "your-email" -``` - -+ Name - > 在公司中使用的名字 (不要用暱稱, 要明確知道是誰) - -+ E-mail - > 限制使用公司的 e-mail - -# Message Format - - -一個 Commit Message 主要由 `Header (what)` + `Body(why)` + `Footer` 組成 -> 各部分以空行區隔, 為了讓 `git log` 顯示乾淨 - -``` -Message Header - ---> 空行 -Message Body - ---> 空行 -Message Footer -``` - -### Message Header - -``` -(scope): -``` - -+ type(必要): commit 的類別 - > 用來告訴進行 Code Review 的人應該以什麼態度來檢視 Commit 內容. - > 利用不同的 Type 來決定進行 Code Review 檢視的角度, 可以提升 Code Review 的速度 - > + 看到 Type 為 `fix`, 進行 Code Review 的人就可以用**觀察 Commit 如何解決錯誤**的角度來閱讀程式碼 - > + 若是 `refactor`, 則可以放輕鬆閱讀程式碼如何被重構, 因為重構的本質是不會影響既有的功能 - - - `feat`: 新功能、新特性 - - `fix`: 修改 bug - > 如果修復的這個BUG只影響當前修改的文件, 可不加範圍. - 如果影響的範圍比較大, 要加上範圍描述. - 例如這次 BUG 修復影響到全局, 可以加個 global. 如果影響的是某個目錄或某個功能, 可以加上該目錄的路徑, 或者對應的功能名稱. - - ```js - fix(global): 修復checkbox不能復選的問題 - ``` - - ``` - # 下面圓括號裡的 common 為通用管理的名稱 - fix(common): 修復字體過小的BUG, 將通用管理下所有頁面的默認字體大小修改為 14px - ``` - - ``` - fix: value.length -> values.length - ``` - - - `perf`: 更改代碼, 以提高性能(在不影響代碼內部行為的前提下, 對程序性能進行優化) - - `refactor`: 代碼重構 (重構, 在不影響代碼內部行為, 功能下的代碼修改) - - `docs`: 文檔修改 - - `style`: 代碼格式修改 (例如分號修改) - - `test`: 測試用例新增, 修改 - - `build`: 影響項目構建或依賴項修改 - - `revert`: 恢復上一次提交 - - `ci`: 持續集成相關文件修改 - - `chore`: 其他修改(不在上述類型中的修改) - > chore 的中文翻譯為日常事務、例行工作, 顧名思義, 即不在其他 commit 類型中的修改, 都可以用 chore 表示. - - `release`: 發佈新版本 - -+ Chip ID(必要) - > 註明 target ID, e.g. `F103`, `F100/F103`, `All` - -+ Module - > 註明目標的 module, e.g. peripheral name (I2C, Uart), Tool, ...等 - -+ subject(必要): commit 的簡短描述 - - - **不超過 50 個字元** - > describe issue - - 結尾不加句號 - - 儘量讓 Commit 單一化, 一次只更動一個主題 - -### Message Body - -+ 對本次 Commit 的詳細描述 -+ 可以分成多行, **每一行不超過 72 個字元** - > display issue -+ 說明程式碼變動的項目與原因, 必要時與先前行為做對比 - -### Message Footer - -如果有 Bug tracer, 紀錄 Issue ID - - -### Example - -``` -fix: [F103][I2C] Fix an error handling path in mtk_i2c_probe() - -The clsk are prepared, enabled, then disabled. So if an error occurs after -the disable step, they are still prepared. - -Add an error handling path to unprepare the clks in such a case, as already -done in the .remove function. - -bug1234 -``` - -## Change Log - -+ [Basic example](https://github.com/Mokkapps/changelog-generator-demo/blob/master/CHANGELOG.md) - -+ [Angular- CHANGELOG](https://github.com/angular/angular/blob/22b96b96902e1a42ee8c5e807720424abad3082a/CHANGELOG.md) - - -## Reference -+ [約定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0-beta.4/) - - -# Setup environment ---- - -+ Install [Official Git](https://git-scm.com/downloads) - -+ Verify git configuration - - - [Right key] -> [Git Bash Here] - > System MUST be installed official git tool. - - - Execute `z_git_config.sh` - > verify git configuration - - ```bash - $ z_git_config.sh - ``` diff --git a/Docs/image/IDE_close_proj.jpg b/Docs/image/IDE_close_proj.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4ad8501410184c97a3471e2384349796d91167a GIT binary patch literal 102048 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%0DfdPoK*?qT+I| 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 NF@m-FT*zOe{{xZlElL0Y literal 0 HcmV?d00001 diff --git a/Docs/image/IDE_delet_recent_proj.jpg b/Docs/image/IDE_delet_recent_proj.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c88038d99faf2c26086d30a70b27cc625164dbe5 GIT binary patch literal 89068 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 aa8F1T#qMRM_3fYA231a2gHaJ5`u_n$MFGM9 literal 0 HcmV?d00001 diff --git a/Docs/image/TortoiseGit_clone.jpg b/Docs/image/TortoiseGit_clone.jpg deleted file mode 100644 index c5509369758ab6e448d0438a9b6b94255de48131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105773 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 diff --git a/Docs/image/gitlab_login.jpg b/Docs/image/gitlab_login.jpg deleted file mode 100644 index d2449ab894c3256086f228bfed71ab56e3df5890..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41294 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 bi-_mzE%*4(p)vQLMeFX@ef*n0?DzjS|JZYl diff --git a/Drivers/PB5700/Flash/readme.md b/Drivers/PB5700/Flash/readme.md deleted file mode 100644 index e473025..0000000 --- a/Drivers/PB5700/Flash/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -flash-loader ---- - -## flash-loader for eFlash - -`loader.bin` is used to download data (on Host) to DUT eFlash -> OpenOCD should use `pb5700.cfg` to setup environment - -+ flash-loader will be put at `0x2000_0A00` of DUT - > It uses 1.5KB (?) as executing area diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_comp.h b/Drivers/PB5700/HAL_Lib/inc/hal_comp.h deleted file mode 100644 index 6d04df2..0000000 --- a/Drivers/PB5700/HAL_Lib/inc/hal_comp.h +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file hal_comp.h - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/10/17 - * @license - * @description - */ - -#ifndef __hal_comp_H_wqqzibVO_lvKI_HWdK_sROD_uhjcZz7SHMtL__ -#define __hal_comp_H_wqqzibVO_lvKI_HWdK_sROD_uhjcZz7SHMtL__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include "hal_def.h" -//============================================================================= -// Constant Definition -//============================================================================= -/** - * the voltige input_n of Comparer - */ -typedef enum COMP_Vin -{ - COMP_Vin_IO = (COMP_CTRL_VIN_SEL_IO << COMP_CTRL_VIN_SEL_Pos), - COMP_Vin_DAC = (COMP_CTRL_VIN_SEL_DAC << COMP_CTRL_VIN_SEL_Pos), - -} COMP_VinTypeDef; - -typedef enum COMP_Filter -{ - COMP_Filter_Bypass = (COMP_CTRL_FIL_CTRL_BYPASS << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_2 = (COMP_CTRL_FIL_CTRL_SAMPLE_2 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_4 = (COMP_CTRL_FIL_CTRL_SAMPLE_4 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_8 = (COMP_CTRL_FIL_CTRL_SAMPLE_8 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_16 = (COMP_CTRL_FIL_CTRL_SAMPLE_16 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_32 = (COMP_CTRL_FIL_CTRL_SAMPLE_32 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_64 = (COMP_CTRL_FIL_CTRL_SAMPLE_64 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_128 = (COMP_CTRL_FIL_CTRL_SAMPLE_128 << COMP_CTRL_FIL_CTRL_Pos), - COMP_Filter_Sample_256 = (COMP_CTRL_FIL_CTRL_SAMPLE_256 << COMP_CTRL_FIL_CTRL_Pos), - -} COMP_FilterTypeDef; - -/** - * the voltige input_p of Comparer - */ -typedef enum COMP_Vip -{ - COMP_Vip_PGA = (COMP_VIPSEL_VIP_SEL_PGA << COMP_VIPSEL_VIP_SEL_Pos), - COMP_Vip_IO0 = (COMP_VIPSEL_VIP_SEL_IO0 << COMP_VIPSEL_VIP_SEL_Pos), - COMP_Vip_IO1 = (COMP_VIPSEL_VIP_SEL_IO1 << COMP_VIPSEL_VIP_SEL_Pos), - COMP_Vip_IO2 = (COMP_VIPSEL_VIP_SEL_IO2 << COMP_VIPSEL_VIP_SEL_Pos), - COMP_Vip_IO3 = (COMP_VIPSEL_VIP_SEL_IO3 << COMP_VIPSEL_VIP_SEL_Pos), - -} COMP_VipTypeDef; - - -typedef enum COMP_Polarity -{ - COMP_Polarity_Normal = (COMP_CTRL_POL_SEL_NORMAL << COMP_CTRL_POL_SEL_Pos), - COMP_Polarity_Invert = (COMP_CTRL_POL_SEL_INVERT << COMP_CTRL_POL_SEL_Pos), - -} COMP_PolarityTypeDef; - -/** - * Interrupt type of Comparer - */ -typedef enum COMP_IE -{ - COMP_IE_Rising = COMP_IR_RIE_Msk, - COMP_IE_Falling = COMP_IR_FIE_Msk, - COMP_IE_ALL = (COMP_IR_RIE_Msk | COMP_IR_FIE_Msk), - -} COMP_IETypeDef; - -/** - * Out type of Comparer - */ - -typedef enum COMP_Out -{ - COMP_Out_Disable = 0x0, - COMP_Out_Enable = COMP_CTRL_OUT_EN_Msk, - -} COMP_OutTypeDef; - -typedef enum COMP_Hsy -{ - COMP_Hsy_Disable = 0x0, - COMP_Hsy_Enable = COMP_CTRL_HYS_EN_Msk, - -} COMP_HsyTypeDef; - - -//============================================================================= -// Macro Definition -//============================================================================= - -/** - * \brief COMP enable/disable - * - * \param [in] pHComp pointer to a COMP instance - * \return - * None - */ -__STATIC_INLINE void COMP_Enable(COMP_Type *pHComp) -{ - - REG_SET_BITS(pHComp->CTRL, COMP_CTRL_EN_Msk); - return; -} - -__STATIC_INLINE void COMP_Disable(COMP_Type *pHComp) -{ - - REG_CLR_BITS(pHComp->CTRL, COMP_CTRL_EN_Msk); - return; -} - -/** - * \brief COMP get output level - * - * \param [in] pHComp pointer to a COMP instance - * \return - * 0 : COMP OUT Low - * others: COMP OUT High - */ -__STATIC_INLINE uint32_t COMP_GetOutputLevel(COMP_Type *pHComp) -{ - return REG_READ_MASK(pHComp->CTRL, COMP_CTRL_COUT_Msk); -} - - -//============================================================================= -// Structure Definition -//============================================================================= - -typedef struct -{ - COMP_VinTypeDef COMP_NegativeSel; /*!CTRL, - COMP_CTRL_VIN_SEL_Msk | COMP_CTRL_FIL_CTRL_Msk | COMP_CTRL_POL_SEL_Msk | - COMP_CTRL_OUT_EN_Msk | COMP_CTRL_HYS_EN_Msk , - pInit->COMP_NegativeSel | pInit->COMP_Filter | pInit->COMP_Polarity | - pInit->COMP_Out | pInit->COMP_Hsy); - - REG_WRITE_MASK(pHComp->VIPSEL, COMP_VIPSEL_VIP_SEL_Msk, pInit->COMP_PositiveSel); - - REG_WRITE_MASK(pHComp->IR, - COMP_IR_RIE_Msk | COMP_IR_FIE_Msk, - pInit->COMP_Interrupt); - - REG_WRITE_MASK(pHComp->INITCNT, - COMP_INITCNT_INIT_DELAY_Msk, - pInit->COMP_InitDelay); - - return; -} - -void COMP_DeInit(COMP_Type *pHComp) -{ - if( pHComp == COMP0 ) - { - __HAL_SYSCFG_COMP0_CLK_DISABLE(); - } - else if( pHComp == COMP1 ) - { - __HAL_SYSCFG_COMP1_CLK_DISABLE(); - } - return; -} - -#endif /* CONFIG_ENABLE_HAL_VCMP */ diff --git a/Drivers/PB5700/HAL_Lib/src/hal_i2c.c b/Drivers/PB5700/HAL_Lib/src/hal_i2c.c deleted file mode 100644 index b67d1d9..0000000 --- a/Drivers/PB5700/HAL_Lib/src/hal_i2c.c +++ /dev/null @@ -1,288 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file hal_i2c.c -* -* @author Wei-Lun Hsu -* @version 0.1 -* @date 2024/09/10 -* @license -* @description -*/ - - -#include "hal_device.h" - -#if defined(CONFIG_ENABLE_HAL_I2C) -//============================================================================= -// Constant Definition -//============================================================================= - -//============================================================================= -// Macro Definition -//============================================================================= - -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= - -//============================================================================= -// Public Function Definition -//============================================================================= - -/** - * @brief Deinitializes the i2c peripheral registers to their default - * reset values. - * @param i2c1. - * @retval None. - */ -void I2C_DeInit(I2C_Type *i2c) -{ - __HAL_SYSCFG_RESET_I2C(); -} - -/** - * @brief Initializes the i2c peripheral according to the specified - * parameters in the init_struct. - * @param i2c: select the I2C peripheral. - * @param init_struct: pointer to a I2C_InitTypeDef structure that - * contains the configuration information for the specified - * I2C peripheral. - * @retval None. - */ -void I2C_Init(I2C_Type *i2c, I2C_InitTypeDef *init_struct) -{ - __HAL_SYSCFG_I2C_CLK_ENABLE() ; - REG_WRITE_MASK(i2c->ADDR, I2C_ADDR_ADDR_Msk, init_struct->I2C_OwnAddress); - switch(init_struct->I2C_ClockDiv) - { - case (I2C_CLK_Div60): - I2C_ClkDivConfig(i2c,0,1,1); - break; - case (I2C_CLK_Div120): - I2C_ClkDivConfig(i2c,1,0,1); - break; - case (I2C_CLK_Div160): - I2C_ClkDivConfig(i2c,1,1,0); - break; - case (I2C_CLK_Div192): - I2C_ClkDivConfig(i2c,0,1,0); - break; - case (I2C_CLK_Div244): - I2C_ClkDivConfig(i2c,1,0,0); - break; - case (I2C_CLK_Div256): - I2C_ClkDivConfig(i2c,0,0,0); - break; - case (I2C_CLK_Div960): - I2C_ClkDivConfig(i2c,0,0,1); - break; - default: - break; - } - -} -void I2C_ClkDivConfig(I2C_Type *i2c, uint32_t I2C_ClockDivCr0,uint32_t I2C_ClockDivCr1,uint32_t I2C_ClockDivCr2) -{ - (I2C_ClockDivCr0) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_CR0_Msk, 1 << I2C_CTLSET_CR0_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_CR0_Msk, 1 << I2C_CTLCLR_CR0_Pos)); - (I2C_ClockDivCr1) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_CR1_Msk, 1 << I2C_CTLSET_CR1_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_CR1_Msk, 1 << I2C_CTLCLR_CR1_Pos)); - (I2C_ClockDivCr2) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_CR2_Msk, 1 << I2C_CTLSET_CR2_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_CR2_Msk, 1 << I2C_CTLCLR_CR2_Pos)); -} -/** - * @brief Fills each init_struct member with its default value. - * @param init_struct: pointer to an I2C_InitTypeDef structure - * which will be initialized. - * @retval None. - */ -void I2C_StructInit(I2C_InitTypeDef *init_struct) -{ - init_struct->I2C_Mode = I2C_Mode_Master; - init_struct->I2C_OwnAddress = I2C_Own_Address; - init_struct->I2C_ClockDiv = I2C_CLK_Div256; -} - -/** - * @brief Enables or disables the specified I2C peripheral. - * @param i2c: select the I2C peripheral. - * @param state: new state of the i2c peripheral. This parameter - * can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_Cmd(I2C_Type *i2c, FunctionalState state) -{ - (state) ? \ - (i2c->CTLSET |= (0x01U << I2C_CTLSET_EN_Pos)) : \ - (i2c->CTLCLR |= (0x01U << I2C_CTLCLR_EN_Pos)) ; -} - -/** - * @brief Generates i2c communication START condition. - * @param i2c: select the I2C peripheral. - * @param state: new state of the I2C START condition generation. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_GenerateSTART(I2C_Type *i2c, FunctionalState state) -{ - (state) ? \ - (i2c->CTLSET |= (0x01U << I2C_CTLSET_STA_Pos)) : \ - (i2c->CTLCLR |= (0x01U << I2C_CTLCLR_STA_Pos)); -} - -void I2C_GenerateRESTART(I2C_Type *i2c, FunctionalState state) -{ - (state) ? \ - (i2c->CTLSET |= (0x01U << I2C_CTLSET_STA_Pos)) : \ - (i2c->CTLCLR |= (0x01U << I2C_CTLCLR_STA_Pos)); -} -/** - * @brief Generates i2c communication STOP condition. - * @param i2c: select the I2C peripheral. - * @param state: new state of the I2C STOP condition generation. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_GenerateSTOP(I2C_Type *i2c, FunctionalState state) -{ - (state) ? \ - (i2c->CTLSET |= (0x01U << I2C_CTLSET_STO_Pos)) : \ - (i2c->CTLCLR |= (0x01U << I2C_CTLCLR_STO_Pos)); -} - -/** - * @brief Configures the specified I2C Target Address. - * @param i2c: select the I2C peripheral. - * @param addr: specifies the 7bit I2C Target Address. - * @retval None. - */ -void I2C_TargetAddressConfig(I2C_Type *i2c, uint8_t addr) -{ - REG_WRITE_MASK(i2c->ADDR, I2C_ADDR_ADDR_Msk, addr << 1); -} - - -/** - * @brief Enables or disables the specified I2C interrupts. - * @param i2c: select the I2C peripheral. - * @param it: specifies the I2C interrupts sources to be enabled or disabled. - * This parameter can be any combination of the following values: - * @arg : - * @param state: new state of the specified I2C interrupts. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_ITConfig(I2C_Type *i2c, FunctionalState state) -{ - (state) ? \ - (i2c->CTLSET |= (0x01U << I2C_CTLSET_SI_Pos)) : \ - (i2c->CTLCLR |= (0x01U << I2C_CTLCLR_SI_Pos)); -} - -/** - * @brief Sends a data byte through the i2c peripheral. - * @param i2c: select the I2C peripheral. - * @param dat: Byte to be transmitted.. - * @retval None. - */ -void I2C_SendData(I2C_Type *i2c, uint8_t dat) -{ - i2c->DATA_b.DATA = dat; -} - - -/** - * @brief Returns the most recent received data by the i2c peripheral. - * @param i2c: select the I2C peripheral. - * @retval The value of the received data. - */ -uint8_t I2C_ReceiveData(I2C_Type *i2c) -{ - return ((uint8_t)i2c->DATA_b.DATA ); -} - -/** - * @brief Checks whether the specified I2C flag is set or not. - * @param i2c: select the I2C peripheral. - * @param flag: specifies the flag to check. - * This parameter can be one of the following values: - * @arg : - * @retval The new state of I2C_FLAG (SET or RESET). - */ -FlagStatus I2C_GetFlagStatus(I2C_Type *i2c, uint32_t flag) -{ - return ((i2c->STAT_b.STAT == flag) ? SET : RESET); -} - -/** - * @brief Clears the i2c's pending flags. - * @param i2c: select the I2C peripheral. - * @param flag: specifies the flag to clear. - * This parameter can be any combination of the following values: - * @arg I2C_START_RESET : Rx Buffer is empty flag - * @arg I2C_START_SET : RX Buffer Overrun flag - * @arg I2C_STO_RESET : Rx buffer full flag - * @arg I2C_STO_SET : TX Buffer Overrun flag - * @arg I2C_SI_RESET : TX_FIFO empty flag - * @arg I2C_SI_SET : I2C work as slave or master flag - * @arg I2C_AA_RESET : TX error flag(Master mode) - * @arg I2C_AA_SET : Master not ack flag(slave mode) - * @retval None. - */ -void I2C_ClearFlag(I2C_Type *i2c, uint32_t flag) -{ - -} -/** - * @brief Config the i2c's flags. - * @param i2c: select the I2C peripheral. - * @param flag: specifies the flag to clear. - * This parameter can be any combination of the following values: - * @arg : - * @retval None. - */ -void I2C_StaFlagConfig(I2C_Type *i2c, I2C_StartFlagTypeDef sta,I2C_StopStaTypeDef sto,I2C_SiStaTypeDef si,I2C_AckStaTypeDef aa) -{ - (sta) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_STA_Msk, 1 << I2C_CTLSET_STA_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_STA_Msk, 1 << I2C_CTLCLR_STA_Pos)); - (sto) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_STO_Msk, 1 << I2C_CTLSET_STO_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_STO_Msk, 1 << I2C_CTLCLR_STO_Pos)); - (aa) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_AA_Msk, 1 << I2C_CTLSET_AA_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_AA_Msk, 1 << I2C_CTLCLR_AA_Pos)); - (si) ? \ - (REG_WRITE_MASK(i2c->CTLSET, I2C_CTLSET_SI_Msk, 1 << I2C_CTLSET_SI_Pos)) : \ - (REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_SI_Msk, 1 << I2C_CTLCLR_SI_Pos)); -} - -/** - * @brief Returns the last i2c Event. - * @param i2c: select the I2C peripheral. - * @retval The last event - */ -uint32_t I2C_GetSlaveReceivedAddr(I2C_Type *i2c) -{ - return ((uint32_t)i2c->ADDR); -} - -uint32_t I2C_GetSta(I2C_Type *i2c) -{ - return ((uint32_t)i2c->STAT_b.STAT); -} - -#endif /* CONFIG_ENABLE_HAL_I2C */ diff --git a/Drivers/PB5700/component.mk b/Drivers/PB5700/component.mk deleted file mode 100644 index 252384c..0000000 --- a/Drivers/PB5700/component.mk +++ /dev/null @@ -1,92 +0,0 @@ -# -# component Makefile -# - - -#======================================= -# Configurations -#======================================= - -# -# Drivers of MCU -# - -SOC_CPU_NAME = n203e - -#======================================= -# system -#======================================= -ifeq ("$(SOC)","pb5700") - C_DEFS += -DCONFIG_USE_PB5700 -else -$(error "Unknown SoC !!!") -endif - -# -# cpu -# -C_DEFS += -DCONFIG_CPU_N203E -DCONFIG_HAS_BPU - -CPU_FLAGS = -mabi=ilp32e -mcmodel=medlow -CPU_FLAGS += -march=rv32emc_zba_zbb_zbs_zca_zcb_zcmp_zcmt_zicond - - -# -# Source -# -ASM_SOURCES := \ - $(srctree)/Drivers/PB5700/Device/src/Startup/startup.S \ - $(srctree)/Drivers/PB5700/Device/src/Startup/trap.S - -C_SOURCES += \ - $(srctree)/Drivers/PB5700/Device/src/interrupt.c \ - $(srctree)/Drivers/PB5700/Device/src/syscalls.c \ - $(srctree)/Drivers/PB5700/Device/src/system_dev.c - -C_INCLUDES += \ - -I$(srctree)/Drivers/PB5700/Device/inc \ - -I$(srctree)/Drivers/PB5700/NMSIS/Core/Include \ - -I$(srctree)/Drivers/PB5700/ - - - -#======================================= -# peripheral hal driver -#======================================= -C_SOURCES += \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_adc.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_amisc.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_comp.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_opamp.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_crc.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_dsp.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_flash.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_gpio.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_i2c.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_lptim.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_pwr.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_spi.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_syscfg.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_tim.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_uart.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_wdg.c \ - $(srctree)/Drivers/PB5700/HAL_Lib/src/hal_device.c - -C_INCLUDES += \ - -I$(srctree)/Drivers/PB5700/HAL_Lib/inc - -#======================================= -# BSP -#======================================= -C_SOURCES += $(srctree)/Drivers/PB5700/BSP/StarterKit/starterkit.c - -C_INCLUDES += \ - -I$(srctree)/Drivers/PB5700/BSP/StarterKit - -#======================================= -# Flags -#======================================= -CFLAGS += $(CPU_FLAGS) -CXXFLAGS += -LDFLAGS += $(CPU_FLAGS) -LIBDIR += diff --git a/Drivers/PB5700/BSP/StarterKit/starterkit.c b/Drivers/PEC930/BSP/StarterKit/starterkit.c similarity index 100% rename from Drivers/PB5700/BSP/StarterKit/starterkit.c rename to Drivers/PEC930/BSP/StarterKit/starterkit.c diff --git a/Drivers/PB5700/BSP/StarterKit/starterkit.h b/Drivers/PEC930/BSP/StarterKit/starterkit.h similarity index 100% rename from Drivers/PB5700/BSP/StarterKit/starterkit.h rename to Drivers/PEC930/BSP/StarterKit/starterkit.h diff --git a/Drivers/PB5700/Device/inc/SVD/PB5700.svd b/Drivers/PEC930/Device/inc/SVD/PEC930.svd similarity index 97% rename from Drivers/PB5700/Device/inc/SVD/PB5700.svd rename to Drivers/PEC930/Device/inc/SVD/PEC930.svd index 7d8d6ac..33afe1c 100644 --- a/Drivers/PB5700/Device/inc/SVD/PB5700.svd +++ b/Drivers/PEC930/Device/inc/SVD/PEC930.svd @@ -1,9 +1,9 @@ Padauk-tech - PB5700 + PEC930 1.0 - PB5700 uses 32-bits RISC-V CPU + RISC-V 32-bits CPU 8 32 32 @@ -139,7 +139,7 @@ UID Universally Unique Identifier - 0x00201EB0 + 0x00201F00 0 0xC @@ -7993,6 +7993,25 @@ 0xFFFFFFFF read-write + + LDO_SEL + HSI power source selection + 0 + 16 + read-write + + + LDO + ldo_oschf Disable abd vddl_oschf from ldo + 0x8080 + + + Normal + do_oschf Enable and vddl_oschf from ldo_oschf + 0x0101 + + + HSI_EN HSI enable, set 0x80(disable), set 0x1(enable) @@ -8040,6 +8059,163 @@ + + HWTRIM + H/w configure trim values + 0x40005860 + + 0 + 0x20 + registers + + + + + LDO_TRIM + LDO trim value + 0x00 + 32 + 0x0 + 0xFFFFFFFF + read-only + + + LDO_TRIM + LDO trim value + 0 + 5 + read-only + + + LDO_LP_TRIM + LDO lower power trim value + 5 + 5 + read-only + + + LDO_TUNE + Ldo high temp leakage current compensation + 10 + 2 + read-only + + + STRENGTH + strength + 0x0 + + + WEAK + weak + 0x1 + + + MIDDLEddle + middle + 0x2 + + + OFF + off + 0x3 + + + + + + + + VBUF_TRIM + Vbuf trim value + 0x04 + 32 + 0 + 0xFFFFFFFF + read-only + + + VBUF_TRIM + VBUF voltage trim value + 0 + 7 + read-only + + + + + HSI_TRIM + High Speed Internal clock (OSCHF) trim value + 0x08 + 32 + 0 + 0xFFFFFFFF + read-only + + + HSI_D_CFG + HSI low trim config + 0 + 9 + read-only + + + HSI_FSEL_CFG + HSI high trim config + 9 + 7 + read-only + + + HSI_TC + The TC of HSI trim value + 16 + 2 + read-only + + + + + + LSI_TRIM + Low Speed Internal clock (OSCLF) trim value + 0x0C + 32 + 0 + 0xFFFFFFFF + read-only + + + LSI_TRIM + The LSI trim value, 0xB3= 32KHz + 0 + 8 + read-only + + + + + MISC_CFG + The miscellaneous configuration + 0x10 + 32 + 0 + 0xFFFFFFFF + read-only + + + EXT_nRST_EN + External reset pin enable + 0 + 1 + read-only + + + + + + + CRC Cyclic redundancy check @@ -9161,6 +9337,42 @@ 7 1 + + CCD1IE + Capture/Compare 1 interrupt enable + 8 + 1 + + + CCD2IE + Capture/Compare 2 interrupt enable + 9 + 1 + + + CCD3IE + Capture/Compare 3 interrupt enable + 10 + 1 + + + OVIE + Overflow interrupt enable + 11 + 1 + + + UDIE + Underflow interrupt enable + 12 + 1 + + + CCD4IE + Capture/Compare 4 interrupt enable + 13 + 1 + @@ -9247,6 +9459,42 @@ 1 read-write + + CCD1IF + Capture/Compare 1 interrupt flag + 13 + 1 + + + CCD2IF + Capture/Compare 2 interrupt flag + 14 + 1 + + + CCD3IF + Capture/Compare 3 interrupt flag + 15 + 1 + + + OVIF + Overflow interrupt flag + 16 + 1 + + + UDIF + Underflow interrupt flag + 17 + 1 + + + CCD4IF + Break interrupt flag + 18 + 1 + @@ -9854,7 +10102,7 @@ 0xFFFFFFFF - CCR1 + CCDR1 Down Capture/Compare 1 value 0 20 @@ -9870,7 +10118,7 @@ 0xFFFFFFFF - CCR2 + CCDR2 Down Capture/Compare 2 value 0 20 @@ -9886,13 +10134,29 @@ 0xFFFFFFFF - CCR3 + CCDR3 Down Capture/Compare 3 value 0 20 + + CCDR4 + CR4 down capture or compare value + 0X5C + 32 + 0x0 + 0xFFFFFFFF + + + CCDR4 + Down Capture/Compare 4 value + 0 + 20 + + + diff --git a/Drivers/PB5700/Device/inc/pb57xx.h b/Drivers/PEC930/Device/inc/device.h similarity index 89% rename from Drivers/PB5700/Device/inc/pb57xx.h rename to Drivers/PEC930/Device/inc/device.h index d8a65a3..37ae097 100644 --- a/Drivers/PB5700/Device/inc/pb57xx.h +++ b/Drivers/PEC930/Device/inc/device.h @@ -1,7 +1,7 @@ /** * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. */ -/** @file pb57xx.h +/** @file device.h * * @author Wei-Lun Hsu * @version 0.1 @@ -10,15 +10,15 @@ * @description */ -#ifndef __pb57xx_H_wqIH3HdS_l3C8_Hgh6_syur_ubmEVDiPX8aR__ -#define __pb57xx_H_wqIH3HdS_l3C8_Hgh6_syur_ubmEVDiPX8aR__ +#ifndef __device_H_wqIH3HdS_l3C8_Hgh6_syur_ubmEVDiPX8aR__ +#define __device_H_wqIH3HdS_l3C8_Hgh6_syur_ubmEVDiPX8aR__ #ifdef __cplusplus extern "C" { #endif -#if defined(CONFIG_USE_PB5700) - #include "pb5700.h" +#if defined(CONFIG_USE_PEC930) + #include "pec930.h" #else #error "Please select first the target device !" #endif diff --git a/Drivers/PB5700/Device/inc/pb5700.h b/Drivers/PEC930/Device/inc/pec930.h similarity index 97% rename from Drivers/PB5700/Device/inc/pb5700.h rename to Drivers/PEC930/Device/inc/pec930.h index efe341a..446a644 100644 --- a/Drivers/PB5700/Device/inc/pb5700.h +++ b/Drivers/PEC930/Device/inc/pec930.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009-2019 Paduak-Tech. All rights reserved. + * Copyright (c) 2024-2025 Paduak-Tech. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -15,13 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * @file PB5700.h + * @file PEC930.h * @brief CMSIS HeaderFile * @version 1.0 - * @date 23. September 2025 - * @note Generated by SVDConv V3.3.38 on Tuesday, 23.09.2025 12:30:25 - * from File './PB5700.svd', - * last modified on Tuesday, 23.09.2025 04:19:56 + * @date 27. November 2025 + * @note Generated by SVDConv V3.3.38 on Thursday, 27.11.2025 08:40:32 + * from File './PEC930.svd', + * last modified on Wednesday, 26.11.2025 09:47:40 */ @@ -31,13 +31,13 @@ */ -/** @addtogroup PB5700 +/** @addtogroup PEC930 * @{ */ -#ifndef PB5700_H -#define PB5700_H +#ifndef PEC930_H +#define PEC930_H #ifdef __cplusplus extern "C" { @@ -55,7 +55,7 @@ extern "C" { /* =========================================================================================================================== */ typedef enum { -/* =========================================== PB5700 Specific Interrupt Numbers =========================================== */ +/* =========================================== PEC930 Specific Interrupt Numbers =========================================== */ SysSW_IRQn = 3, /*!< 3 System Software interrupt */ SysTimer_IRQn = 7, /*!< 7 System Timer interrupt */ BusError_IRQn = 17, /*!< 17 Bus error interrupt */ @@ -302,7 +302,7 @@ typedef struct { /*!< (@ 0x18000000) CORET Struct * @brief Universally Unique Identifier (UID) */ -typedef struct { /*!< (@ 0x00201EB0) UID Structure */ +typedef struct { /*!< (@ 0x00201F00) UID Structure */ __IM uint32_t UID1; /*!< (@ 0x00000000) Unique Identifier 1 */ __IM uint32_t UID2; /*!< (@ 0x00000004) Unique Identifier 2 */ __IM uint32_t UID3; /*!< (@ 0x00000008) Unique Identifier 3 */ @@ -2065,7 +2065,8 @@ typedef struct { /*!< (@ 0x40005800) AMISC Struct __IOM uint32_t HSI_CR; /*!< (@ 0x00000020) HSI (OSCHF) Control Register */ struct { - uint32_t : 24; + __IOM uint32_t LDO_SEL : 16; /*!< [15..0] HSI power source selection */ + uint32_t : 8; __IOM uint32_t HSI_EN : 8; /*!< [31..24] HSI enable, set 0x80(disable), set 0x1(enable) */ } HSI_CR_b; } ; @@ -2092,6 +2093,69 @@ typedef struct { /*!< (@ 0x40005800) AMISC Struct +/* =========================================================================================================================== */ +/* ================ HWTRIM ================ */ +/* =========================================================================================================================== */ + + +/** + * @brief H/w configure trim values (HWTRIM) + */ + +typedef struct { /*!< (@ 0x40005860) HWTRIM Structure */ + + union { + __IM uint32_t LDO_TRIM; /*!< (@ 0x00000000) LDO trim value */ + + struct { + __IM uint32_t LDO_TRIM : 5; /*!< [4..0] LDO trim value */ + __IM uint32_t LDO_LP_TRIM : 5; /*!< [9..5] LDO lower power trim value */ + __IM uint32_t LDO_TUNE : 2; /*!< [11..10] Ldo high temp leakage current compensation */ + uint32_t : 20; + } LDO_TRIM_b; + } ; + + union { + __IM uint32_t VBUF_TRIM; /*!< (@ 0x00000004) Vbuf trim value */ + + struct { + __IM uint32_t VBUF_TRIM : 7; /*!< [6..0] VBUF voltage trim value */ + uint32_t : 25; + } VBUF_TRIM_b; + } ; + + union { + __IM uint32_t HSI_TRIM; /*!< (@ 0x00000008) High Speed Internal clock (OSCHF) trim value */ + + struct { + __IM uint32_t HSI_D_CFG : 9; /*!< [8..0] HSI low trim config */ + __IM uint32_t HSI_FSEL_CFG : 7; /*!< [15..9] HSI high trim config */ + __IM uint32_t HSI_TC : 2; /*!< [17..16] The TC of HSI trim value */ + uint32_t : 14; + } HSI_TRIM_b; + } ; + + union { + __IM uint32_t LSI_TRIM; /*!< (@ 0x0000000C) Low Speed Internal clock (OSCLF) trim value */ + + struct { + __IM uint32_t LSI_TRIM : 8; /*!< [7..0] The LSI trim value, 0xB3= 32KHz */ + uint32_t : 24; + } LSI_TRIM_b; + } ; + + union { + __IM uint32_t MISC_CFG; /*!< (@ 0x00000010) The miscellaneous configuration */ + + struct { + __IM uint32_t EXT_nRST_EN : 1; /*!< [0..0] External reset pin enable */ + uint32_t : 31; + } MISC_CFG_b; + } ; +} HWTRIM_Type; /*!< Size = 20 (0x14) */ + + + /* =========================================================================================================================== */ /* ================ CRC ================ */ /* =========================================================================================================================== */ @@ -2344,7 +2408,13 @@ typedef struct { /*!< (@ 0x4000C000) TIM Structur __IOM uint32_t COMIE : 1; /*!< [5..5] COM interrupt enable */ __IOM uint32_t TIE : 1; /*!< [6..6] Trigger interrupt enable */ __IOM uint32_t BIE : 1; /*!< [7..7] Break interrupt enable */ - uint32_t : 24; + __IOM uint32_t CCD1IE : 1; /*!< [8..8] Capture/Compare 1 interrupt enable */ + __IOM uint32_t CCD2IE : 1; /*!< [9..9] Capture/Compare 2 interrupt enable */ + __IOM uint32_t CCD3IE : 1; /*!< [10..10] Capture/Compare 3 interrupt enable */ + __IOM uint32_t OVIE : 1; /*!< [11..11] Overflow interrupt enable */ + __IOM uint32_t UDIE : 1; /*!< [12..12] Underflow interrupt enable */ + __IOM uint32_t CCD4IE : 1; /*!< [13..13] Capture/Compare 4 interrupt enable */ + uint32_t : 18; } DIER_b; } ; @@ -2365,7 +2435,13 @@ typedef struct { /*!< (@ 0x4000C000) TIM Structur __IOM uint32_t CC2OF : 1; /*!< [10..10] CC2OF */ __IOM uint32_t CC3OF : 1; /*!< [11..11] CC3OF */ __IOM uint32_t CC4OF : 1; /*!< [12..12] CC4OF */ - uint32_t : 19; + __IOM uint32_t CCD1IF : 1; /*!< [13..13] Capture/Compare 1 interrupt flag */ + __IOM uint32_t CCD2IF : 1; /*!< [14..14] Capture/Compare 2 interrupt flag */ + __IOM uint32_t CCD3IF : 1; /*!< [15..15] Capture/Compare 3 interrupt flag */ + __IOM uint32_t OVIF : 1; /*!< [16..16] Overflow interrupt flag */ + __IOM uint32_t UDIF : 1; /*!< [17..17] Underflow interrupt flag */ + __IOM uint32_t CCD4IF : 1; /*!< [18..18] Break interrupt flag */ + uint32_t : 13; } SR_b; } ; @@ -2570,7 +2646,7 @@ typedef struct { /*!< (@ 0x4000C000) TIM Structur __IOM uint32_t CCDR1; /*!< (@ 0x00000050) CR1 down capture or compare value */ struct { - __IOM uint32_t CCR1 : 20; /*!< [19..0] Down Capture/Compare 1 value */ + __IOM uint32_t CCDR1 : 20; /*!< [19..0] Down Capture/Compare 1 value */ uint32_t : 12; } CCDR1_b; } ; @@ -2579,7 +2655,7 @@ typedef struct { /*!< (@ 0x4000C000) TIM Structur __IOM uint32_t CCDR2; /*!< (@ 0x00000054) CR2 down capture or compare value */ struct { - __IOM uint32_t CCR2 : 20; /*!< [19..0] Down Capture/Compare 2 value */ + __IOM uint32_t CCDR2 : 20; /*!< [19..0] Down Capture/Compare 2 value */ uint32_t : 12; } CCDR2_b; } ; @@ -2588,11 +2664,20 @@ typedef struct { /*!< (@ 0x4000C000) TIM Structur __IOM uint32_t CCDR3; /*!< (@ 0x00000058) CR3 down capture or compare value */ struct { - __IOM uint32_t CCR3 : 20; /*!< [19..0] Down Capture/Compare 3 value */ + __IOM uint32_t CCDR3 : 20; /*!< [19..0] Down Capture/Compare 3 value */ uint32_t : 12; } CCDR3_b; } ; -} TIM_Type; /*!< Size = 92 (0x5c) */ + + union { + __IOM uint32_t CCDR4; /*!< (@ 0x0000005C) CR4 down capture or compare value */ + + struct { + __IOM uint32_t CCDR4 : 20; /*!< [19..0] Down Capture/Compare 4 value */ + uint32_t : 12; + } CCDR4_b; + } ; +} TIM_Type; /*!< Size = 96 (0x60) */ @@ -2693,7 +2778,7 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define SRAM_MEM_BASE 0x20000000UL #define NVR_MEM_BASE 0x00200000UL #define CORET_BASE 0x18000000UL -#define UID_BASE 0x00201EB0UL +#define UID_BASE 0x00201F00UL #define FLASH_BASE 0x4000F800UL #define GPIO_BASE 0x40011000UL #define GPIOA_BASE 0x40011000UL @@ -2710,6 +2795,7 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define ADC_BASE 0x40004800UL #define ADC0_BASE 0x40004800UL #define AMISC_BASE 0x40005800UL +#define HWTRIM_BASE 0x40005860UL #define CRC_BASE 0x4001E000UL #define DSP_BASE 0x40008000UL #define OPAMP_BASE 0x40005880UL @@ -2758,6 +2844,7 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define ADC ((ADC_Type*) ADC_BASE) #define ADC0 ((ADC_Type*) ADC0_BASE) #define AMISC ((AMISC_Type*) AMISC_BASE) +#define HWTRIM ((HWTRIM_Type*) HWTRIM_BASE) #define CRC ((CRC_Type*) CRC_BASE) #define DSP ((DSP_Type*) DSP_BASE) #define OPAMP ((OPAMP_Type*) OPAMP_BASE) @@ -4515,6 +4602,8 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define AMISC_DAC_CR_DAC1_EN_Pos (21UL) /*!< DAC1_EN (Bit 21) */ #define AMISC_DAC_CR_DAC1_EN_Msk (0x200000UL) /*!< DAC1_EN (Bitfield-Mask: 0x01) */ /* ======================================================== HSI_CR ========================================================= */ +#define AMISC_HSI_CR_LDO_SEL_Pos (0UL) /*!< LDO_SEL (Bit 0) */ +#define AMISC_HSI_CR_LDO_SEL_Msk (0xffffUL) /*!< LDO_SEL (Bitfield-Mask: 0xffff) */ #define AMISC_HSI_CR_HSI_EN_Pos (24UL) /*!< HSI_EN (Bit 24) */ #define AMISC_HSI_CR_HSI_EN_Msk (0xff000000UL) /*!< HSI_EN (Bitfield-Mask: 0xff) */ /* ======================================================== LSI_CR ========================================================= */ @@ -4525,6 +4614,35 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define AMISC_ADC_AIN_CR_ANA2ADC_EN_Msk (0x1UL) /*!< ANA2ADC_EN (Bitfield-Mask: 0x01) */ +/* =========================================================================================================================== */ +/* ================ HWTRIM ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= LDO_TRIM ======================================================== */ +#define HWTRIM_LDO_TRIM_LDO_TRIM_Pos (0UL) /*!< LDO_TRIM (Bit 0) */ +#define HWTRIM_LDO_TRIM_LDO_TRIM_Msk (0x1fUL) /*!< LDO_TRIM (Bitfield-Mask: 0x1f) */ +#define HWTRIM_LDO_TRIM_LDO_LP_TRIM_Pos (5UL) /*!< LDO_LP_TRIM (Bit 5) */ +#define HWTRIM_LDO_TRIM_LDO_LP_TRIM_Msk (0x3e0UL) /*!< LDO_LP_TRIM (Bitfield-Mask: 0x1f) */ +#define HWTRIM_LDO_TRIM_LDO_TUNE_Pos (10UL) /*!< LDO_TUNE (Bit 10) */ +#define HWTRIM_LDO_TRIM_LDO_TUNE_Msk (0xc00UL) /*!< LDO_TUNE (Bitfield-Mask: 0x03) */ +/* ======================================================= VBUF_TRIM ======================================================= */ +#define HWTRIM_VBUF_TRIM_VBUF_TRIM_Pos (0UL) /*!< VBUF_TRIM (Bit 0) */ +#define HWTRIM_VBUF_TRIM_VBUF_TRIM_Msk (0x7fUL) /*!< VBUF_TRIM (Bitfield-Mask: 0x7f) */ +/* ======================================================= HSI_TRIM ======================================================== */ +#define HWTRIM_HSI_TRIM_HSI_D_CFG_Pos (0UL) /*!< HSI_D_CFG (Bit 0) */ +#define HWTRIM_HSI_TRIM_HSI_D_CFG_Msk (0x1ffUL) /*!< HSI_D_CFG (Bitfield-Mask: 0x1ff) */ +#define HWTRIM_HSI_TRIM_HSI_FSEL_CFG_Pos (9UL) /*!< HSI_FSEL_CFG (Bit 9) */ +#define HWTRIM_HSI_TRIM_HSI_FSEL_CFG_Msk (0xfe00UL) /*!< HSI_FSEL_CFG (Bitfield-Mask: 0x7f) */ +#define HWTRIM_HSI_TRIM_HSI_TC_Pos (16UL) /*!< HSI_TC (Bit 16) */ +#define HWTRIM_HSI_TRIM_HSI_TC_Msk (0x30000UL) /*!< HSI_TC (Bitfield-Mask: 0x03) */ +/* ======================================================= LSI_TRIM ======================================================== */ +#define HWTRIM_LSI_TRIM_LSI_TRIM_Pos (0UL) /*!< LSI_TRIM (Bit 0) */ +#define HWTRIM_LSI_TRIM_LSI_TRIM_Msk (0xffUL) /*!< LSI_TRIM (Bitfield-Mask: 0xff) */ +/* ======================================================= MISC_CFG ======================================================== */ +#define HWTRIM_MISC_CFG_EXT_nRST_EN_Pos (0UL) /*!< EXT_nRST_EN (Bit 0) */ +#define HWTRIM_MISC_CFG_EXT_nRST_EN_Msk (0x1UL) /*!< EXT_nRST_EN (Bitfield-Mask: 0x01) */ + + /* =========================================================================================================================== */ /* ================ CRC ================ */ /* =========================================================================================================================== */ @@ -4690,6 +4808,18 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define TIM_DIER_TIE_Msk (0x40UL) /*!< TIE (Bitfield-Mask: 0x01) */ #define TIM_DIER_BIE_Pos (7UL) /*!< BIE (Bit 7) */ #define TIM_DIER_BIE_Msk (0x80UL) /*!< BIE (Bitfield-Mask: 0x01) */ +#define TIM_DIER_CCD1IE_Pos (8UL) /*!< CCD1IE (Bit 8) */ +#define TIM_DIER_CCD1IE_Msk (0x100UL) /*!< CCD1IE (Bitfield-Mask: 0x01) */ +#define TIM_DIER_CCD2IE_Pos (9UL) /*!< CCD2IE (Bit 9) */ +#define TIM_DIER_CCD2IE_Msk (0x200UL) /*!< CCD2IE (Bitfield-Mask: 0x01) */ +#define TIM_DIER_CCD3IE_Pos (10UL) /*!< CCD3IE (Bit 10) */ +#define TIM_DIER_CCD3IE_Msk (0x400UL) /*!< CCD3IE (Bitfield-Mask: 0x01) */ +#define TIM_DIER_OVIE_Pos (11UL) /*!< OVIE (Bit 11) */ +#define TIM_DIER_OVIE_Msk (0x800UL) /*!< OVIE (Bitfield-Mask: 0x01) */ +#define TIM_DIER_UDIE_Pos (12UL) /*!< UDIE (Bit 12) */ +#define TIM_DIER_UDIE_Msk (0x1000UL) /*!< UDIE (Bitfield-Mask: 0x01) */ +#define TIM_DIER_CCD4IE_Pos (13UL) /*!< CCD4IE (Bit 13) */ +#define TIM_DIER_CCD4IE_Msk (0x2000UL) /*!< CCD4IE (Bitfield-Mask: 0x01) */ /* ========================================================== SR =========================================================== */ #define TIM_SR_UIF_Pos (0UL) /*!< UIF (Bit 0) */ #define TIM_SR_UIF_Msk (0x1UL) /*!< UIF (Bitfield-Mask: 0x01) */ @@ -4715,6 +4845,18 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define TIM_SR_CC3OF_Msk (0x800UL) /*!< CC3OF (Bitfield-Mask: 0x01) */ #define TIM_SR_CC4OF_Pos (12UL) /*!< CC4OF (Bit 12) */ #define TIM_SR_CC4OF_Msk (0x1000UL) /*!< CC4OF (Bitfield-Mask: 0x01) */ +#define TIM_SR_CCD1IF_Pos (13UL) /*!< CCD1IF (Bit 13) */ +#define TIM_SR_CCD1IF_Msk (0x2000UL) /*!< CCD1IF (Bitfield-Mask: 0x01) */ +#define TIM_SR_CCD2IF_Pos (14UL) /*!< CCD2IF (Bit 14) */ +#define TIM_SR_CCD2IF_Msk (0x4000UL) /*!< CCD2IF (Bitfield-Mask: 0x01) */ +#define TIM_SR_CCD3IF_Pos (15UL) /*!< CCD3IF (Bit 15) */ +#define TIM_SR_CCD3IF_Msk (0x8000UL) /*!< CCD3IF (Bitfield-Mask: 0x01) */ +#define TIM_SR_OVIF_Pos (16UL) /*!< OVIF (Bit 16) */ +#define TIM_SR_OVIF_Msk (0x10000UL) /*!< OVIF (Bitfield-Mask: 0x01) */ +#define TIM_SR_UDIF_Pos (17UL) /*!< UDIF (Bit 17) */ +#define TIM_SR_UDIF_Msk (0x20000UL) /*!< UDIF (Bitfield-Mask: 0x01) */ +#define TIM_SR_CCD4IF_Pos (18UL) /*!< CCD4IF (Bit 18) */ +#define TIM_SR_CCD4IF_Msk (0x40000UL) /*!< CCD4IF (Bitfield-Mask: 0x01) */ /* ========================================================== EGR ========================================================== */ #define TIM_EGR_UG_Pos (0UL) /*!< UG (Bit 0) */ #define TIM_EGR_UG_Msk (0x1UL) /*!< UG (Bitfield-Mask: 0x01) */ @@ -4875,14 +5017,17 @@ typedef struct { /*!< (@ 0x4000C800) LPTIM Struct #define TIM_BDTR_DTAE_Pos (24UL) /*!< DTAE (Bit 24) */ #define TIM_BDTR_DTAE_Msk (0x1000000UL) /*!< DTAE (Bitfield-Mask: 0x01) */ /* ========================================================= CCDR1 ========================================================= */ -#define TIM_CCDR1_CCR1_Pos (0UL) /*!< CCR1 (Bit 0) */ -#define TIM_CCDR1_CCR1_Msk (0xfffffUL) /*!< CCR1 (Bitfield-Mask: 0xfffff) */ +#define TIM_CCDR1_CCDR1_Pos (0UL) /*!< CCDR1 (Bit 0) */ +#define TIM_CCDR1_CCDR1_Msk (0xfffffUL) /*!< CCDR1 (Bitfield-Mask: 0xfffff) */ /* ========================================================= CCDR2 ========================================================= */ -#define TIM_CCDR2_CCR2_Pos (0UL) /*!< CCR2 (Bit 0) */ -#define TIM_CCDR2_CCR2_Msk (0xfffffUL) /*!< CCR2 (Bitfield-Mask: 0xfffff) */ +#define TIM_CCDR2_CCDR2_Pos (0UL) /*!< CCDR2 (Bit 0) */ +#define TIM_CCDR2_CCDR2_Msk (0xfffffUL) /*!< CCDR2 (Bitfield-Mask: 0xfffff) */ /* ========================================================= CCDR3 ========================================================= */ -#define TIM_CCDR3_CCR3_Pos (0UL) /*!< CCR3 (Bit 0) */ -#define TIM_CCDR3_CCR3_Msk (0xfffffUL) /*!< CCR3 (Bitfield-Mask: 0xfffff) */ +#define TIM_CCDR3_CCDR3_Pos (0UL) /*!< CCDR3 (Bit 0) */ +#define TIM_CCDR3_CCDR3_Msk (0xfffffUL) /*!< CCDR3 (Bitfield-Mask: 0xfffff) */ +/* ========================================================= CCDR4 ========================================================= */ +#define TIM_CCDR4_CCDR4_Pos (0UL) /*!< CCDR4 (Bit 0) */ +#define TIM_CCDR4_CCDR4_Msk (0xfffffUL) /*!< CCDR4 (Bitfield-Mask: 0xfffff) */ /* =========================================================================================================================== */ @@ -5642,10 +5787,35 @@ typedef enum { /*!< AMISC_VBUF_CR_ANA_SEL /* ======================================================== DAC_CR ========================================================= */ /* ======================================================== HSI_CR ========================================================= */ +/* ============================================= AMISC HSI_CR LDO_SEL [0..15] ============================================== */ +typedef enum { /*!< AMISC_HSI_CR_LDO_SEL */ + AMISC_HSI_CR_LDO_SEL_LDO = 32896, /*!< LDO : ldo_oschf Disable abd vddl_oschf from ldo */ + AMISC_HSI_CR_LDO_SEL_Normal = 257, /*!< Normal : do_oschf Enable and vddl_oschf from ldo_oschf */ +} AMISC_HSI_CR_LDO_SEL_Enum; + /* ======================================================== LSI_CR ========================================================= */ /* ====================================================== ADC_AIN_CR ======================================================= */ +/* =========================================================================================================================== */ +/* ================ HWTRIM ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= LDO_TRIM ======================================================== */ +/* =========================================== HWTRIM LDO_TRIM LDO_TUNE [10..11] =========================================== */ +typedef enum { /*!< HWTRIM_LDO_TRIM_LDO_TUNE */ + HWTRIM_LDO_TRIM_LDO_TUNE_STRENGTH = 0, /*!< STRENGTH : strength */ + HWTRIM_LDO_TRIM_LDO_TUNE_WEAK = 1, /*!< WEAK : weak */ + HWTRIM_LDO_TRIM_LDO_TUNE_MIDDLEddle = 2, /*!< MIDDLEddle : middle */ + HWTRIM_LDO_TRIM_LDO_TUNE_OFF = 3, /*!< OFF : off */ +} HWTRIM_LDO_TRIM_LDO_TUNE_Enum; + +/* ======================================================= VBUF_TRIM ======================================================= */ +/* ======================================================= HSI_TRIM ======================================================== */ +/* ======================================================= LSI_TRIM ======================================================== */ +/* ======================================================= MISC_CFG ======================================================== */ + + /* =========================================================================================================================== */ /* ================ CRC ================ */ /* =========================================================================================================================== */ @@ -5858,6 +6028,7 @@ typedef enum { /*!< TIM_SMCR_ETF /* ========================================================= CCDR1 ========================================================= */ /* ========================================================= CCDR2 ========================================================= */ /* ========================================================= CCDR3 ========================================================= */ +/* ========================================================= CCDR4 ========================================================= */ /* =========================================================================================================================== */ @@ -5896,9 +6067,9 @@ typedef enum { /*!< LPTIM_TCR_TRIGSEL } #endif -#endif /* PB5700_H */ +#endif /* PEC930_H */ -/** @} */ /* End of group PB5700 */ +/** @} */ /* End of group PEC930 */ /** @} */ /* End of group Padauk-tech */ diff --git a/Drivers/PB5700/Device/inc/system_dev.h b/Drivers/PEC930/Device/inc/system_dev.h similarity index 96% rename from Drivers/PB5700/Device/inc/system_dev.h rename to Drivers/PEC930/Device/inc/system_dev.h index 4ad3baf..cd3367e 100644 --- a/Drivers/PB5700/Device/inc/system_dev.h +++ b/Drivers/PEC930/Device/inc/system_dev.h @@ -154,14 +154,6 @@ typedef struct excp_frame uint32_t cause; /* cause: machine cause csr register */ uint32_t epc; /* epc: machine exception program counter csr register */ uint32_t msubm; /* msubm: machine sub-mode csr register, nuclei customized */ -#ifndef __riscv_32e - uint32_t a6; /* a6: x16, function argument 6 */ - uint32_t a7; /* a7: x17, function argument 7 */ - uint32_t t3; /* t3: x28, temporary register 3 */ - uint32_t t4; /* t4: x29, temporary register 4 */ - uint32_t t5; /* t5: x30, temporary register 5 */ - uint32_t t6; /* t6: x31, temporary register 6 */ -#endif } excp_frame_t; typedef struct sys_irq_attr diff --git a/Drivers/PB5700/Device/src/Startup/startup.S b/Drivers/PEC930/Device/src/Startup/startup.S similarity index 95% rename from Drivers/PB5700/Device/src/Startup/startup.S rename to Drivers/PEC930/Device/src/Startup/startup.S index 1d59b32..18ad77a 100644 --- a/Drivers/PB5700/Device/src/Startup/startup.S +++ b/Drivers/PEC930/Device/src/Startup/startup.S @@ -50,6 +50,7 @@ _start: la sp, _sp #if 0 + /* Disable/Enable ICE I/O */ li a0, 0x00001C28 li a1, 0x4000F804 li a2, 0x80000000 @@ -69,11 +70,6 @@ _start: 2: #endif - /** - * Set the the NMI base mnvec to share - * with mtvec by setting CSR_MMISC_CTL - * bit 9 NMI_CAUSE_FFF to 1 - */ li t0, MMISC_CTL_NMI_CAUSE_FFF csrs CSR_MMISC_CTL, t0 diff --git a/Drivers/PB5700/Device/src/Startup/trap.S b/Drivers/PEC930/Device/src/Startup/trap.S similarity index 100% rename from Drivers/PB5700/Device/src/Startup/trap.S rename to Drivers/PEC930/Device/src/Startup/trap.S diff --git a/Drivers/PB5700/Device/src/interrupt.c b/Drivers/PEC930/Device/src/interrupt.c similarity index 80% rename from Drivers/PB5700/Device/src/interrupt.c rename to Drivers/PEC930/Device/src/interrupt.c index af9297e..de50440 100644 --- a/Drivers/PB5700/Device/src/interrupt.c +++ b/Drivers/PEC930/Device/src/interrupt.c @@ -11,7 +11,7 @@ */ -#include "pb57xx.h" +#include "device.h" //============================================================================= // Constant Definition //============================================================================= @@ -116,22 +116,4 @@ const fp_isr_t __Vectors[__ECLIC_INTNUM] __USED __attribute__((section (".mintve default_handler, /* 31: ext_irq Reserved */ default_handler, /* 32: ext_irq Reserved */ default_handler, /* 33: ext_irq Reserved */ -#if 0 - default_handler, /* 34: ext_irq Reserved */ - default_handler, /* 35: ext_irq Reserved */ - default_handler, /* 36: ext_irq Reserved */ - default_handler, /* 37: ext_irq Reserved */ - default_handler, /* 38: ext_irq Reserved */ - default_handler, /* 39: ext_irq Reserved */ - default_handler, /* 40: ext_irq Reserved */ - default_handler, /* 41: ext_irq Reserved */ - default_handler, /* 42: ext_irq Reserved */ - default_handler, /* 43: ext_irq Reserved */ - default_handler, /* 44: ext_irq Reserved */ - default_handler, /* 45: ext_irq Reserved */ - default_handler, /* 46: ext_irq Reserved */ - default_handler, /* 47: ext_irq Reserved */ - default_handler, /* 48: ext_irq Reserved */ - default_handler, /* 49: ext_irq Reserved */ -#endif }; diff --git a/Drivers/PB5700/Device/src/syscalls.c b/Drivers/PEC930/Device/src/syscalls.c similarity index 94% rename from Drivers/PB5700/Device/src/syscalls.c rename to Drivers/PEC930/Device/src/syscalls.c index 92edc9f..5c9d0e9 100644 --- a/Drivers/PB5700/Device/src/syscalls.c +++ b/Drivers/PEC930/Device/src/syscalls.c @@ -197,18 +197,5 @@ __WEAK clock_t _times(struct tms *buf) __WEAK void *_sbrk(ptrdiff_t incr) { -#if 0 - extern char _end[]; - extern char _heap_end[]; - static char *curbrk = _end; - - if ((curbrk + incr < _end) || (curbrk + incr > _heap_end)) { - return (void *)(-1); - } - - curbrk += incr; - return (void *)(curbrk - incr); -#else return 0; -#endif } diff --git a/Drivers/PB5700/Device/src/system_dev.c b/Drivers/PEC930/Device/src/system_dev.c similarity index 99% rename from Drivers/PB5700/Device/src/system_dev.c rename to Drivers/PEC930/Device/src/system_dev.c index caae90c..a9615e7 100644 --- a/Drivers/PB5700/Device/src/system_dev.c +++ b/Drivers/PEC930/Device/src/system_dev.c @@ -10,7 +10,7 @@ * @description */ -#include "pb57xx.h" +#include "device.h" //============================================================================= // Constant Definition //============================================================================= diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_adc.h b/Drivers/PEC930/HAL_Lib/inc/hal_adc.h similarity index 90% rename from Drivers/PB5700/HAL_Lib/inc/hal_adc.h rename to Drivers/PEC930/HAL_Lib/inc/hal_adc.h index c9a6953..0fec7fb 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_adc.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_adc.h @@ -60,14 +60,14 @@ typedef enum ADC_Channels */ typedef enum ADC_SubChannel { - ADC_SubChannel_NONE = AMISC_VBUF_CR_ANA_SEL_NONE, - ADC_SubChannel_TEMP = AMISC_VBUF_CR_ANA_SEL_TEMP, - ADC_SubChannel_DAC0 = AMISC_VBUF_CR_ANA_SEL_DAC0, - ADC_SubChannel_DAC1 = AMISC_VBUF_CR_ANA_SEL_DAC1, - ADC_SubChannel_VBuf_1_5 = AMISC_VBUF_CR_ANA_SEL_VBuf_1p5v, - ADC_SubChannel_VDDL = AMISC_VBUF_CR_ANA_SEL_VDDL, - ADC_SubChannel_VSS = AMISC_VBUF_CR_ANA_SEL_VSS, - ADC_SubChannel_VDD = AMISC_VBUF_CR_ANA_SEL_VDD, + ADC_SubChannel_NONE = (AMISC_VBUF_CR_ANA_SEL_NONE << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_TEMP = (AMISC_VBUF_CR_ANA_SEL_TEMP << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_DAC0 = (AMISC_VBUF_CR_ANA_SEL_DAC0 << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_DAC1 = (AMISC_VBUF_CR_ANA_SEL_DAC1 << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_VBuf_1_5 = (AMISC_VBUF_CR_ANA_SEL_VBuf_1p5v << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_VDDL = (AMISC_VBUF_CR_ANA_SEL_VDDL << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_VSS = (AMISC_VBUF_CR_ANA_SEL_VSS << AMISC_VBUF_CR_ANA_SEL_Pos), + ADC_SubChannel_VDD = (AMISC_VBUF_CR_ANA_SEL_VDD << AMISC_VBUF_CR_ANA_SEL_Pos), } ADC_SubChannelTypeDef; /** @@ -132,8 +132,8 @@ typedef enum ADC_ExtTrigSource ADC_ExtTrigSource_EPWM_CH2F = ADC_ExtTrigSource_04, /*!< ADC external source trigger from EPWM CH2 Falling */ ADC_ExtTrigSource_EPWM_CH3F = ADC_ExtTrigSource_05, /*!< ADC external source trigger from EPWM CH3 Falling */ ADC_ExtTrigSource_COMP0_Rise = ADC_ExtTrigSource_06, /*!< ADC external source trigger from COMP0 Rising */ - ADC_ExtTrigSource_COMP1_Rise = ADC_ExtTrigSource_07, /*!< ADC external source trigger from COMP1 Rising */ - ADC_ExtTrigSource_COMP0_Fall = ADC_ExtTrigSource_08, /*!< ADC external source trigger from COMP0 Falling */ + ADC_ExtTrigSource_COMP1_Rise = ADC_ExtTrigSource_08, /*!< ADC external source trigger from COMP1 Rising */ + ADC_ExtTrigSource_COMP0_Fall = ADC_ExtTrigSource_07, /*!< ADC external source trigger from COMP0 Falling */ ADC_ExtTrigSource_COMP1_Fall = ADC_ExtTrigSource_09, /*!< ADC external source trigger from COMP1 Falling */ ADC_ExtTrigSource_EPWM_UDF = ADC_ExtTrigSource_10, /*!< ADC external source trigger from EPWM Counter UDF */ ADC_ExtTrigSource_EPWM_OVF = ADC_ExtTrigSource_11, /*!< ADC external source trigger from EPWM Counter OVF */ @@ -182,6 +182,7 @@ typedef enum ADC_IT */ typedef enum ADC_ITStatus { + ADC_ITStatus_None = (ADC_STAT_COMP_RESULT_NONE << ADC_STAT_COMP_RESULT_Pos), ADC_ITStatus_LowerThreshold = (ADC_STAT_COMP_RESULT_LT_THR << ADC_STAT_COMP_RESULT_Pos), ADC_ITStatus_HigherThreshold = (ADC_STAT_COMP_RESULT_GT_THR << ADC_STAT_COMP_RESULT_Pos), ADC_ITStatus_EqualThreshold = (ADC_STAT_COMP_RESULT_EQ_THR << ADC_STAT_COMP_RESULT_Pos), @@ -247,7 +248,7 @@ __STATIC_FORCEINLINE void ADC_Start(ADC_Type *pHADC) */ __STATIC_FORCEINLINE uint32_t ADC_IsIdle(ADC_Type *pHADC) { - return REG_READ_MASK(pHADC->CON0, ADC_STAT_DONE_Msk); + return REG_READ_MASK(pHADC->STAT, ADC_STAT_DONE_Msk); } /** @@ -286,7 +287,7 @@ __STATIC_FORCEINLINE void ADC_ClearITFlag(ADC_Type *pHADC) */ __STATIC_FORCEINLINE void ADC_DiscMode_SetGroupSubsetNum(ADC_Type *pHADC, uint8_t subset_ch_num) { - REG_WRITE_MASK(pHADC->CHSEL, ADC_CHSEL_DISCNUM_Msk, subset_ch_num - 1); + REG_WRITE_MASK(pHADC->CHSEL, ADC_CHSEL_DISCNUM_Msk, (subset_ch_num - 1) << ADC_CHSEL_DISCNUM_Pos); return; } @@ -333,19 +334,22 @@ __STATIC_FORCEINLINE uint16_t ADC_GetBakcupValue(ADC_Type *pHADC) return (uint16_t)pHADC->BAKDAT_b.BAKDAT; } + /** - * \brief Select the sub-channel of the ADC Channel-15 + * \brief Set the sample-period of an ADC * - * \param [in] subchannel The selected sub-channel of ADC channel-15, @ref ADC_SubChannelTypeDef + * \param [in] pHADC Pointer to an ADC handler + * \param [in] cycles extern cycles (range: 0 ~ 31, default: 3) * \return * None */ -__STATIC_FORCEINLINE void ADC_SelSubChannel(ADC_SubChannelTypeDef subchannel) +__STATIC_FORCEINLINE void ADC_SetSampleCycles(ADC_Type *pHADC, uint8_t cycles) { - REG_WRITE_MASK(AMISC->VBUF_CR, AMISC_VBUF_CR_ANA_SEL_Msk, subchannel); + pHADC->STAT_b.TS_SET = cycles; return; } + /** * \brief Get the conversion value of the ADC in ISR * @@ -364,6 +368,19 @@ __STATIC_FORCEINLINE uint16_t ADC_ITGetConvValue(ADC_Type *pHADC, ADC_ChannelsTy return (uint16_t)((*pData) & 0xFFFFul); } +/** + * \brief Disable interrupt of ADC + * + * \param [in] pHADC Pointer to an ADC handler + * \return + * None + */ +__STATIC_FORCEINLINE void ADC_ITDisable(ADC_Type *pHADC) +{ + REG_WRITE_MASK(pHADC->CON0, ADC_CON0_INT_EN_Msk, ADC_IT_DISABLE); + return; +} + //============================================================================= // Structure Definition //============================================================================= @@ -442,6 +459,15 @@ void ADC_StructInit(ADC_InitTypeDef *pInit); */ void ADC_ExtTrigConfig(ADC_Type *pHADC, ADC_ExtTrigSourceTypeDef ext_src, ADC_ExtTrigModeTypeDef trig_mode); +/** + * \brief Select the sub-channel of the ADC Channel-15 + * + * \param [in] subchannel The selected sub-channel of ADC channel-15, @ref ADC_SubChannelTypeDef + * \return + * None + */ +void ADC_SelSubChannel(ADC_SubChannelTypeDef subchannel); + /** * \brief Get the conversion value of an ADC channel * diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_amisc.h b/Drivers/PEC930/HAL_Lib/inc/hal_amisc.h similarity index 79% rename from Drivers/PB5700/HAL_Lib/inc/hal_amisc.h rename to Drivers/PEC930/HAL_Lib/inc/hal_amisc.h index ac68d1b..8f336de 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_amisc.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_amisc.h @@ -65,31 +65,22 @@ typedef enum typedef enum { - AMISC_Ana2IO_Disable = 0x0, //AMISC_Ana2IO_En - AMISC_Ana2IO_En = AMISC_VBUF_CR_ANA2IO_EN_Msk, - -} AMISC_Ana2IOTypeDef; + AMISC_InternalSrc_NONE = (AMISC_VBUF_CR_ANA_SEL_NONE << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_TEMP = (AMISC_VBUF_CR_ANA_SEL_TEMP << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_DAC0 = (AMISC_VBUF_CR_ANA_SEL_DAC0 << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_DAC1 = (AMISC_VBUF_CR_ANA_SEL_DAC1 << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_VBuf_1P5V = (AMISC_VBUF_CR_ANA_SEL_VBuf_1p5v << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_VDDL = (AMISC_VBUF_CR_ANA_SEL_VDDL << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_VSS = (AMISC_VBUF_CR_ANA_SEL_VSS << AMISC_VBUF_CR_ANA_SEL_Pos), + AMISC_InternalSrc_VDD = (AMISC_VBUF_CR_ANA_SEL_VDD << AMISC_VBUF_CR_ANA_SEL_Pos), +} AMISC_InternalSrcTypeDef; typedef enum { - AMISC_Ana2PGA_Disable = 0x0, // AMISC_Ana2PGA_En - AMISC_Ana2PGA_Ene = AMISC_VBUF_CR_ANA2PGA_EN_Msk , - -} AMISC_Ana2PGATypeDef ; - -typedef enum -{ - AMISC_AnaSel_temp = 0x1 << AMISC_VBUF_CR_ANA_SEL_Pos, - AMISC_AnaSel_dac0 = 0x2 << AMISC_VBUF_CR_ANA_SEL_Pos, - AMISC_AnaSel_dac1 = 0x4 << AMISC_VBUF_CR_ANA_SEL_Pos, - AMISC_AnaSel_1p5v = 0x8 << AMISC_VBUF_CR_ANA_SEL_Pos, - AMISC_AnaSel_vddl = 0x10 << AMISC_VBUF_CR_ANA_SEL_Pos, - AMISC_AnaSel_vss = 0x20 << AMISC_VBUF_CR_ANA_SEL_Pos, - AMISC_AnaSel_v = 0x40 << AMISC_VBUF_CR_ANA_SEL_Pos, - -} AMISC_AnaSelTypeDef ; - + AMISC_HSIPwrSrc_Normal = (AMISC_HSI_CR_LDO_SEL_Normal << AMISC_HSI_CR_LDO_SEL_Pos), + AMISC_HSIPwrSrc_LowPower = (AMISC_HSI_CR_LDO_SEL_LDO << AMISC_HSI_CR_LDO_SEL_Pos), +} AMISC_HSIPwrSrcTypeDef; //============================================================================= // Macro Definition //============================================================================= @@ -244,6 +235,17 @@ __STATIC_FORCEINLINE void AMISC_LVD_ITDisable(void) return; } +/** + * \brief Get the status of LVD + * + * \return + * The new state of flags (SET or RESET) + */ +__STATIC_FORCEINLINE FlagStatus AMISC_LVD_GetFlagStatus(void) +{ + return REG_READ_MASK(AMISC->LVD_LVR_CR, AMISC_LVD_LVR_CR_LVD_STATE_Msk) ? SET : RESET; +} + /** * \brief Enable VBUF * @@ -270,8 +272,18 @@ __STATIC_FORCEINLINE void AMISC_Vbuf_Disable(void) } - - +/** + * \brief Set the power source of HSI + * + * \param [in] pwr_src The target power source, @ref AMISC_HSIPwrSrcTypeDef + * \return + * None + */ +__STATIC_FORCEINLINE void AMISC_SetHSIPwrSrc(AMISC_HSIPwrSrcTypeDef pwr_src) +{ + REG_WRITE_MASK(AMISC->HSI_CR, AMISC_HSI_CR_LDO_SEL_Msk, pwr_src); + return; +} //============================================================================= // Structure Definition @@ -283,16 +295,6 @@ typedef struct AMISC_LVDFuncTypeDef LVD_FuncModes; } AMISC_LVDRInitTypeDef; - -typedef struct -{ - AMISC_Ana2IOTypeDef Ana2IOT; - AMISC_Ana2PGATypeDef Ana2PGA; - AMISC_AnaSelTypeDef AnaSel; - -} AMISC_VBUFConfigTypeDef; - - //============================================================================= // Global Data Definition //============================================================================= @@ -373,12 +375,25 @@ void AMISC_LSI_Disable(void); */ void AMISC_LSI_Enable(void); - -void AMISC_VBUF_Config(AMISC_VBUFConfigTypeDef *pInit); - - +/** + * \brief Select the VinP internal source of PGA + * + * \param [in] src_type the target VinP internal source + * \return + * None + */ +void AMISC_Sel_PGA_VinP_Src(AMISC_InternalSrcTypeDef src_type); +/** + * \brief Output the internal signals to I/O Pin + * + * \param [in] src_type The target internal signal, @ref AMISC_InternalSrcTypeDef + * \param [in] has_output Enable output or not + * \return + * None + */ +void AMISC_OutInternalSignalToIO(AMISC_InternalSrcTypeDef src_type, int has_output); #ifdef __cplusplus } diff --git a/Examples/pga/pga_test/inc/isr.h b/Drivers/PEC930/HAL_Lib/inc/hal_comp.h similarity index 88% rename from Examples/pga/pga_test/inc/isr.h rename to Drivers/PEC930/HAL_Lib/inc/hal_comp.h index b77f364..5ad8c21 100644 --- a/Examples/pga/pga_test/inc/isr.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_comp.h @@ -1,27 +1,29 @@ /** * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. */ -/** @file isr.h +/** @file hal_comp.h * * @author Wei-Lun Hsu * @version 0.1 - * @date 2024/09/16 + * @date 2024/10/17 * @license * @description */ -#ifndef __isr_H_wuraIpBA_lTJm_HvJw_sNDo_uEd5JnucTReY__ -#define __isr_H_wuraIpBA_lTJm_HvJw_sNDo_uEd5JnucTReY__ +#ifndef __hal_comp_H_wqqzibVO_lvKI_HWdK_sROD_uhjcZz7SHMtL__ +#define __hal_comp_H_wqqzibVO_lvKI_HWdK_sROD_uhjcZz7SHMtL__ #ifdef __cplusplus extern "C" { #endif -#include "main.h" + +#include "hal_def.h" //============================================================================= // Constant Definition //============================================================================= + //============================================================================= // Macro Definition //============================================================================= @@ -43,7 +45,6 @@ extern "C" { //============================================================================= - #ifdef __cplusplus } #endif diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_crc.h b/Drivers/PEC930/HAL_Lib/inc/hal_crc.h similarity index 100% rename from Drivers/PB5700/HAL_Lib/inc/hal_crc.h rename to Drivers/PEC930/HAL_Lib/inc/hal_crc.h diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_def.h b/Drivers/PEC930/HAL_Lib/inc/hal_def.h similarity index 99% rename from Drivers/PB5700/HAL_Lib/inc/hal_def.h rename to Drivers/PEC930/HAL_Lib/inc/hal_def.h index 9b91d2b..8841194 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_def.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_def.h @@ -18,7 +18,7 @@ extern "C" { #endif -#include "pb57xx.h" +#include "device.h" //============================================================================= // Constant Definition //============================================================================= diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_device.h b/Drivers/PEC930/HAL_Lib/inc/hal_device.h similarity index 86% rename from Drivers/PB5700/HAL_Lib/inc/hal_device.h rename to Drivers/PEC930/HAL_Lib/inc/hal_device.h index 87a3a8e..6712ff6 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_device.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_device.h @@ -80,6 +80,24 @@ __STATIC_FORCEINLINE uint32_t HAL_GetUID3(void) { return REG_READ(UID->UID3); } + +/** + * \brief Initialize the peripherals of this device + * + * \return + * None + */ +__STATIC_FORCEINLINE void HAL_DeviceInit(void) +{ + REG_WRITE(SYSCFG->PRSTEN1, 0xFFFFFFFFul); + REG_WRITE(SYSCFG->PRSTEN, 0xFFFFFFFFul); + REG_WRITE(SYSCFG->PRSTEN1, 0x0ul); + REG_WRITE(SYSCFG->PRSTEN, 0x0ul); + return; +} + +#define HAL_SetBits(_val_, _bit_mak_) REG_SET_BITS(_val_, _bit_mak_) +#define HAL_ClearBits(_val_, _bit_mak_) REG_CLR_BITS(_val_, _bit_mak_) //============================================================================= // Structure Definition //============================================================================= @@ -112,6 +130,7 @@ void HAL_SRand(uint32_t seed); */ uint32_t HAL_Rand(void); + #ifdef __cplusplus } #endif diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_dsp.h b/Drivers/PEC930/HAL_Lib/inc/hal_dsp.h similarity index 100% rename from Drivers/PB5700/HAL_Lib/inc/hal_dsp.h rename to Drivers/PEC930/HAL_Lib/inc/hal_dsp.h diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_flash.h b/Drivers/PEC930/HAL_Lib/inc/hal_flash.h similarity index 100% rename from Drivers/PB5700/HAL_Lib/inc/hal_flash.h rename to Drivers/PEC930/HAL_Lib/inc/hal_flash.h diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_gpio.h b/Drivers/PEC930/HAL_Lib/inc/hal_gpio.h similarity index 94% rename from Drivers/PB5700/HAL_Lib/inc/hal_gpio.h rename to Drivers/PEC930/HAL_Lib/inc/hal_gpio.h index 6934ae0..ca0ac8a 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_gpio.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_gpio.h @@ -33,10 +33,11 @@ typedef enum typedef enum { - GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */ - GPIO_Mode_OUT, /*!< GPIO Output Mode */ - GPIO_Mode_ANAL, /*!< GPIO Analog In/Out Mode */ - GPIO_Mode_AF, /*!< GPIO Alternate function Mode */ + GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */ + GPIO_Mode_OUT, /*!< GPIO Output Mode */ + GPIO_Mode_ANAL, /*!< GPIO Analog In/Out Mode */ + GPIO_Mode_AF, /*!< GPIO Alternate function Mode */ + GPIO_Mode_PWR_Saving, /*!< GPIO Power-Saving Mode */ } GPIO_ModeTypeDef; @@ -377,6 +378,17 @@ typedef struct GPIO_Init */ int GPIO_Init(GPIO_Type *pHGpio, GPIO_InitTypeDef *pInit); +/** + * \brief De-initializes the gpio peripheral according to the specified parameters. + * + * \param [in] pHGpio Pointer to a GPIO handler + * \param [in] pins The target pin, @ref GPIO_PinTypeDef + * \return + * None + */ +void GPIO_DeInit(GPIO_Type *pHGpio, uint32_t pins); + + /** * \brief Set Pin configuration of Peripheral IP with the specific Alternate Function * diff --git a/Drivers/PEC930/HAL_Lib/inc/hal_i2c.h b/Drivers/PEC930/HAL_Lib/inc/hal_i2c.h new file mode 100644 index 0000000..4cfea54 --- /dev/null +++ b/Drivers/PEC930/HAL_Lib/inc/hal_i2c.h @@ -0,0 +1,333 @@ +/** + * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. + */ +/** @file hal_i2c.h + * + * @author Wei-Lun Hsu + * @version 0.1 + * @date 2024/09/10 + * @license + * @description + */ + +#ifndef __hal_i2c_H_wiTQLukR_lyWI_H9X1_s634_uL7YYZQ9qyOX__ +#define __hal_i2c_H_wiTQLukR_lyWI_H9X1_s634_uL7YYZQ9qyOX__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include "hal_def.h" +//============================================================================= +// Constant Definition +//============================================================================= +#define I2C_BLOCKING 0xFFFF + +typedef enum +{ + I2C_Err_OK = 0, + I2C_Err_Fail, + I2C_Err_WrongParams, + I2C_Err_TimeOut, + +} I2C_ErrTypeDef; + +typedef enum +{ + /* Misc */ + I2C_State_ERROR = 0x00u, + I2C_State_BUS_IDLE = 0xF8u, + I2C_State_SLAVE_STOP_RESTART = 0xA0u, + + /* Master Transmit */ + I2C_State_MASTER_TX_START = 0x08u, + I2C_State_MASTER_TX_RESTART = 0x10u, + I2C_State_MASTER_TX_SLAW_ACK = 0x18u, // Master sent (SlaveAddress + W-bit) and received ACK + I2C_State_MASTER_TX_SLAW_NOACK = 0x20u, + I2C_State_MASTER_TX_DATA_ACK = 0x28u, // Master sent data and received ACK + I2C_State_MASTER_TX_DATA_NOACK = 0x30u, + I2C_State_MASTER_TX_LOST_BUS = 0x38u, + + /* Master Receive */ + I2C_State_MASTER_RX_START = I2C_State_MASTER_TX_START, + I2C_State_MASTER_RX_RESTART = I2C_State_MASTER_TX_RESTART, + I2C_State_MASTER_RX_SLAR_ACK = 0x40u, // Master sent (SlaveAddress + R-bit) and received ACK + I2C_State_MASTER_RX_SLAR_NOACK = 0x48u, + I2C_State_MASTER_RX_DATA_ACK = 0x50u, // Master received data and received ACK + I2C_State_MASTER_RX_DATA_NOACK = 0x58u, + I2C_State_MASTER_RX_LOST_BUS = I2C_State_MASTER_TX_LOST_BUS, + + /* Slave Receive */ + I2C_State_SLAVE_RX_SLAW_ACK = 0x60u, + I2C_State_SLAVE_RX_SLAW_LOST_BUS = 0x68u, + I2C_State_SLAVE_RX_BROAD_ACK = 0x70u, // received broad address and sent ACK + I2C_State_SLAVE_RX_BADDR_LOST_BUS = 0x78u, + I2C_State_SLAVE_RX_DATA_ACK = 0x80u, // received data and sent ACK + I2C_State_SLAVE_RX_DATA_NOACK = 0x88u, + I2C_State_SLAVE_RX_BDATA_ACK = 0x90u, // received data (with broad address) and sent ACK + I2C_State_SLAVE_RX_BDATA_NOACK = 0x98u, + + /* Slave Transmit */ + I2C_State_SLAVE_RX_SLAR_ACK = 0xA8u, + I2C_State_SLAVE_TX_LOST_BUS = 0xB0u, + I2C_State_SLAVE_TX_DATA_ACK = 0xB8u, + I2C_State_SLAVE_TX_DATA_NOACK = 0xC0u, + I2C_State_SLAVE_TX_LAST_DATA = 0xC8u, + +} I2C_StateTypeDef; + +/** + * I2C role mode + */ +typedef enum +{ + I2C_Mode_NONE = 0x00U, /*!< No I2C communication on going */ + I2C_Mode_MASTER = 0x10U, /*!< I2C communication is in Master Mode */ + I2C_Mode_SLAVE = 0x20U, /*!< I2C communication is in Slave Mode */ +} I2C_ModeTypeDef; + +/** + * The divide of I2C Clock + */ +typedef enum +{ + I2C_CLK_Div60 = 60, + I2C_CLK_Div120 = 120, + I2C_CLK_Div160 = 160, + I2C_CLK_Div192 = 192, + I2C_CLK_Div244 = 244, + I2C_CLK_Div256 = 256, + I2C_CLK_Div960 = 960, + +} I2C_Clk_DivTypeDef; + +typedef enum +{ + I2C_BroadAck_Disable = 0x0ul, + I2C_BroadAck_Enable = I2C_ADDR_GC_Msk, +} I2C_BroadAckTypeDef; + +typedef enum +{ + I2C_XferMode_Idle = 0, + I2C_XferMode_Transmite, + I2C_XferMode_Recevie, +} I2C_XferModeTypeDef; +//============================================================================= +// Macro Definition +//============================================================================= +/** + * \brief Get the Hardware state of an I2C + * + * \param [in] pHI2C The handle of I2C + * \return + * Hardware state + */ +__STATIC_FORCEINLINE uint32_t I2C_GetHwState(I2C_Type *pHI2C) +{ + return pHI2C->STAT_b.STAT; +} +//============================================================================= +// Structure Definition +//============================================================================= +/** + * I2C Initial Configuration + */ +typedef struct I2C_Init +{ + I2C_Clk_DivTypeDef ClockDiv; + I2C_ModeTypeDef Mode; /*!< Specifies the I2C mode. This parameter can be a value of I2C_mode. */ + uint8_t OwnAddress; /*!< Specifies the first device own address. This parameter can be a 7-bit address. */ + I2C_BroadAckTypeDef BroadAck; /*!< ACK enable or disable when as slave. + This parameter can be a value of @ref I2C_BroadAckTypeDef */ +} I2C_InitTypeDef; + +typedef struct I2C_IT_Handle +{ + I2C_Type *pHI2C; + + uint8_t *pTxBuffPtr; /*!< Pointer to I2C Tx transfer Buffer */ + __IO uint16_t TxXferCount; /*!< I2C Tx Transfer Counter */ + + uint8_t *pRxBuffPtr; /*!< Pointer to I2C Rx transfer Buffer */ + __IO uint16_t RxXferCount; /*!< I2C Rx Transfer Counter */ + + I2C_XferModeTypeDef XferMode; + __IO uint16_t DevAddress; /*!< I2C Target device address */ + +} I2C_IT_HandleTypeDef; +//============================================================================= +// Global Data Definition +//============================================================================= + +//============================================================================= +// Private Function Definition +//============================================================================= + +//============================================================================= +// Public Function Definition +//============================================================================= +/** + * \brief Fills each init_struct member with its default value. + * + * \param [in] pInit Pointer to an I2C_InitTypeDef structure + * which will be initialized. + * \return + * None + */ +void I2C_StructInit(I2C_InitTypeDef *pInit); + +/** + * \brief Initializes the I2C module + * + * \param [in] pHI2C Pointer to an I2C handler + * \param [in] pInit Pointer to an I2C_InitTypeDef structure that + * contains the configuration information for the specified + * I2C peripheral + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Init(I2C_Type *pHI2C, I2C_InitTypeDef *pInit); + +/** + * \brief De-Initializes the I2C peripheral registers to their default values. + * + * \param [in] pHI2C Pointer to an I2C handler + * \return + * None + */ +void I2C_DeInit(I2C_Type *pHI2C); + +/** + * \brief I2C-Master transmits an amount of data in blocking mode. + * + * \param [in] pHI2C Pointer to an I2C handler + * \param [in] DevAddr Target device address: The device 7 bits address value + * in datasheet must be shift at right before call interface + * \param [in] pData Pointer to data buffer + * \param [in] Size Amount of data to be sent + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Master_Transmit(I2C_Type *pHI2C, uint16_t DevAddr, uint8_t *pData, uint16_t Size); + +/** + * \brief I2C-Master receives an amount of data in blocking mode. + * + * \param [in] pHI2C Pointer to an I2C handler + * \param [in] DevAddr Target device address: The device 7 bits address value + * in datasheet must be shift at right before call interface + * \param [in] pData Pointer to data buffer + * \param [in] pSize Amount of data to be received + * \param [in] Timeout_ms Timeout with mseconds. If Timeout_ms == I2C_BLOCKING, slave transmit with blocking mode + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Master_Receive(I2C_Type *pHI2C, uint8_t DevAddr, uint8_t *pData, uint16_t *pSize, uint16_t Timeout_ms); + + +/** + * \brief I2C-Slave Transmit data in blocking mode + * + * \param [in] pHI2C Pointer to an I2C handler + * \param [in] pData Pointer to data buffer + * \param [in] Size Amount of data to be sent + * \param [in] Timeout_ms Timeout with mseconds. If Timeout_ms == I2C_BLOCKING, slave transmit with blocking mode + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Slave_Transmit(I2C_Type *pHI2C, uint8_t *pData, uint16_t Size, uint16_t Timeout_ms); + +/** + * \brief I2C-Slave Receive data in blocking mode + * + * \param [in] pHI2C Pointer to an I2C handler + * \param [in] pData Pointer to data buffer + * \param [in] pSize Amount of data to be received + * \param [in] Timeout_ms Timeout with mseconds. If Timeout_ms == I2C_BLOCKING, slave transmit with blocking mode + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Slave_Receive(I2C_Type *pHI2C, uint8_t *pData, uint16_t *pSize, uint16_t Timeout_ms); + +/** + * \brief I2C-Master transmits an amount of data in interrupt mode. + * + * \param [in] pHITI2C Pointer to an I2C IT handler, @ref I2C_IT_HandleTypeDef + * \param [in] DevAddr Target device address: The device 7 bits address value + * in datasheet must be shift at right before call interface + * \param [in] pData Pointer to data buffer + * \param [in] Size Amount of data to be sent + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Master_Transmit_IT(I2C_IT_HandleTypeDef *pHITI2C, uint16_t DevAddr, uint8_t *pData, uint16_t Size); + +/** + * \brief I2C-Master receives an amount of data in interrupt mode. + * + * \param [in] pHITI2C Pointer to an I2C IT handler, @ref I2C_IT_HandleTypeDef + * \param [in] DevAddr Target device address: The device 7 bits address value + * in datasheet must be shift at right before call interface + * \param [in] pData Pointer to data buffer + * \param [in] Size Amount of data to be received + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Master_Receive_IT(I2C_IT_HandleTypeDef *pHITI2C, uint8_t DevAddr, uint8_t *pData, uint16_t Size); + +/** + * \brief I2C-Slave Transmit data in interrupt mode + * + * \param [in] pHITI2C Pointer to an I2C IT handler, @ref I2C_IT_HandleTypeDef + * \param [in] pData Pointer to data buffer + * \param [in] Size Amount of data to be sent + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Slave_Transmit_IT(I2C_IT_HandleTypeDef *pHITI2C, uint8_t *pData, uint16_t Size); + +/** + * \brief I2C-Slave Receive data in interrupt mode + * + * \param [in] pHITI2C Pointer to an I2C IT handler, @ref I2C_IT_HandleTypeDef + * \param [in] pData Pointer to data buffer + * \param [in] Size Amount of data to be received + * \return + * error code, @ref I2C_ErrTypeDef + */ +I2C_ErrTypeDef I2C_Slave_Receive_IT(I2C_IT_HandleTypeDef *pHITI2C, uint8_t *pData, uint16_t Size); + +/** + * \brief This function handles I2C-Master interrupt request. + * + * \param [in] pHITI2C Pointer to an I2C IT Handler, @ref I2C_IT_HandleTypeDef + * \return + * None + */ +void I2C_Master_IRQHandler(I2C_IT_HandleTypeDef *pHITI2C); + +/** + * \brief This function handles I2C-Slave interrupt request. + * + * \param [in] pHITI2C Pointer to an I2C IT Handler, @ref I2C_IT_HandleTypeDef + * \return + * None + */ +void I2C_Slave_IRQHandler(I2C_IT_HandleTypeDef *pHITI2C); + +#if 0 +/* Callback when xfer completion with interrupt */ +void I2C_MasterTxCmpltCallback(I2C_IT_HandleTypeDef *pHITI2C); +void I2C_SlaveTxCmpltCallback(I2C_IT_HandleTypeDef *pHITI2C); +void I2C_MasterRxCmpltCallback(I2C_IT_HandleTypeDef *pHITI2C); +void I2C_SlaveRxCmpltCallback(I2C_IT_HandleTypeDef *pHITI2C); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_lptim.h b/Drivers/PEC930/HAL_Lib/inc/hal_lptim.h similarity index 100% rename from Drivers/PB5700/HAL_Lib/inc/hal_lptim.h rename to Drivers/PEC930/HAL_Lib/inc/hal_lptim.h diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_opamp.h b/Drivers/PEC930/HAL_Lib/inc/hal_opamp.h similarity index 98% rename from Drivers/PB5700/HAL_Lib/inc/hal_opamp.h rename to Drivers/PEC930/HAL_Lib/inc/hal_opamp.h index efa35b0..36909dd 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_opamp.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_opamp.h @@ -27,6 +27,7 @@ extern "C" { */ typedef enum { + OPAMP_PGAGain_Ext = (0x00 << OPAMP_PGA_CR_PGA_GAIN_Pos), OPAMP_PGAGain_1 = (OPAMP_PGA_CR_PGA_GAIN_x1 << OPAMP_PGA_CR_PGA_GAIN_Pos), OPAMP_PGAGain_2 = (OPAMP_PGA_CR_PGA_GAIN_x2 << OPAMP_PGA_CR_PGA_GAIN_Pos), OPAMP_PGAGain_3 = (OPAMP_PGA_CR_PGA_GAIN_x3 << OPAMP_PGA_CR_PGA_GAIN_Pos), diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_pwr.h b/Drivers/PEC930/HAL_Lib/inc/hal_pwr.h similarity index 66% rename from Drivers/PB5700/HAL_Lib/inc/hal_pwr.h rename to Drivers/PEC930/HAL_Lib/inc/hal_pwr.h index a48e263..3a1aa6e 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_pwr.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_pwr.h @@ -22,6 +22,9 @@ extern "C" { //============================================================================= // Constant Definition //============================================================================= +/** + * Power mode type + */ typedef enum PWR_Mode { PWR_Mode_Sleep = 0, @@ -29,18 +32,36 @@ typedef enum PWR_Mode } PWR_ModeTypeDef; +/** + * The wake-up type of power mode + */ +typedef enum PWR_Wakeup +{ + PWR_Wakeup_IO_PORT_A = (0x1ul << 0), + PWR_Wakeup_IO_PORT_B = (0x1ul << 1), + PWR_Wakeup_LpTIM = (0x1ul << 2), + PWR_Wakeup_WDG = (0x1ul << 3), + +} PWR_WakeupTypeDef; /** - * \brief Set a peripheral before entering deep-sleep + * \brief Set the peripheral before entering power mode * + * \param [in] pwr_mode the target power mode, @ref PWR_ModeTypeDef + * \param [in] pWakeup_type provide the target wake-up module from App level + * \return + * None */ -typedef void (*CallbaskPreDeepsleepTypeDef)(void); +typedef void (*CallbaskPreSleepTypeDef)(PWR_ModeTypeDef pwr_mode, PWR_WakeupTypeDef *pWakeup_type); /** - * \brief Set a peripheral after deep-sleep wake-up - * ps. This callback function ONLY supports to set ONE peripheral + * \brief Set the peripheral after power mode wake-up + * + * \param [in] pwr_mode the target power mode, @ref PWR_ModeTypeDef + * \return + * None */ -typedef void (*CallbaskPostDeepsleepTypeDef)(void); +typedef void (*CallbaskPostSleepTypeDef)(PWR_ModeTypeDef pwr_mode); //============================================================================= // Macro Definition @@ -61,25 +82,16 @@ typedef void (*CallbaskPostDeepsleepTypeDef)(void); //============================================================================= // Public Function Definition //============================================================================= -/** - * @brief Set duration of auto wake-up - * - * @param [in] msec the duration of auto wakeup from sleep/deepsleep mode - * @return - * None - */ -void PWR_SetAutoWakeUp(uint32_t msec); - /** * \brief Enters Sleep mode * - * @param [in] cb_pre_set_clk Set peripheral BEFORE entering deepsleep - * @param [in] cb_post_set_clk Set peripheral AFTER wake-up from deepsleep + * @param [in] cb_pre_set_clk Set peripheral BEFORE entering sleep + * @param [in] cb_post_set_clk Set peripheral AFTER wake-up from sleep * \return * None */ -void PWR_EnterSleepMode(CallbaskPreDeepsleepTypeDef cb_pre_set, - CallbaskPostDeepsleepTypeDef cb_post_set); +void PWR_EnterSleepMode(CallbaskPreSleepTypeDef cb_pre_set, + CallbaskPostSleepTypeDef cb_post_set); /** @@ -90,8 +102,8 @@ void PWR_EnterSleepMode(CallbaskPreDeepsleepTypeDef cb_pre_set, * @return * None */ -void PWR_EnterDeepSleepMode(CallbaskPreDeepsleepTypeDef cb_pre_set, - CallbaskPostDeepsleepTypeDef cb_post_set); +void PWR_EnterDeepSleepMode(CallbaskPreSleepTypeDef cb_pre_set, + CallbaskPostSleepTypeDef cb_post_set); #ifdef __cplusplus } diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_spi.h b/Drivers/PEC930/HAL_Lib/inc/hal_spi.h similarity index 100% rename from Drivers/PB5700/HAL_Lib/inc/hal_spi.h rename to Drivers/PEC930/HAL_Lib/inc/hal_spi.h diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_syscfg.h b/Drivers/PEC930/HAL_Lib/inc/hal_syscfg.h similarity index 98% rename from Drivers/PB5700/HAL_Lib/inc/hal_syscfg.h rename to Drivers/PEC930/HAL_Lib/inc/hal_syscfg.h index 539f293..89a9014 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_syscfg.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_syscfg.h @@ -364,17 +364,17 @@ __STATIC_FORCEINLINE uint32_t SYSCFG_GetChipID(void) } /** - * \brief Configure the Alternate Function mode of Reset-Pin + * \brief Configure Reset-Pin to normal I/O or not * - * \param [in] has_rst_pin Enable Reset-Pin function or not + * \param [in] is_enable Set Reset-Pin to normal I/O or not * \return * None */ -__STATIC_FORCEINLINE void SYSCFG_SetRstPinAF(int has_rst_pin) +__STATIC_FORCEINLINE void SYSCFG_SetRstPin2NormalIO(int is_enable) { - (has_rst_pin) - ? REG_WRITE_MASK(SYSCFG->RSTPINCR, SYSCFG_RSTPINCR_RSTPINAF_Msk, SYSCFG_RSTPINCR_RSTPINAF_ON << SYSCFG_RSTPINCR_RSTPINAF_Pos) - : REG_WRITE_MASK(SYSCFG->RSTPINCR, SYSCFG_RSTPINCR_RSTPINAF_Msk, SYSCFG_RSTPINCR_RSTPINAF_OFF << SYSCFG_RSTPINCR_RSTPINAF_Pos); + (is_enable) + ? REG_WRITE_MASK(SYSCFG->RSTPINCR, SYSCFG_RSTPINCR_RSTPINAF_Msk, SYSCFG_RSTPINCR_RSTPINAF_OFF << SYSCFG_RSTPINCR_RSTPINAF_Pos) + : REG_WRITE_MASK(SYSCFG->RSTPINCR, SYSCFG_RSTPINCR_RSTPINAF_Msk, SYSCFG_RSTPINCR_RSTPINAF_ON << SYSCFG_RSTPINCR_RSTPINAF_Pos); return; } diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_tim.h b/Drivers/PEC930/HAL_Lib/inc/hal_tim.h similarity index 91% rename from Drivers/PB5700/HAL_Lib/inc/hal_tim.h rename to Drivers/PEC930/HAL_Lib/inc/hal_tim.h index 5204c8e..ee4cccc 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_tim.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_tim.h @@ -73,6 +73,8 @@ typedef struct uint16_t TIM_Break; /*!< Specifies whether the TIM Break input is enabled or not. */ uint16_t TIM_BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. */ uint16_t TIM_AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. */ + uint16_t TIM_DTGFTime; /*!< Specifies the delay time between the switching-off and */ + uint32_t TIM_DTAEState; /*!< Specifies the delay time between the switching-off and */ } TIM_BDTRInitTypeDef; /** * @} @@ -227,6 +229,11 @@ typedef struct #define TIM_DirectOutput_Disable (0x00U << TIM_BDTR_DOE_Pos) /*!< Direct output disable, output waiting for dead time */ #define TIM_DirectOutput_Enable (0x01U << TIM_BDTR_DOE_Pos) /*!< Direct output enable, no longer waiting for output after dead time */ +/** + * @brief DATE_State_Selection_for_Idle_mode_state + */ +#define TIM_DTAEState_Disable (0x00U << TIM_BDTR_DTAE_Pos) +#define TIM_DTAEState_Enable (0x01U << TIM_BDTR_DTAE_Pos) /** * @brief TIM_interrupt_sources */ @@ -238,6 +245,12 @@ typedef struct #define TIM_IT_COM (0x01U << TIM_DIER_COMIE_Pos) /*!< TIM Commutation Interrupt source */ #define TIM_IT_Trigger (0x01U << TIM_DIER_TIE_Pos) /*!< TIM Trigger Interrupt source */ #define TIM_IT_Break (0x01U << TIM_DIER_BIE_Pos) /*!< TIM Break Interrupt source */ +#define TIM_IT_CCD1 (0x01U << TIM_DIER_CCD1IE_Pos) /*!< TIM Capture Compare 1 Interrupt source */ +#define TIM_IT_CCD2 (0x01U << TIM_DIER_CCD2IE_Pos) /*!< TIM Capture Compare 2 Interrupt source */ +#define TIM_IT_CCD3 (0x01U << TIM_DIER_CCD3IE_Pos) /*!< TIM Capture Compare 3 Interrupt source */ +#define TIM_IT_OV (0x01U << TIM_DIER_OVIE_Pos) /*!< TIM Trigger Interrupt source */ +#define TIM_IT_UD (0x01U << TIM_DIER_UDIE_Pos) /*!< TIM Break Interrupt source */ +#define TIM_IT_CCD4 (0x01U << TIM_DIER_CCD4IE_Pos) /*!< TIM Capture Compare 4 Interrupt source */ /** @@ -291,13 +304,13 @@ typedef struct /** * @brief TIM_Output_Compare_Clear_State */ -#define TIM_OCClear_Disable (0x01U << TIM_CCMR1_OUTPUT_OC1CE_Pos) /*!< TIM Output clear disable */ +#define TIM_OCClear_Disable (0x00U << TIM_CCMR1_OUTPUT_OC1CE_Pos) /*!< TIM Output clear disable */ #define TIM_OCClear_Enable (0x01U << TIM_CCMR1_OUTPUT_OC1CE_Pos) /*!< TIM Output clear enable */ /** * @brief TIM_Output_Compare_Fast_State */ -#define TIM_OCFast_Disable (0x01U << TIM_CCMR1_OUTPUT_OC1FE_Pos) /*!< TIM output compare fast disable */ +#define TIM_OCFast_Disable (0x00U << TIM_CCMR1_OUTPUT_OC1FE_Pos) /*!< TIM output compare fast disable */ #define TIM_OCFast_Enable (0x01U << TIM_CCMR1_OUTPUT_OC1FE_Pos) /*!< TIM output compare fast enable */ /** @@ -388,16 +401,16 @@ typedef struct * @{ */ -#define TIM_ExtTRGPSC_OFF ((uint16_t)0x0000) -#define TIM_ExtTRGPSC_DIV2 ((uint16_t)0x1000) -#define TIM_ExtTRGPSC_DIV4 ((uint16_t)0x2000) -#define TIM_ExtTRGPSC_DIV8 ((uint16_t)0x3000) +#define TIM_ExtTRGPSC_OFF (0x00U << TIM_SMCR_ETPS_Pos) +#define TIM_ExtTRGPSC_DIV2 (0x01U << TIM_SMCR_ETPS_Pos) +#define TIM_ExtTRGPSC_DIV4 (0x02U << TIM_SMCR_ETPS_Pos) +#define TIM_ExtTRGPSC_DIV8 (0x03U << TIM_SMCR_ETPS_Pos) /** @defgroup TIM_External_Trigger_Polarity * @{ */ -#define TIM_ExtTRGPolarity_Inverted ((uint16_t)0x8000) -#define TIM_ExtTRGPolarity_NonInverted ((uint16_t)0x0000) +#define TIM_ExtTRGPolarity_Inverted (0x01U << TIM_SMCR_ETP_Pos) +#define TIM_ExtTRGPolarity_NonInverted (0x00U << TIM_SMCR_ETP_Pos) //============================================================================= // Macro Definition @@ -459,6 +472,11 @@ void TIM_ForcedOC2Config(TIM_Type *tim, uint32_t forced_action); void TIM_ForcedOC3Config(TIM_Type *tim, uint32_t forced_action); void TIM_ForcedOC4Config(TIM_Type *tim, uint32_t forced_action); +void TIM_ClearOC1Ref(TIM_Type *tim, uint16_t TIM_OCClear); +void TIM_ClearOC2Ref(TIM_Type *tim, uint16_t TIM_OCClear); +void TIM_ClearOC3Ref(TIM_Type *tim, uint16_t TIM_OCClear); +void TIM_ClearOC4Ref(TIM_Type *tim, uint16_t TIM_OCClear); + void TIM_ARRPreloadConfig(TIM_Type *tim, FunctionalState state); void TIM_SelectCOM(TIM_Type *tim, FunctionalState state); void TIM_SelectCCDMA(TIM_Type *tim, FunctionalState state); @@ -468,11 +486,12 @@ void TIM_OC1PreloadConfig(TIM_Type *tim, uint32_t preload); void TIM_OC2PreloadConfig(TIM_Type *tim, uint32_t preload); void TIM_OC3PreloadConfig(TIM_Type *tim, uint32_t preload); void TIM_OC4PreloadConfig(TIM_Type *tim, uint32_t preload); -void TIM_OC5PreloadConfig(TIM_Type *tim, uint32_t preload); + void TIM_OC1FastConfig(TIM_Type *tim, uint32_t fast); void TIM_OC2FastConfig(TIM_Type *tim, uint32_t fast); void TIM_OC3FastConfig(TIM_Type *tim, uint32_t fast); void TIM_OC4FastConfig(TIM_Type *tim, uint32_t fast); + void TIM_OC1PolarityConfig(TIM_Type *tim, uint32_t polarity); void TIM_OC1NPolarityConfig(TIM_Type *tim, uint32_t polarity); void TIM_OC2PolarityConfig(TIM_Type *tim, uint32_t polarity); @@ -481,6 +500,7 @@ void TIM_OC3PolarityConfig(TIM_Type *tim, uint32_t polarity); void TIM_OC3NPolarityConfig(TIM_Type *tim, uint32_t polarity); void TIM_OC4PolarityConfig(TIM_Type *tim, uint32_t polarity); void TIM_OC4NPolarityConfig(TIM_Type *tim, uint32_t polarity); + void TIM_CCxCmd(TIM_Type *tim, uint16_t channel, uint32_t ccx_en); void TIM_CCxNCmd(TIM_Type *tim, uint16_t channel, uint32_t ccxn_en); @@ -489,7 +509,12 @@ void TIM_SetCompare1(TIM_Type *tim, uint32_t compare); void TIM_SetCompare2(TIM_Type *tim, uint32_t compare); void TIM_SetCompare3(TIM_Type *tim, uint32_t compare); void TIM_SetCompare4(TIM_Type *tim, uint32_t compare); -void TIM_SetCompare5(TIM_Type *tim, uint32_t compare); + +void TIM_ASYMEN_Cmd(TIM_Type *tim, FunctionalState state); +void TIM_SetDownCompare1(TIM_Type *tim, uint32_t compare); +void TIM_SetDownCompare2(TIM_Type *tim, uint32_t compare); +void TIM_SetDownCompare3(TIM_Type *tim, uint32_t compare); +void TIM_SetDownCompare4(TIM_Type *tim, uint32_t compare); void TIM_UpdateDisableConfig(TIM_Type *tim, FunctionalState state); void TIM_UpdateRequestConfig(TIM_Type *tim, uint32_t source); @@ -509,7 +534,6 @@ uint32_t TIM_GetCapture1(TIM_Type *tim); uint32_t TIM_GetCapture2(TIM_Type *tim); uint32_t TIM_GetCapture3(TIM_Type *tim); uint32_t TIM_GetCapture4(TIM_Type *tim); -uint32_t TIM_GetCapture5(TIM_Type *tim); uint32_t TIM_GetCounter(TIM_Type *tim); uint16_t TIM_GetPrescaler(TIM_Type *tim); @@ -524,12 +548,14 @@ void TIM_SetCCR1FALL(TIM_Type *tim, uint32_t shift); void TIM_SetCCR2FALL(TIM_Type *tim, uint32_t shift); void TIM_SetCCR3FALL(TIM_Type *tim, uint32_t shift); void TIM_SetCCR4FALL(TIM_Type *tim, uint32_t shift); -void TIM_SetCCR5FALL(TIM_Type *tim, uint32_t shift); -FlagStatus TIM_GetCountDirection(TIM_Type *tim); +FlagStatus TIM_GetCountDirection(TIM_Type *tim); uint32_t TIM_GetTIMxClock(TIM_Type *tim); +void TIM_ETRClockMode1Config(TIM_Type *tim, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter); void TIM_ETRClockMode2Config(TIM_Type* TIMx, uint16_t TIM_ExtTRGPrescaler,uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter); +void TIM_TIxExternalClockConfig(TIM_Type *TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter); +void TIM_ETRConfig(TIM_Type *tim, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter); #ifdef __cplusplus } diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_uart.h b/Drivers/PEC930/HAL_Lib/inc/hal_uart.h similarity index 86% rename from Drivers/PB5700/HAL_Lib/inc/hal_uart.h rename to Drivers/PEC930/HAL_Lib/inc/hal_uart.h index c329035..60cf653 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_uart.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_uart.h @@ -131,7 +131,7 @@ typedef enum */ __STATIC_FORCEINLINE void UART_ResetRxFIFO(UART_Type *pHUart) { - REG_WRITE(pHUart->RXFR, 0x5700); + REG_WRITE(pHUart->RXFR, 0xe930); return; } @@ -144,7 +144,7 @@ __STATIC_FORCEINLINE void UART_ResetRxFIFO(UART_Type *pHUart) */ __STATIC_FORCEINLINE void UART_ResetTxFIFO(UART_Type *pHUart) { - REG_WRITE(pHUart->TXFR, 0x5700); + REG_WRITE(pHUart->TXFR, 0xe930); return; } @@ -277,21 +277,6 @@ uint16_t UART_ReceiveData(UART_Type *pHUart); UART_ErrTypeDef UART_ITConfig(UART_Type *pHUart, uint32_t flags, uint32_t is_enable); -/** - * @brief UART_Interrupt_definition - */ -#define UART_IT_RXNE (0x01U << UART_IE_RXNEE_Pos) /*!< RXNE interrupt enable */ -#define UART_IT_TXE (0x01U << UART_IE_TXEE_Pos) /*!< TXE interrupt enable */ -#define UART_IT_TXHE (0x01U << UART_IE_TXHEE_Pos) /*!< TXHE interrupt enable */ -#define UART_IT_PERR (0x01U << UART_IE_PERRE_Pos) /*!< PERR interrupt enable */ -#define UART_IT_FERR (0x01U << UART_IE_FERRE_Pos) /*!< FERR interrupt enable */ -#define UART_IT_OVERR (0x01U << UART_IE_OVERRE_Pos) /*!< OVERR interrupt enable */ -#define UART_IT_TONE (0x01U << UART_IE_TONEE_Pos) /*!< TONE Interrupt enable */ -#define UART_IT_TOIDLE (0x01U << UART_IE_TOIDLEE_Pos) /*!< TOIDLE interrupt enable */ -#define UART_IT_RXHF (0x01U << UART_IE_RXHFE_Pos) /*!< RXHF interrupt enable */ -#define UART_IT_RXF (0x01U << UART_IE_RXFE_Pos) /*!< RXF interrupt enable */ -#define UART_IT_TXEND (0x01U << UART_IE_TXENDE_Pos) /*!< TXEND interrupt enable */ -#define UART_IT_TXF (0x01U << UART_IE_TXFE_Pos) /*!< TXF interrupt enable */ #ifdef __cplusplus diff --git a/Drivers/PB5700/HAL_Lib/inc/hal_wdg.h b/Drivers/PEC930/HAL_Lib/inc/hal_wdg.h similarity index 87% rename from Drivers/PB5700/HAL_Lib/inc/hal_wdg.h rename to Drivers/PEC930/HAL_Lib/inc/hal_wdg.h index 44bbe12..45ce57e 100644 --- a/Drivers/PB5700/HAL_Lib/inc/hal_wdg.h +++ b/Drivers/PEC930/HAL_Lib/inc/hal_wdg.h @@ -44,17 +44,17 @@ extern "C" { //============================================================================= typedef struct { - uint32_t Relaod; - uint32_t Reset; - uint32_t Debug; + uint32_t Relaod; + uint32_t Reset; + uint32_t Debug; } WDG_BaseInitTypeDef; -#define WDG_Reset_En (0x1U << WDG_CR_RSTE_Pos) -#define WDG_Reset_Dis (0x0U << WDG_CR_RSTE_Pos) +#define WDG_Reset_En (0x1U << WDG_CR_RSTE_Pos) +#define WDG_Reset_Dis (0x0U << WDG_CR_RSTE_Pos) -#define WDG_Debug_En (0x1U << WDG_CR_DBGE_Pos) -#define WDG_Debug_Dis (0x0U << WDG_CR_DBGE_Pos) +#define WDG_Debug_En (0x1U << WDG_CR_DBGE_Pos) +#define WDG_Debug_Dis (0x0U << WDG_CR_DBGE_Pos) diff --git a/Drivers/PB5700/HAL_Lib/src/hal_adc.c b/Drivers/PEC930/HAL_Lib/src/hal_adc.c similarity index 87% rename from Drivers/PB5700/HAL_Lib/src/hal_adc.c rename to Drivers/PEC930/HAL_Lib/src/hal_adc.c index fcbf644..dd99a06 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_adc.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_adc.c @@ -17,7 +17,7 @@ //============================================================================= // Constant Definition //============================================================================= -#define ADC_TIMEOUT_CNT 1000 +#define ADC_TIMEOUT_CNT (60*1000*10) #define ADC_ALL_CHANNELS_Msk (0xFFFF) @@ -133,6 +133,7 @@ void ADC_Init(ADC_Type *pHADC, ADC_InitTypeDef *pInit) pInit->DataAlign); REG_SET_BITS(pHADC->STAT, ADC_STAT_EOC_CHECK_DIS_Msk); + REG_WRITE_MASK(pHADC->CHSEL, ADC_CHSEL_CH_SEL_Msk, pInit->SelChannels); break; case ADC_Mode_Scan: @@ -181,7 +182,7 @@ void ADC_Init(ADC_Type *pHADC, ADC_InitTypeDef *pInit) void ADC_StructInit(ADC_InitTypeDef *pInit) { - pInit->SelChannels = ADC_Channel_15; + pInit->SelChannels = ADC_Channel_AVSS; pInit->ClkPrescaler = ADC_ClkDiv_Auto; pInit->DataAlign = ADC_DataAlign_Right; pInit->Mode = ADC_Mode_SingleConv; @@ -204,7 +205,6 @@ void ADC_ExtTrigConfig(ADC_Type *pHADC, ADC_ExtTrigSourceTypeDef ext_src, ADC_Ex if( ext_src & 0x10 ) { - uint32_t pin_sel = 0; /* TRIG_SEL17 rising/falling configuraion */ @@ -222,20 +222,44 @@ void ADC_ExtTrigConfig(ADC_Type *pHADC, ADC_ExtTrigSourceTypeDef ext_src, ADC_Ex return; } +/** + * \brief Select the sub-channel of the ADC Channel-15 + * + * \param [in] subchannel The selected sub-channel of ADC channel-15, @ref ADC_SubChannelTypeDef + * \return + * None + */ +void ADC_SelSubChannel(ADC_SubChannelTypeDef subchannel) +{ + AMISC_InternalSrcTypeDef src_type = AMISC_InternalSrc_NONE; + + src_type = (subchannel == ADC_SubChannel_TEMP) ? AMISC_InternalSrc_TEMP : + (subchannel == ADC_SubChannel_DAC0) ? AMISC_InternalSrc_DAC0 : + (subchannel == ADC_SubChannel_DAC1) ? AMISC_InternalSrc_DAC1 : + (subchannel == ADC_SubChannel_VBuf_1_5) ? AMISC_InternalSrc_VBuf_1P5V : + (subchannel == ADC_SubChannel_VDDL) ? AMISC_InternalSrc_VDDL : + (subchannel == ADC_SubChannel_VSS) ? AMISC_InternalSrc_VSS : + (subchannel == ADC_SubChannel_VDD) ? AMISC_InternalSrc_VDD : + AMISC_InternalSrc_NONE; + + AMISC_OutInternalSignalToIO(src_type, false); + + REG_SET_BITS(AMISC->ADC_AIN_CR, AMISC_ADC_AIN_CR_ANA2ADC_EN_Msk); + return; +} + uint16_t ADC_GetChannelConvValue(ADC_Type *pHADC, ADC_ChannelsTypeDef channel) { volatile uint32_t *pData = (volatile uint32_t*)&pHADC->DAT0; int timeout = 0; uint32_t chnnl_id = (31ul - HAL_CLZ(channel)); -#if 0 while( REG_READ_MASK(pHADC->CON0, ADC_CON0_ENCONT_Msk) == 0 && REG_READ_MASK(pHADC->STAT, ADC_STAT_DONE_Msk) == 0 ) { if( timeout++ > ADC_TIMEOUT_CNT ) return 0; } -#endif pData += (chnnl_id & 0xFul); return (uint16_t)((*pData) & 0xFFFFul); diff --git a/Drivers/PB5700/HAL_Lib/src/hal_amisc.c b/Drivers/PEC930/HAL_Lib/src/hal_amisc.c similarity index 64% rename from Drivers/PB5700/HAL_Lib/src/hal_amisc.c rename to Drivers/PEC930/HAL_Lib/src/hal_amisc.c index 9db059a..9cbde01 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_amisc.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_amisc.c @@ -85,15 +85,6 @@ AMISC_StatusTypeDef AMISC_LVD_LVR_Config(AMISC_LVDRInitTypeDef *pInit) return AMISC_Status_OK; } - -void AMISC_VBUF_Config(AMISC_VBUFConfigTypeDef *pInit) -{ - REG_WRITE_MASK(AMISC->VBUF_CR, - AMISC_VBUF_CR_ANA2IO_EN_Msk | AMISC_VBUF_CR_ANA2PGA_EN_Msk | \ - AMISC_VBUF_CR_ANA_SEL_Msk , - pInit->Ana2IOT | pInit->Ana2PGA | pInit->AnaSel); -} - void AMISC_HSI_Disable(void) { if( SYSCFG_GetSysClkType() == SYSCFG_ClkSrc_LSI ) @@ -124,6 +115,85 @@ void AMISC_LSI_Enable(void) return; } +void AMISC_Sel_PGA_VinP_Src(AMISC_InternalSrcTypeDef src_type) +{ + AMISC_InternalSrcTypeDef VinP_Src = AMISC_InternalSrc_NONE; + + /* AMISC clock enable */ + __HAL_SYSCFG_AMISC_CLK_ENABLE(); + + VinP_Src = (src_type == AMISC_InternalSrc_NONE) + ? src_type : (AMISC_VBUF_CR_ANA2PGA_EN_Msk | src_type); + + switch( src_type ) + { + default: + break; + + case AMISC_InternalSrc_NONE: + break; + + case AMISC_InternalSrc_TEMP: + REG_SET_BITS(AMISC->LVD_LVR_CR, AMISC_LVD_LVR_CR_TEMP_EN_Msk); + break; + + case AMISC_InternalSrc_DAC0: + AMISC_DAC0_Enable(); + break; + case AMISC_InternalSrc_DAC1: + AMISC_DAC1_Enable(); + break; + case AMISC_InternalSrc_VBuf_1P5V: + REG_SET_BITS(VinP_Src, AMISC_VBUF_CR_VBUF_EN_Msk); + break; + } + + REG_WRITE_MASK(AMISC->VBUF_CR, + AMISC_VBUF_CR_ANA_SEL_Msk | AMISC_VBUF_CR_ANA2PGA_EN_Msk, + VinP_Src); + + sys_busy_wait(60*1000); + return; +} + +void AMISC_OutInternalSignalToIO(AMISC_InternalSrcTypeDef src_type, int has_output) +{ + uint32_t value = (has_output) + ? (src_type | AMISC_VBUF_CR_ANA2IO_EN_Msk) : src_type; + + /* AMISC clock enable */ + __HAL_SYSCFG_AMISC_CLK_ENABLE(); + + switch( src_type ) + { + default: + break; + + case AMISC_InternalSrc_NONE: + break; + + case AMISC_InternalSrc_TEMP: + REG_SET_BITS(AMISC->LVD_LVR_CR, AMISC_LVD_LVR_CR_TEMP_EN_Msk); + break; + + case AMISC_InternalSrc_DAC0: + AMISC_DAC0_Enable(); + break; + case AMISC_InternalSrc_DAC1: + AMISC_DAC1_Enable(); + break; + case AMISC_InternalSrc_VBuf_1P5V: + REG_SET_BITS(value, AMISC_VBUF_CR_VBUF_EN_Msk); + break; + } + + REG_WRITE_MASK(AMISC->VBUF_CR, + AMISC_VBUF_CR_ANA_SEL_Msk | AMISC_VBUF_CR_ANA2IO_EN_Msk | AMISC_VBUF_CR_VBUF_EN_Msk, + value); + + sys_busy_wait(60*1000); + return; +} #endif /* CONFIG_ENABLE_HAL_AMISC */ diff --git a/Examples/pga/pga_test/src/isr.c b/Drivers/PEC930/HAL_Lib/src/hal_comp.c similarity index 90% rename from Examples/pga/pga_test/src/isr.c rename to Drivers/PEC930/HAL_Lib/src/hal_comp.c index d19995f..dc0aa9e 100644 --- a/Examples/pga/pga_test/src/isr.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_comp.c @@ -1,17 +1,19 @@ /** * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. */ -/** @file isr.c +/** @file hal_vcmp.c * * @author Wei-Lun Hsu * @version 0.1 - * @date 2024/09/16 + * @date 2024/10/17 * @license * @description */ -#include "isr.h" +#include "hal_device.h" + +#if defined(CONFIG_ENABLE_HAL_COMP) //============================================================================= // Constant Definition @@ -37,3 +39,5 @@ // Public Function Definition //============================================================================= + +#endif /* CONFIG_ENABLE_HAL_VCMP */ diff --git a/Drivers/PB5700/HAL_Lib/src/hal_crc.c b/Drivers/PEC930/HAL_Lib/src/hal_crc.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_crc.c rename to Drivers/PEC930/HAL_Lib/src/hal_crc.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_device.c b/Drivers/PEC930/HAL_Lib/src/hal_device.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_device.c rename to Drivers/PEC930/HAL_Lib/src/hal_device.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_dsp.c b/Drivers/PEC930/HAL_Lib/src/hal_dsp.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_dsp.c rename to Drivers/PEC930/HAL_Lib/src/hal_dsp.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_flash.c b/Drivers/PEC930/HAL_Lib/src/hal_flash.c similarity index 95% rename from Drivers/PB5700/HAL_Lib/src/hal_flash.c rename to Drivers/PEC930/HAL_Lib/src/hal_flash.c index a7a53df..e4d7f23 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_flash.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_flash.c @@ -18,6 +18,7 @@ // Constant Definition //============================================================================= #define CONFIG_FLASH_TIMEOUT 0xFFFFFFFFul +#define FLASH_PE_CLK_MAX (1ul*1000*1000) //============================================================================= // Macro Definition //============================================================================= @@ -33,7 +34,15 @@ //============================================================================= // Private Function Definition //============================================================================= +static void +_FLASH_SetDivider(void) +{ + uint32_t div = 0; + div = sys_get_cpu_freq() / FLASH_PE_CLK_MAX; + REG_WRITE(FLASH->DIV, div | (0x1ul << 8)); + return; +} //============================================================================= // Public Function Definition //============================================================================= @@ -63,7 +72,7 @@ FLASH_ErasePage(uint32_t page_addr) { flash_state_t rval = FLASH_STATE_OK; - REG_WRITE(FLASH->DIV, SYS_HIRC_MHZ | (0x1ul << 8)); // move to system init ??? + _FLASH_SetDivider(); do { REG_WRITE(FLASH->SR, 0xFFFFFFFFul); // clean interrutp flags @@ -104,6 +113,8 @@ FLASH_ProgWord(uint32_t addr, uint32_t value) break; } + _FLASH_SetDivider(); + REG_WRITE(FLASH->SR, 0xFFFFFFFFul); // clean interrutp flags FLASH->AR = addr; @@ -145,6 +156,7 @@ FLASH_ProgHWord(uint32_t addr, uint16_t value) break; } + _FLASH_SetDivider(); REG_WRITE(FLASH->SR, 0xFFFFFFFFul); // clean interrutp flags #if 0 @@ -188,6 +200,7 @@ FLASH_ProgByte(uint32_t addr, uint8_t value) uint32_t word; } u; + _FLASH_SetDivider(); REG_WRITE(FLASH->SR, 0xFFFFFFFFul); // clean interrutp flags #if 0 @@ -232,6 +245,7 @@ FLASH_ProgData(uint32_t addr, uint32_t *pData, int length) break; } + _FLASH_SetDivider(); REG_WRITE(FLASH->SR, 0xFFFFFFFFul); // clean interrutp flags FLASH->AR = addr; diff --git a/Drivers/PB5700/HAL_Lib/src/hal_gpio.c b/Drivers/PEC930/HAL_Lib/src/hal_gpio.c similarity index 83% rename from Drivers/PB5700/HAL_Lib/src/hal_gpio.c rename to Drivers/PEC930/HAL_Lib/src/hal_gpio.c index d1fdb99..765a06c 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_gpio.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_gpio.c @@ -63,9 +63,12 @@ int GPIO_Init(GPIO_Type *pHGpio, GPIO_InitTypeDef *pInit) continue; // enable Schmitt-Trigger - REG_CLR_BITS(pHGpio->CTC, pin_cur); REG_SET_BITS(pHGpio->CTS, pin_cur); + (pInit->GPIO_OType == GPIO_OType_OD) + ? REG_SET_BITS(pHGpio->ODS, pin_cur) + : REG_SET_BITS(pHGpio->ODC, pin_cur); + switch( pInit->GPIO_Mode ) { default: @@ -95,36 +98,33 @@ int GPIO_Init(GPIO_Type *pHGpio, GPIO_InitTypeDef *pInit) case GPIO_Mode_OUT: /* Output mode */ REG_SET_BITS(pHGpio->INEC, pin_cur); REG_SET_BITS(pHGpio->OES, pin_cur); - (pInit->GPIO_OType == GPIO_OType_OD) - ? REG_SET_BITS(pHGpio->ODS, pin_cur) - : REG_SET_BITS(pHGpio->ODC, pin_cur); if( pInit->GPIO_PuPd == GPIO_PuPd_UP ) { - REG_SET_BITS(pHGpio->PUS, pin_cur); - REG_SET_BITS(pHGpio->PDC, pin_cur); + REG_SET_BITS(pHGpio->LAT, pin_cur); } else if( pInit->GPIO_PuPd == GPIO_PuPd_DOWN ) { - REG_SET_BITS(pHGpio->PDS, pin_cur); - REG_SET_BITS(pHGpio->PUC, pin_cur); + REG_CLR_BITS(pHGpio->LAT, pin_cur); } else - { /* NOPULL */ - REG_SET_BITS(pHGpio->PDC, pin_cur); - REG_SET_BITS(pHGpio->PUC, pin_cur); + { + /* NOPULL, H/w not support */ } - break; case GPIO_Mode_ANAL: /* Analog mode */ REG_SET_BITS(pHGpio->INEC, pin_cur); // disable Schmitt-Trigger - REG_CLR_BITS(pHGpio->CTS, pin_cur); REG_SET_BITS(pHGpio->CTC, pin_cur); break; + case GPIO_Mode_PWR_Saving: + REG_SET_BITS(pHGpio->INEC, pin_cur); + REG_SET_BITS(pHGpio->OEC, pin_cur); + break; + case GPIO_Mode_AF: /* Alternate mode */ if( pHGpio == GPIOA && (pin_cur & GPIO_PORTA_AF_PINS) ) { @@ -151,6 +151,44 @@ int GPIO_Init(GPIO_Type *pHGpio, GPIO_InitTypeDef *pInit) return rval; } +void GPIO_DeInit(GPIO_Type *pHGpio, uint32_t pins) +{ + while( pins ) + { + int shift = 31 - HAL_CLZ(pins); + uint32_t pin_cur = 0x0; + + pin_cur = 0x1ul << shift; + REG_CLR_BITS(pins, pin_cur); + + REG_SET_BITS(pHGpio->IEC, pin_cur); // disable interrupt + + REG_SET_BITS(pHGpio->INEC, pin_cur); + REG_SET_BITS(pHGpio->OEC, pin_cur); + + REG_SET_BITS(pHGpio->ODC, pin_cur); + + REG_SET_BITS(pHGpio->ITC0, pin_cur); + REG_SET_BITS(pHGpio->ITC1, pin_cur); + REG_SET_BITS(pHGpio->PLC, pin_cur); + REG_SET_BITS(pHGpio->IST, pin_cur); + + REG_SET_BITS(pHGpio->CTS, pin_cur); + + if( pHGpio == GPIOA && (pin_cur & GPIO_PORTA_AF_PINS) ) + { + shift = (shift > 5) ? (shift - 8) : shift; + REG_WRITE_MASK(AFIO->PAAFR, (AFIO_PAAFR_PA0_Msk << 3*shift), GPIO_AF_0 << 3*shift); + } + else if( pHGpio == GPIOB && (pin_cur & GPIO_PORTB_AF_PINS) ) + { + REG_WRITE_MASK(AFIO->PBAFR, (AFIO_PBAFR_PB0_Msk << 3*shift), GPIO_AF_0 << 3*shift); + } + } + + return; +} + void GPIO_PeriAFConfig(GPIO_Type *pHGpio, GPIO_PeriTypeDef peri_type, GPIO_PeriAFTypeDef af_mode) { if( peri_type < GPIO_Peri_Fn2 ) diff --git a/Drivers/PEC930/HAL_Lib/src/hal_i2c.c b/Drivers/PEC930/HAL_Lib/src/hal_i2c.c new file mode 100644 index 0000000..8edcea0 --- /dev/null +++ b/Drivers/PEC930/HAL_Lib/src/hal_i2c.c @@ -0,0 +1,870 @@ +/** + * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. + */ +/** @file hal_i2c.c +* +* @author Wei-Lun Hsu +* @version 0.1 +* @date 2024/09/10 +* @license +* @description +*/ + + +#include "hal_device.h" + +#if defined(CONFIG_ENABLE_HAL_I2C) +//============================================================================= +// Constant Definition +//============================================================================= +#define CONFIG_I2C_TIMEOUT 20U /*!< Timeout 20 ms */ +#define I2C_CLOCK_FREQ_MAX (400ul*1000) + +typedef enum +{ + I2C_SwState_SUCCESS = 0, /*!< Waited i2c status flag */ + I2C_SwState_ERROR = 1, /*!< No i2c status flag */ + I2C_SwState_WAITING = 2, /*!< Waiting i2c status flag */ + I2C_SwState_HOLD_DATA = 3, /*!< I2C hold data flag */ + I2C_SwState_FORCE_STOP = 4, /*!< I2C force stop flag */ + I2C_SwState_RESTART = 5, /*!< I2C restart flag */ +} I2C_SwState; + +typedef enum +{ + I2C_TxStage_START_BIT = 0, + I2C_TxStage_ADDRESS, + I2C_TxStage_DATA, + +} I2C_TxStage; + +#define I2C_START_BIT_H I2C_CTLSET_STA_Msk +#define I2C_START_BIT_L 0x0u + +#define I2C_STOP_BIT_H I2C_CTLSET_STO_Msk +#define I2C_STOP_BIT_L 0x0u + +#define I2C_ACK_BIT_H I2C_CTLSET_AA_Msk +#define I2C_ACK_BIT_L 0x0u + + +#define I2C_CLK_DIVIDER_60 (I2C_CTLSET_CR1_Msk | I2C_CTLSET_CR2_Msk) +#define I2C_CLK_DIVIDER_120 (I2C_CTLSET_CR0_Msk | I2C_CTLSET_CR2_Msk) +#define I2C_CLK_DIVIDER_160 (I2C_CTLSET_CR0_Msk | I2C_CTLSET_CR1_Msk) +#define I2C_CLK_DIVIDER_192 I2C_CTLSET_CR1_Msk +#define I2C_CLK_DIVIDER_244 I2C_CTLSET_CR0_Msk +#define I2C_CLK_DIVIDER_256 0x0ul +#define I2C_CLK_DIVIDER_960 I2C_CTLSET_CR2_Msk +#define I2C_CLK_DIVIDER_Msk (I2C_CTLSET_CR0_Msk | I2C_CTLSET_CR1_Msk | I2C_CTLSET_CR2_Msk) +//============================================================================= +// Macro Definition +//============================================================================= +/** + * \brief Set/Clear Ack bit + * + * \param [in] pHI2C The handle of I2C + * \return None + */ +__STATIC_FORCEINLINE void _I2C_SET_ACK_FLAG(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLSET, I2C_CTLSET_AA_Msk); + return; +} + +__STATIC_FORCEINLINE void _I2C_CLR_ACK_FLAG(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLCLR, I2C_CTLCLR_AA_Msk); + return; +} + +/** + * \brief Set/Clear Start bit + * + * \param [in] pHI2C The handle of I2C + * \return None + */ +__STATIC_FORCEINLINE void _I2C_SET_START_FLAG(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLSET, I2C_CTLSET_STA_Msk); + return; +} + +__STATIC_FORCEINLINE void _I2C_CLR_START_FLAG(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLCLR, I2C_CTLCLR_STA_Msk); + return; +} + +/** + * \brief Check Interrupt flag of an I2C + * + * \param [in] __HANDLE__ The handle of I2C + * \return + * 0 : no interrupt + * others: get interrupt + */ +#define __I2C_GET_SI_FLAG(__HANDLE__) REG_READ_MASK((__HANDLE__)->CTLSET, I2C_CTLSET_SI_Msk) + + +/** + * \brief Set/Clear the I2C interrupt set-flag + * + * \param [in] pHI2C The handle of I2C + * \return + * None + */ +__STATIC_FORCEINLINE void _I2C_SET_SI_FLAG(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLSET, I2C_CTLSET_SI_Msk); + return; +} + +__STATIC_FORCEINLINE void _I2C_CLR_SI_FLAG(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLCLR, I2C_CTLCLR_SI_Msk); + return; +} + +/** + * \brief Enable/Disable General Call + * + * \param [in] pHI2C The handle of I2C + * \return None + */ +__STATIC_FORCEINLINE void _I2C_GC_ENABLE(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->ADDR, I2C_ADDR_GC_Msk); + return; +} + +__STATIC_FORCEINLINE void _I2C_GC_DISABLE(I2C_Type *pHI2C) +{ + REG_CLR_BITS(pHI2C->ADDR, I2C_ADDR_GC_Msk); + return; +} + +/** + * \brief Enable/Disable I2C module + * + * \param [in] pHI2C The handle of I2C + * \return + * None + */ +__STATIC_FORCEINLINE void _I2C_ENABLE(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLSET, I2C_CTLSET_EN_Msk); + return; +} + +__STATIC_FORCEINLINE void _I2C_DISABLE(I2C_Type *pHI2C) +{ + REG_SET_BITS(pHI2C->CTLCLR, I2C_CTLSET_EN_Msk); + return; +} + + + /** + * \brief Configure the Start/Stop/ACK flag + * + * \param [in] pHI2C The handle of I2C + * \param [in] start_bit The target state of start_bit + * \param [in] stop_bit The target state of stop_bit + * \param [in] ack_bit The target state of ack_bit + * \return + * None + */ + __STATIC_FORCEINLINE void _I2C_Config(I2C_Type *pHI2C, uint32_t start_bit, uint32_t stop_bit, uint32_t ack_bit) +{ + REG_WRITE_MASK(pHI2C->CTLCLR, + I2C_CTLCLR_STA_Msk | I2C_CTLCLR_STO_Msk | I2C_CTLCLR_AA_Msk, + I2C_CTLCLR_STA_Msk | I2C_CTLCLR_STO_Msk | I2C_CTLCLR_AA_Msk); + + REG_WRITE_MASK(pHI2C->CTLSET, + I2C_CTLSET_STA_Msk | I2C_CTLSET_STO_Msk | I2C_CTLSET_AA_Msk, + (start_bit) | (stop_bit) | (ack_bit)); + return; +} + + +//============================================================================= +// Structure Definition +//============================================================================= + +//============================================================================= +// Global Data Definition +//============================================================================= + +//============================================================================= +// Private Function Definition +//============================================================================= +static I2C_ErrTypeDef +_I2C_Wait_SI_Flag(I2C_Type *pHI2C, uint32_t timeout_ms) +{ + uint32_t start_ticks = 0; + + start_ticks = sys_get_tick(); + + while( !REG_READ_MASK(pHI2C->CTLSET, I2C_CTLSET_SI_Msk) ) + { + if( (sys_get_tick() - start_ticks) > timeout_ms ) + { + return I2C_Err_TimeOut; + } + } + + return I2C_Err_OK; +} + +static I2C_SwState +_I2C_Master_Send_Byte(I2C_Type *pHI2C, uint8_t **ppData, bool is_end) +{ + __IO uint32_t *pData_reg = &pHI2C->DATA; + I2C_SwState rval = I2C_SwState_SUCCESS; + + switch( REG_READ(pHI2C->STAT) ) + { + default: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_L); + rval = I2C_SwState_ERROR; + break; + + case I2C_State_MASTER_TX_START: + case I2C_State_MASTER_TX_RESTART: + case I2C_State_MASTER_TX_SLAW_ACK: + *((__IO uint8_t*)pData_reg) = *((__IO uint8_t*)(*ppData)); + *ppData = *ppData + 1; + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_L); + break; + + case I2C_State_MASTER_TX_SLAW_NOACK: + case I2C_State_MASTER_TX_DATA_NOACK: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_L); + break; + + case I2C_State_MASTER_TX_DATA_ACK: + if( is_end ) + { + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_L); + break; + } + + *((__IO uint8_t*)pData_reg) = *((__IO uint8_t*)(*ppData)); + *ppData = *ppData + 1; + break; + + case I2C_State_MASTER_TX_LOST_BUS: + _I2C_Config(pHI2C, I2C_START_BIT_H, I2C_STOP_BIT_L, I2C_ACK_BIT_L); + break; + } + + _I2C_CLR_SI_FLAG(pHI2C); + + return rval; +} + +static I2C_SwState +_I2C_Master_Recv_Byte(I2C_Type *pHI2C, uint8_t **ppData, uint32_t is_end) +{ + __IO uint32_t *pData_reg = &pHI2C->DATA; + I2C_SwState rval = I2C_SwState_SUCCESS; + + switch( REG_READ(pHI2C->STAT) ) + { + default: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_L); + rval = I2C_SwState_ERROR; + break; + + case I2C_State_MASTER_TX_DATA_ACK: + _I2C_Config(pHI2C, I2C_START_BIT_H, I2C_STOP_BIT_L, I2C_ACK_BIT_L); + break; + + case I2C_State_MASTER_RX_START: + case I2C_State_MASTER_RX_RESTART: + *((__IO uint8_t*)pData_reg) = *((__IO uint8_t*)(*ppData)); + *ppData = *ppData + 1; + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_L); + break; + + case I2C_State_MASTER_RX_SLAR_ACK: + _I2C_Config(pHI2C, I2C_START_BIT_L, + I2C_STOP_BIT_L, + (is_end)? I2C_ACK_BIT_L : I2C_ACK_BIT_H); + break; + + case I2C_State_MASTER_RX_DATA_ACK: + _I2C_Config(pHI2C, I2C_START_BIT_L, + I2C_STOP_BIT_L, + (is_end) ? I2C_ACK_BIT_L : I2C_ACK_BIT_H); + + *(__IO uint8_t*)(*ppData) = *((__IO uint8_t*)pData_reg); + *ppData = *ppData + 1; + + break; + + case I2C_State_MASTER_RX_DATA_NOACK: + *(__IO uint8_t*)(*ppData) = *((__IO uint8_t*)pData_reg); + *ppData = *ppData + 1; + + case I2C_State_MASTER_RX_SLAR_NOACK: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_H); + break; + + case I2C_State_MASTER_RX_LOST_BUS: + _I2C_Config(pHI2C, I2C_START_BIT_H, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + break; + } + + _I2C_CLR_SI_FLAG(pHI2C); + + return rval; +} + +static I2C_SwState +_I2C_Slave_Send_Byte(I2C_Type *pHI2C, uint8_t **ppData, bool *pHasRxAddr, bool is_end) +{ + __IO uint32_t *pData_reg = &pHI2C->DATA; + I2C_SwState rval = I2C_SwState_SUCCESS; + + switch( REG_READ(pHI2C->STAT) ) + { + default: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_H); + rval = I2C_SwState_ERROR; + break; + + case I2C_State_SLAVE_RX_SLAR_ACK: + *pHasRxAddr = true; + case I2C_State_SLAVE_TX_DATA_ACK: + if( is_end ) + { + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_H); + break; + } + + *((__IO uint8_t*)pData_reg) = *((__IO uint8_t*)(*ppData)); + *ppData = *ppData + 1; + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + break; + + case I2C_State_SLAVE_TX_LOST_BUS: + *((__IO uint8_t*)pData_reg) = *((__IO uint8_t*)(*ppData)); + *ppData = *ppData + 1; + _I2C_Config(pHI2C, I2C_START_BIT_H, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + break; + + case I2C_State_SLAVE_TX_DATA_NOACK: + case I2C_State_SLAVE_TX_LAST_DATA: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + rval = I2C_SwState_SUCCESS; + break; + + case I2C_State_SLAVE_STOP_RESTART: // master force stop + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + rval = (*pHasRxAddr) ? I2C_SwState_FORCE_STOP : I2C_SwState_RESTART; + break; + } + + _I2C_CLR_SI_FLAG(pHI2C); + + return rval; +} + +static I2C_SwState +_I2C_Slave_Recv_Byte(I2C_Type *pHI2C, uint8_t **ppData, uint32_t is_end) +{ + __IO uint32_t *pData_reg = &pHI2C->DATA; + I2C_SwState rval = I2C_SwState_SUCCESS; + + switch( REG_READ(pHI2C->STAT) ) + { + default: + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_H, I2C_ACK_BIT_H); + rval = I2C_SwState_ERROR; + break; + + case I2C_State_SLAVE_RX_SLAW_LOST_BUS: + case I2C_State_SLAVE_RX_BADDR_LOST_BUS: + _I2C_Config(pHI2C, I2C_START_BIT_H, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + break; + + case I2C_State_SLAVE_RX_SLAW_ACK: + case I2C_State_SLAVE_RX_BDATA_NOACK: + case I2C_State_SLAVE_RX_BROAD_ACK: + _I2C_Config(pHI2C, I2C_START_BIT_L, + I2C_STOP_BIT_L, + (is_end) ? I2C_ACK_BIT_L : I2C_ACK_BIT_H); + + rval = I2C_SwState_HOLD_DATA; + break; + + case I2C_State_SLAVE_RX_DATA_ACK: + *(__IO uint8_t*)(*ppData) = *((__IO uint8_t*)pData_reg); + *ppData = *ppData + 1; + + _I2C_Config(pHI2C, I2C_START_BIT_L, + I2C_STOP_BIT_L, + (is_end) ? I2C_ACK_BIT_L : I2C_ACK_BIT_H); + break; + + case I2C_State_SLAVE_RX_DATA_NOACK: + *(__IO uint8_t*)(*ppData) = *((__IO uint8_t*)pData_reg); + *ppData = *ppData + 1; + + _I2C_Config(pHI2C, I2C_START_BIT_L, + (is_end) ? I2C_STOP_BIT_H : I2C_STOP_BIT_L, + I2C_ACK_BIT_H); + break; + + case I2C_State_SLAVE_RX_BDATA_ACK: + *(__IO uint8_t*)(*ppData) = *((__IO uint8_t*)pData_reg); + *ppData = *ppData + 1; + + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + break; + + case I2C_State_SLAVE_STOP_RESTART: // master force stop + _I2C_Config(pHI2C, I2C_START_BIT_L, I2C_STOP_BIT_L, I2C_ACK_BIT_H); + rval = I2C_SwState_FORCE_STOP; + break; + } + + _I2C_CLR_SI_FLAG(pHI2C); + + return rval; +} +//============================================================================= +// Public Function Definition +//============================================================================= +void I2C_StructInit(I2C_InitTypeDef *pInit) +{ + int divider = 0; + + pInit->Mode = I2C_Mode_MASTER; + pInit->OwnAddress = 0x0; + pInit->BroadAck = I2C_BroadAck_Disable; + + divider = (g_SystemCoreClock / I2C_CLOCK_FREQ_MAX); + pInit->ClockDiv = (divider <= I2C_CLK_Div60) ? I2C_CLK_Div60 : + (divider <= I2C_CLK_Div120) ? I2C_CLK_Div120 : + (divider <= I2C_CLK_Div160) ? I2C_CLK_Div160 : + (divider <= I2C_CLK_Div192) ? I2C_CLK_Div192 : + (divider <= I2C_CLK_Div244) ? I2C_CLK_Div244 : + (divider <= I2C_CLK_Div256) ? I2C_CLK_Div256 : + I2C_CLK_Div960; + + return; +} + + +/** + * @brief Deinitializes the i2c peripheral registers to their default + * reset values. + * @param i2c1. + * @retval None. + */ +void I2C_DeInit(I2C_Type *pHI2C) +{ + _I2C_DISABLE(pHI2C); + + __HAL_SYSCFG_RESET_I2C(); + __HAL_SYSCFG_I2C_CLK_DISABLE(); + return; +} + + +I2C_ErrTypeDef I2C_Init(I2C_Type *pHI2C, I2C_InitTypeDef *pInit) +{ + __HAL_SYSCFG_I2C_CLK_ENABLE(); + __HAL_SYSCFG_RESET_I2C(); + + if( pInit->Mode == I2C_Mode_MASTER ) + { + uint32_t divider = 0ul; + + /** + * I2C clock freq should less than I2C_CLOCK_FREQ_MAX + */ +// if( (g_SystemCoreClock / pInit->ClockDiv) > I2C_CLOCK_FREQ_MAX ) +// return I2C_Err_WrongParams; + + divider = (pInit->ClockDiv == I2C_CLK_Div960) ? I2C_CLK_DIVIDER_960 : + (pInit->ClockDiv == I2C_CLK_Div256) ? I2C_CLK_DIVIDER_256 : + (pInit->ClockDiv == I2C_CLK_Div244) ? I2C_CLK_DIVIDER_244 : + (pInit->ClockDiv == I2C_CLK_Div192) ? I2C_CLK_DIVIDER_192 : + (pInit->ClockDiv == I2C_CLK_Div160) ? I2C_CLK_DIVIDER_160 : + (pInit->ClockDiv == I2C_CLK_Div120) ? I2C_CLK_DIVIDER_120 : + I2C_CLK_DIVIDER_60; + + /* Set divider */ + REG_WRITE_MASK(pHI2C->CTLSET, I2C_CLK_DIVIDER_Msk, divider); + + /* clear ack flag */ + _I2C_CLR_ACK_FLAG(pHI2C); + } + else if( pInit->Mode == I2C_Mode_SLAVE ) + { + /* Configure Slave Address */ + REG_WRITE_MASK(pHI2C->ADDR, + I2C_ADDR_ADDR_Msk | I2C_ADDR_GC_Msk, + (pInit->OwnAddress << I2C_ADDR_ADDR_Pos) | pInit->BroadAck); + + REG_WRITE_MASK(pHI2C->CTLSET, I2C_CLK_DIVIDER_Msk, pInit->ClockDiv); + + _I2C_SET_ACK_FLAG(pHI2C); + } + else + return I2C_Err_WrongParams; + + + _I2C_ENABLE(pHI2C); + _I2C_CLR_SI_FLAG(pHI2C); + + return I2C_Err_OK; +} + +I2C_ErrTypeDef I2C_Master_Transmit(I2C_Type *pHI2C, uint16_t DevAddr, uint8_t *pData, uint16_t Size) +{ + I2C_SwState rval = I2C_SwState_SUCCESS; + I2C_TxStage stage = I2C_TxStage_START_BIT; + uint16_t tx_nbytes = 0; + + if( (int)pHI2C == (int)I2C0 ) + sys_close_IRQ(I2C0_IRQn); + + _I2C_SET_START_FLAG(pHI2C); + stage = I2C_TxStage_ADDRESS; + + while( tx_nbytes < Size ) + { + if( _I2C_Wait_SI_Flag(pHI2C, CONFIG_I2C_TIMEOUT) != I2C_Err_OK ) + break; + + if( stage == I2C_TxStage_ADDRESS ) + { + uint8_t addr = (uint8_t)DevAddr & ~0x1u; // write mode + uint8_t *pAddr = 0; + + pAddr = &addr; + rval = _I2C_Master_Send_Byte(pHI2C, &pAddr, false); + if( rval == I2C_SwState_ERROR ) + break; + + stage = I2C_TxStage_DATA; + continue; + } + else + { + rval = _I2C_Master_Send_Byte(pHI2C, &pData, false); + if( rval == I2C_SwState_ERROR ) + break; + } + + tx_nbytes = (rval == I2C_SwState_SUCCESS) ? tx_nbytes + 1 : tx_nbytes; + } + + if( rval == I2C_SwState_SUCCESS ) + { + // send STOP-bit + _I2C_Wait_SI_Flag(pHI2C, CONFIG_I2C_TIMEOUT); + _I2C_Master_Send_Byte(pHI2C, &pData, true); + } + + return (rval == I2C_SwState_SUCCESS) ? I2C_Err_OK : I2C_Err_Fail; +} + +I2C_ErrTypeDef I2C_Master_Receive(I2C_Type *pHI2C, uint8_t DevAddr, uint8_t *pData, uint16_t *pSize, uint16_t Timeout_ms) +{ + I2C_SwState rval = I2C_SwState_SUCCESS; + I2C_TxStage stage = I2C_TxStage_START_BIT; + uint16_t buf_size = *pSize; + int rx_nbytes = 0; + + if( (int)pHI2C == (int)I2C0 ) + sys_close_IRQ(I2C0_IRQn); + + _I2C_SET_START_FLAG(pHI2C); + stage = I2C_TxStage_ADDRESS; + + if( pSize ) *pSize = 0; + + while( rx_nbytes < buf_size ) + { + if( _I2C_Wait_SI_Flag(pHI2C, Timeout_ms) != I2C_Err_OK ) + { + if( Timeout_ms == I2C_BLOCKING ) + continue; + + return I2C_Err_TimeOut; + } + + if( stage == I2C_TxStage_ADDRESS ) + { + uint8_t addr = (uint8_t)DevAddr | 0x1u; // read mode + uint8_t *pAddr = 0; + + pAddr = &addr; + rval = _I2C_Master_Recv_Byte(pHI2C, &pAddr, (buf_size == 1)); + if( rval == I2C_SwState_ERROR ) + break; + + /** + * send DevAddr+R and then receive data + * ps. Decrease the DevAddr+R byte + */ + rx_nbytes = -1; + stage = I2C_TxStage_DATA; + continue; + } + else + { + rval = _I2C_Master_Recv_Byte(pHI2C, &pData, ((rx_nbytes + 1) == (buf_size-1))); + if( rval == I2C_SwState_ERROR ) + break; + } + + rx_nbytes = (rval == I2C_SwState_SUCCESS) ? rx_nbytes + 1 : rx_nbytes; + } + + if( pSize ) *pSize = rx_nbytes; + + return (rval == I2C_SwState_SUCCESS) ? I2C_Err_OK : I2C_Err_Fail; +} + +I2C_ErrTypeDef I2C_Slave_Transmit(I2C_Type *pHI2C, uint8_t *pData, uint16_t Size, uint16_t Timeout_ms) +{ + __IO uint16_t tx_nbytes = 0; + I2C_SwState rval = I2C_SwState_SUCCESS; + bool HasRecvAddr = false; + + if( (int)pHI2C == (int)I2C0 ) + sys_close_IRQ(I2C0_IRQn); + + while( tx_nbytes < Size ) + { + if( _I2C_Wait_SI_Flag(pHI2C, Timeout_ms) != I2C_Err_OK ) + { + if( Timeout_ms == I2C_BLOCKING ) + continue; + + return I2C_Err_TimeOut; + } + + rval = _I2C_Slave_Send_Byte(pHI2C, &pData, &HasRecvAddr, false); + if( rval == I2C_SwState_ERROR || rval == I2C_SwState_FORCE_STOP ) + { + break; + } + + tx_nbytes = (rval == I2C_SwState_SUCCESS) ? tx_nbytes + 1 : tx_nbytes; + } + + if( rval == I2C_SwState_SUCCESS ) + { + // send STOP-bit + _I2C_Wait_SI_Flag(pHI2C, CONFIG_I2C_TIMEOUT); + _I2C_Slave_Send_Byte(pHI2C, &pData, &HasRecvAddr, true); + } + + return (rval == I2C_SwState_SUCCESS) ? I2C_Err_OK : I2C_Err_Fail; +} + +I2C_ErrTypeDef I2C_Slave_Receive(I2C_Type *pHI2C, uint8_t *pData, uint16_t *pSize, uint16_t Timeout_ms) +{ + uint16_t rx_nbytes = 0; + uint16_t buf_size = *pSize; + I2C_SwState rval = I2C_SwState_SUCCESS; + + if( (int)pHI2C == (int)I2C0 ) + sys_close_IRQ(I2C0_IRQn); + + if( pSize ) *pSize = 0; + + while( rx_nbytes < buf_size ) + { + if( _I2C_Wait_SI_Flag(pHI2C, Timeout_ms) != I2C_Err_OK ) + { + if( Timeout_ms == I2C_BLOCKING ) + continue; + + return I2C_Err_TimeOut; + } + + rval = _I2C_Slave_Recv_Byte(pHI2C, &pData, ((rx_nbytes + 1) == buf_size)); + if( rval == I2C_SwState_ERROR || rval == I2C_SwState_FORCE_STOP ) + { + break; + } + + rx_nbytes = (rval == I2C_SwState_SUCCESS) ? rx_nbytes + 1 : rx_nbytes; + } + + if( pSize ) *pSize = rx_nbytes; + + return (rval == I2C_SwState_SUCCESS) ? I2C_Err_OK : I2C_Err_Fail; +} + +I2C_ErrTypeDef I2C_Master_Transmit_IT(I2C_IT_HandleTypeDef *pHITI2C, uint16_t DevAddr, uint8_t *pData, uint16_t Size) +{ + pHITI2C->XferMode = I2C_XferMode_Transmite; + pHITI2C->DevAddress = (uint8_t)DevAddr; + pHITI2C->pTxBuffPtr = pData; + pHITI2C->TxXferCount = Size; + + if( (int)pHITI2C->pHI2C == (int)I2C0 ) + sys_open_IRQ(I2C0_IRQn); + + REG_WRITE_MASK(pHITI2C->pHI2C->CTLSET, + I2C_CTLSET_STA_Msk | I2C_CTLSET_SI_Msk, + I2C_CTLSET_STA_Msk | I2C_CTLSET_SI_Msk); + + return I2C_Err_OK; +} + +I2C_ErrTypeDef I2C_Master_Receive_IT(I2C_IT_HandleTypeDef *pHITI2C, uint8_t DevAddr, uint8_t *pData, uint16_t Size) +{ + pHITI2C->XferMode = I2C_XferMode_Recevie; + pHITI2C->DevAddress = (uint8_t)DevAddr; + pHITI2C->pRxBuffPtr = pData; + pHITI2C->RxXferCount = Size; + + if( (int)pHITI2C->pHI2C == (int)I2C0 ) + sys_open_IRQ(I2C0_IRQn); + + REG_WRITE_MASK(pHITI2C->pHI2C->CTLSET, + I2C_CTLSET_STA_Msk | I2C_CTLSET_SI_Msk, + I2C_CTLSET_STA_Msk | I2C_CTLSET_SI_Msk); + + return I2C_Err_OK; +} + +I2C_ErrTypeDef I2C_Slave_Transmit_IT(I2C_IT_HandleTypeDef *pHITI2C, uint8_t *pData, uint16_t Size) +{ + pHITI2C->XferMode = I2C_XferMode_Transmite; + pHITI2C->pTxBuffPtr = pData; + pHITI2C->TxXferCount = Size; + + _I2C_SET_SI_FLAG(pHITI2C->pHI2C); + if( (int)pHITI2C->pHI2C == (int)I2C0 ) + sys_open_IRQ(I2C0_IRQn); + + return I2C_Err_OK; +} + +I2C_ErrTypeDef I2C_Slave_Receive_IT(I2C_IT_HandleTypeDef *pHITI2C, uint8_t *pData, uint16_t Size) +{ + pHITI2C->XferMode = I2C_XferMode_Recevie; + pHITI2C->pRxBuffPtr = pData; + pHITI2C->RxXferCount = Size; + + _I2C_SET_SI_FLAG(pHITI2C->pHI2C); + if( (int)pHITI2C->pHI2C == (int)I2C0 ) + sys_open_IRQ(I2C0_IRQn); + + return I2C_Err_OK; +} + +void I2C_Master_IRQHandler(I2C_IT_HandleTypeDef *pHITI2C) +{ + I2C_SwState rval = I2C_SwState_SUCCESS; + + if( pHITI2C->XferMode == I2C_XferMode_Transmite ) + { + if( pHITI2C->DevAddress & 0x8000 ) + { + // xfer data stage, if pHITI2C->TxXferCount == 0, I2C should send STOP-bit + rval = _I2C_Master_Send_Byte(pHITI2C->pHI2C, &pHITI2C->pTxBuffPtr, (pHITI2C->TxXferCount) ? false : true); + if( rval == I2C_SwState_SUCCESS ) + pHITI2C->TxXferCount--; + + if( pHITI2C->TxXferCount == 0xFFFF ) + { + pHITI2C->XferMode = I2C_XferMode_Idle; + } + } + else + { + uint8_t *pAddr = 0; + + pHITI2C->DevAddress &= ~0x1u; // write mode + + pAddr = (uint8_t*)&pHITI2C->DevAddress; + rval = _I2C_Master_Send_Byte(pHITI2C->pHI2C, &pAddr, false); + if( rval == I2C_SwState_SUCCESS ) + pHITI2C->DevAddress |= 0x8000; + } + } + else if( pHITI2C->XferMode == I2C_XferMode_Recevie ) + { + if( pHITI2C->DevAddress & 0x8000 ) + { + rval = _I2C_Master_Recv_Byte(pHITI2C->pHI2C, &pHITI2C->pRxBuffPtr, (pHITI2C->RxXferCount - 2) ? false : true); + if( rval == I2C_SwState_SUCCESS ) + pHITI2C->RxXferCount--; + + if( pHITI2C->RxXferCount == 0 ) + { + pHITI2C->XferMode = I2C_XferMode_Idle; + } + } + else + { + uint8_t *pAddr = 0; + + pHITI2C->DevAddress |= 0x1u; // read mode + + pAddr = (uint8_t*)&pHITI2C->DevAddress; + rval = _I2C_Master_Recv_Byte(pHITI2C->pHI2C, &pAddr, false); + if( rval == I2C_SwState_SUCCESS ) + { + pHITI2C->DevAddress |= 0x8000; + + /** + * send DevAddr+R and then receive data + * ps. Decrease the DevAddr+R byte + */ + pHITI2C->RxXferCount++; + } + } + } + + return; +} + +void I2C_Slave_IRQHandler(I2C_IT_HandleTypeDef *pHITI2C) +{ + I2C_SwState rval = I2C_SwState_SUCCESS; + + if( pHITI2C->XferMode == I2C_XferMode_Transmite ) + { + bool HasRecvAddr = false; + + // xfer data stage, if pHITI2C->TxXferCount == 0, I2C should send STOP-bit + rval = _I2C_Slave_Send_Byte(pHITI2C->pHI2C, &pHITI2C->pTxBuffPtr, &HasRecvAddr, (pHITI2C->TxXferCount) ? false : true); + pHITI2C->TxXferCount = (rval == I2C_SwState_SUCCESS) ? pHITI2C->TxXferCount - 1 : + (rval == I2C_SwState_FORCE_STOP) ? 0xFFFF : + pHITI2C->TxXferCount; + + if( pHITI2C->TxXferCount == 0xFFFF ) + { + pHITI2C->XferMode = I2C_XferMode_Idle; + } + } + else if( pHITI2C->XferMode == I2C_XferMode_Recevie ) + { + rval = _I2C_Slave_Recv_Byte(pHITI2C->pHI2C, &pHITI2C->pRxBuffPtr, (pHITI2C->RxXferCount == 2)); + + pHITI2C->RxXferCount = (rval == I2C_SwState_SUCCESS) ? pHITI2C->RxXferCount - 1 : + (rval == I2C_SwState_FORCE_STOP) ? 0 : + pHITI2C->RxXferCount; + + if( pHITI2C->RxXferCount == 0 ) + { + pHITI2C->XferMode = I2C_XferMode_Idle; + } + } + + return; +} + +#endif /* CONFIG_ENABLE_HAL_I2C */ diff --git a/Drivers/PB5700/HAL_Lib/src/hal_lptim.c b/Drivers/PEC930/HAL_Lib/src/hal_lptim.c similarity index 96% rename from Drivers/PB5700/HAL_Lib/src/hal_lptim.c rename to Drivers/PEC930/HAL_Lib/src/hal_lptim.c index a8a626d..feb9f1c 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_lptim.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_lptim.c @@ -53,18 +53,18 @@ void LPTIM_Init(LPTIM_Type *pHLpTim, LPTIM_InitTypeDef *pInit) { if( pHLpTim == LPTIM ) { - // ToDo: reset module + __HAL_SYSCFG_RESET_LPTIM(); __HAL_SYSCFG_LPTIM_CLK_ENABLE(); REG_WRITE_MASK(pHLpTim->TCR, LPTIM_TCR_CLKS_Msk, pInit->LPTIM_ClockSource); } else if( pHLpTim == TIM0 ) { - // ToDo: reset module + __HAL_SYSCFG_RESET_TIM0(); __HAL_SYSCFG_TIM0_CLK_ENABLE(); } else if( pHLpTim == TIM1 ) { - // ToDo: reset module + __HAL_SYSCFG_RESET_TIM1(); __HAL_SYSCFG_TIM1_CLK_ENABLE(); } diff --git a/Drivers/PB5700/HAL_Lib/src/hal_opamp.c b/Drivers/PEC930/HAL_Lib/src/hal_opamp.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_opamp.c rename to Drivers/PEC930/HAL_Lib/src/hal_opamp.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_pwr.c b/Drivers/PEC930/HAL_Lib/src/hal_pwr.c similarity index 54% rename from Drivers/PB5700/HAL_Lib/src/hal_pwr.c rename to Drivers/PEC930/HAL_Lib/src/hal_pwr.c index e104a8d..72175cb 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_pwr.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_pwr.c @@ -18,8 +18,12 @@ //============================================================================= // Constant Definition //============================================================================= -#define __PWR_WAIT_RECHARGE() do{ __NOP(); __NOP(); __NOP(); __NOP(); \ - }while(0) +#if 1 + #define __PWR_WAIT_RECHARGE() do{ __NOP(); __NOP(); __NOP(); __NOP(); \ + }while(0) +#else + #define __PWR_WAIT_RECHARGE() +#endif //============================================================================= // Macro Definition //============================================================================= @@ -39,31 +43,31 @@ //============================================================================= // Public Function Definition //============================================================================= -void PWR_SetAutoWakeUp(uint32_t msec) +void PWR_EnterSleepMode(CallbaskPreSleepTypeDef cb_pre_set, + CallbaskPostSleepTypeDef cb_post_set) { - sys_config_systick(msec * SYS_TICK_1_MS); - return; -} + int wakeup_type = 0; -void PWR_EnterSleepMode(CallbaskPreDeepsleepTypeDef cb_pre_set, - CallbaskPostDeepsleepTypeDef cb_post_set) -{ sys_disable_girq(); if( cb_pre_set ) - cb_pre_set(); + cb_pre_set(PWR_Mode_Sleep, (PWR_WakeupTypeDef*)&wakeup_type); + + __HAL_SYSCFG_AMISC_CLK_ENABLE(); + + AMISC_SetHSIPwrSrc(AMISC_HSIPwrSrc_LowPower); + + REG_WRITE(AMISC->DAC_CR, 0x0ul); // Off DAC leakage __set_wfi_sleepmode(WFI_SHALLOW_SLEEP); - SYSCFG_SetLowPower(true); - __WFI(); - __PWR_WAIT_RECHARGE(); + /* __PWR_WAIT_RECHARGE(); */ if( cb_post_set ) - cb_post_set(); + cb_post_set(PWR_Mode_Sleep); - SYSCFG_SetLowPower(false); + AMISC_SetHSIPwrSrc(AMISC_HSIPwrSrc_Normal); sys_enable_girq(); @@ -71,26 +75,55 @@ void PWR_EnterSleepMode(CallbaskPreDeepsleepTypeDef cb_pre_set, } -void PWR_EnterDeepSleepMode(CallbaskPreDeepsleepTypeDef cb_pre_set, - CallbaskPostDeepsleepTypeDef cb_post_set) +void PWR_EnterDeepSleepMode(CallbaskPreSleepTypeDef cb_pre_set, + CallbaskPostSleepTypeDef cb_post_set) { + uint32_t value = 0; + int wakeup_type = 0; + sys_disable_girq(); if( cb_pre_set ) - cb_pre_set(); + cb_pre_set(PWR_Mode_DeepSleep, (PWR_WakeupTypeDef*)&wakeup_type); - __set_wfi_sleepmode(WFI_DEEP_SLEEP); + __HAL_SYSCFG_AMISC_CLK_ENABLE(); + + AMISC_SetHSIPwrSrc(AMISC_HSIPwrSrc_LowPower); + + REG_WRITE(AMISC->DAC_CR, 0x0ul); // Off DAC leakage SYSCFG_SetLowPower(true); + /* Close the clocks of all peripheral */ + value = 0x0ul; + if( wakeup_type & PWR_Wakeup_LpTIM ) + { + value |= SYSCFG_PCLKEN_LPTIM_Msk; + } + + if( wakeup_type & PWR_Wakeup_WDG ) + { + value |= SYSCFG_PCLKEN_WDG_Msk; + } + + REG_WRITE(SYSCFG->PCLKEN, value); + + REG_WRITE(SYSCFG->HCLKEN, SYSCFG_HCLKEN_GPIOB_Msk | SYSCFG_HCLKEN_GPIOA_Msk); + + __set_wfi_sleepmode(WFI_DEEP_SLEEP); + __WFI(); __PWR_WAIT_RECHARGE(); - if( cb_post_set ) - cb_post_set(); - SYSCFG_SetLowPower(false); + __HAL_SYSCFG_AMISC_CLK_ENABLE(); + AMISC_SetHSIPwrSrc(AMISC_HSIPwrSrc_Normal); + __HAL_SYSCFG_AMISC_CLK_DISABLE(); + + if( cb_post_set ) + cb_post_set(PWR_Mode_DeepSleep); + sys_enable_girq(); return; diff --git a/Drivers/PB5700/HAL_Lib/src/hal_spi.c b/Drivers/PEC930/HAL_Lib/src/hal_spi.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_spi.c rename to Drivers/PEC930/HAL_Lib/src/hal_spi.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_syscfg.c b/Drivers/PEC930/HAL_Lib/src/hal_syscfg.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_syscfg.c rename to Drivers/PEC930/HAL_Lib/src/hal_syscfg.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_tim.c b/Drivers/PEC930/HAL_Lib/src/hal_tim.c similarity index 91% rename from Drivers/PB5700/HAL_Lib/src/hal_tim.c rename to Drivers/PEC930/HAL_Lib/src/hal_tim.c index cf57036..48a617f 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_tim.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_tim.c @@ -494,6 +494,20 @@ void TIM_Cmd(TIM_Type *tim, FunctionalState state) (tim->CR1 &= ~(0x01U << TIM_CR1_CEN_Pos)); } +/** + * @brief Enables or disables the Asymmetric Mode. + * @param tim: select the TIM peripheral. + * @param state: new state of the tim peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None. + */ +void TIM_ASYMEN_Cmd(TIM_Type *tim, FunctionalState state) +{ + (state) ? \ + (tim->CR1 |= (0x01U << TIM_CR1_ASYMEN_Pos)) : \ + (tim->CR1 &= ~(0x01U << TIM_CR1_ASYMEN_Pos)); +} + /** * @brief Enables or disables the TIM peripheral Main Outputs. * @param tim: select the TIM peripheral. @@ -622,10 +636,38 @@ void TIM_PrescalerConfig(TIM_Type *tim, uint16_t prescaler, uint16_t reloadMode) tim->EGR = reloadMode; } -#if 0 + +/** + * @brief Configures the External clock Mode1 + * @param TIMx: where x can be 2, EPWM to select the TIM peripheral. + * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. + * @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2. + * @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4. + * @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity: The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active. + * @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active. + * @param ExtTRGFilter: External Trigger Filter. + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +void TIM_ETRClockMode1Config(TIM_Type *tim, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter) +{ + /* Configure the ETR Clock source */ + TIM_ETRConfig(tim, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); + + /* Select the External clock mode1 . Select the Trigger selection : ETRF */ + REG_WRITE_MASK(tim->SMCR, TIM_SMCR_SMS_Msk | TIM_SMCR_TS_Msk , TIM_SlaveMode_External1 | TIM_TS_ETRF ); +} + + + /** * @brief Configures the TIMx Trigger as External Clock - * @param TIMx: where x can be 1, 2, 3, 4, 5, 9, 12 or 15 to select the TIM peripheral. + * @param TIMx: where x can be 2, EPWM to select the TIM peripheral. * @param TIM_TIxExternalCLKSource: Trigger source. * This parameter can be one of the following values: * @arg TIM_TIxExternalCLK1Source_TI1ED: TI1 Edge Detector @@ -639,8 +681,7 @@ void TIM_PrescalerConfig(TIM_Type *tim, uint16_t prescaler, uint16_t reloadMode) * This parameter must be a value between 0x0 and 0xF. * @retval None */ -void TIM_TIxExternalClockConfig(TIM_Type *TIMx, uint16_t TIM_TIxExternalCLKSource, - uint16_t TIM_ICPolarity, uint16_t ICFilter) +void TIM_TIxExternalClockConfig(TIM_Type *TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter) { /* Configure the Timer Input Clock Source */ @@ -650,46 +691,9 @@ void TIM_TIxExternalClockConfig(TIM_Type *TIMx, uint16_t TIM_TIxExternalCLKSourc TIMx->SMCR |= TIM_SlaveMode_External1; } -/** - * @brief Configures the External clock Mode1 - * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. - * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. - * This parameter can be one of the following values: - * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. - * @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2. - * @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4. - * @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8. - * @param TIM_ExtTRGPolarity: The external Trigger Polarity. - * This parameter can be one of the following values: - * @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active. - * @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active. - * @param ExtTRGFilter: External Trigger Filter. - * This parameter must be a value between 0x00 and 0x0F - * @retval None - */ -void TIM_ETRClockMode1Config(TIM_Type *TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, - uint16_t ExtTRGFilter) -{ - uint16_t tmpsmcr = 0; - /* Configure the ETR Clock source */ - TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); - - /* Get the TIMx SMCR register value */ - tmpsmcr = TIMx->SMCR; - /* Reset the SMS Bits */ - tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_SMS_Msk)); - /* Select the External clock mode1 */ - tmpsmcr |= TIM_SlaveMode_External1; - /* Select the Trigger selection : ETRF */ - tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_TS_Msk)); - tmpsmcr |= TIM_TS_ETRF; - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; -} - /** * @brief Configures the External clock Mode2 - * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIMx: where x can be 2, EPWM to select the TIM peripheral. * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. * This parameter can be one of the following values: * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. @@ -704,18 +708,17 @@ void TIM_ETRClockMode1Config(TIM_Type *TIMx, uint16_t TIM_ExtTRGPrescaler, uint1 * This parameter must be a value between 0x00 and 0x0F * @retval None */ -void TIM_ETRClockMode2Config(TIM_Type *TIMx, uint16_t TIM_ExtTRGPrescaler, - uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter) +void TIM_ETRClockMode2Config(TIM_Type *tim, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter) { /* Configure the ETR Clock source */ - TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); + TIM_ETRConfig(tim, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); /* Enable the External clock mode2 */ - TIMx->SMCR |= TIM_SMCR_ECE_Msk; + tim->SMCR |= TIM_SMCR_ECE_Msk; } /** * @brief Configures the TIMx External Trigger (ETR). - * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIMx: where x can be 2, EPWM to select the TIM peripheral. * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. * This parameter can be one of the following values: * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. @@ -730,19 +733,10 @@ void TIM_ETRClockMode2Config(TIM_Type *TIMx, uint16_t TIM_ExtTRGPrescaler, * This parameter must be a value between 0x00 and 0x0F * @retval None */ -void TIM_ETRConfig(TIM_Type *TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, - uint16_t ExtTRGFilter) +void TIM_ETRConfig(TIM_Type *tim, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter) { - uint16_t tmpsmcr = 0; - tmpsmcr = TIMx->SMCR; - /* Reset the ETR Bits */ - tmpsmcr &= SMCR_ETR_Mask; - /* Set the Prescaler, the Filter value and the Polarity */ - tmpsmcr |= (uint16_t)(TIM_ExtTRGPrescaler | (uint16_t)(TIM_ExtTRGPolarity | (uint16_t)(ExtTRGFilter << (uint16_t)8))); - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; + REG_WRITE_MASK(tim->SMCR, TIM_SMCR_ETPS_Msk | TIM_SMCR_ETP_Msk | TIM_SMCR_ETF_Msk,TIM_ExtTRGPrescaler | TIM_ExtTRGPolarity | ExtTRGFilter << TIM_SMCR_ETF_Pos); } -#endif /** * @brief Specifies the tim Counter Mode to be used. @@ -1386,6 +1380,49 @@ void TIM_SetCompare4(TIM_Type *tim, uint32_t compare) tim->CCR4 = (uint16_t)compare; } +/** + * @brief Sets the tim Downwards Compare1 Register value + * @param tim: select the TIM peripheral. + * @param compare: specifies the Capture Compare1 register new value. + * @retval None. + */ +void TIM_SetDownCompare1(TIM_Type *tim, uint32_t compare) +{ + tim->CCDR1 = (uint16_t)compare; +} + +/** + * @brief Sets the tim Downwards Compare2 Register value + * @param tim: select the TIM peripheral. + * @param compare: specifies the Capture Compare2 register new value. + * @retval None. + */ +void TIM_SetDownCompare2(TIM_Type *tim, uint32_t compare) +{ + tim->CCDR2 = (uint16_t)compare; +} + +/** + * @brief Sets the tim Downwards Compare3 Register value + * @param tim: select the TIM peripheral. + * @param compare: specifies the Capture Compare3 register new value. + * @retval None. + */ +void TIM_SetDownCompare3(TIM_Type *tim, uint32_t compare) +{ + tim->CCDR3 = (uint16_t)compare; +} + +/** + * @brief Sets the tim Downwards Compare4 Register value + * @param tim: select the TIM peripheral. + * @param compare: specifies the Capture Compare4 register new value. + * @retval None. + */ +void TIM_SetDownCompare4(TIM_Type *tim, uint32_t compare) +{ + tim->CCDR4 = (uint16_t)compare; +} /** * @brief Gets the tim Input Capture 1 value. @@ -1541,9 +1578,6 @@ void TIM_ClearITPendingBit(TIM_Type *tim, uint32_t it) tim->SR &= ~it; } - - - /** * @brief Checks whether the specified TIM flag is set or not. * @param tim: select the TIM peripheral. @@ -1554,4 +1588,60 @@ FlagStatus TIM_GetCountDirection(TIM_Type *tim) return ((tim->CR1 &TIM_CR1_DIR_Msk) ? SET : RESET); } +/** + * @brief Clears or safeguards the OCREF1 signal on an external event + * @param tim: where tim can be 2,EPWM to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC1Ref(TIM_Type *tim, uint16_t TIM_OCClear) +{ + REG_WRITE_MASK(TIM->CCMR1_OUTPUT, TIM_CCMR1_OUTPUT_OC1CE_Msk, TIM_OCClear); +} + +/** + * @brief Clears or safeguards the OCREF2 signal on an external event + * @param tim: where tim can be 2,EPWM to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC2Ref(TIM_Type *tim, uint16_t TIM_OCClear) +{ + REG_WRITE_MASK(TIM->CCMR1_OUTPUT, TIM_CCMR1_OUTPUT_OC2CE_Msk, TIM_OCClear << 8); +} + +/** + * @brief Clears or safeguards the OCREF3 signal on an external event + * @param tim: where tim can be 2,EPWM to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC3Ref(TIM_Type *tim, uint16_t TIM_OCClear) +{ + REG_WRITE_MASK(TIM->CCMR2_OUTPUT, TIM_CCMR2_OUTPUT_OC3CE_Msk, TIM_OCClear); +} + +/** + * @brief Clears or safeguards the OCREF4 signal on an external event + * @param tim: where tim can be 2,EPWM to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC4Ref(TIM_Type *tim, uint16_t TIM_OCClear) +{ + REG_WRITE_MASK(TIM->CCMR2_OUTPUT, TIM_CCMR2_OUTPUT_OC4CE_Msk, TIM_OCClear << 8); +} + #endif /* CONFIG_ENABLE_HAL_TIM2 || CONFIG_ENABLE_HAL_EPWM */ diff --git a/Drivers/PB5700/HAL_Lib/src/hal_uart.c b/Drivers/PEC930/HAL_Lib/src/hal_uart.c similarity index 100% rename from Drivers/PB5700/HAL_Lib/src/hal_uart.c rename to Drivers/PEC930/HAL_Lib/src/hal_uart.c diff --git a/Drivers/PB5700/HAL_Lib/src/hal_wdg.c b/Drivers/PEC930/HAL_Lib/src/hal_wdg.c similarity index 90% rename from Drivers/PB5700/HAL_Lib/src/hal_wdg.c rename to Drivers/PEC930/HAL_Lib/src/hal_wdg.c index 4fe5a86..97066c2 100644 --- a/Drivers/PB5700/HAL_Lib/src/hal_wdg.c +++ b/Drivers/PEC930/HAL_Lib/src/hal_wdg.c @@ -62,15 +62,16 @@ void WDG_BaseStructInit(WDG_BaseInitTypeDef *init_struct) */ void WDG_BaseInit( WDG_BaseInitTypeDef *init_struct) { - __HAL_SYSCFG_WDG_CLK_ENABLE(); + __HAL_SYSCFG_RESET_WDG(); + __HAL_SYSCFG_WDG_CLK_ENABLE(); - WDG_Unlock(); + WDG_Unlock(); - WDG->LOAD = init_struct->Relaod; - REG_WRITE_MASK(WDG->CR, WDG_CR_RSTE_Msk, init_struct->Reset); - REG_WRITE_MASK(WDG->CR, WDG_CR_DBGE_Msk, init_struct->Debug); + WDG->LOAD = init_struct->Relaod; + REG_WRITE_MASK(WDG->CR, WDG_CR_RSTE_Msk, init_struct->Reset); + REG_WRITE_MASK(WDG->CR, WDG_CR_DBGE_Msk, init_struct->Debug); - WDG_Clear(); + WDG_Clear(); } @@ -94,7 +95,7 @@ void WDG_SetReload(uint32_t reload) */ void WDG_Enable(void) { - REG_SET_BITS(WDG->CR, WDG_CR_INTE_Msk); + REG_SET_BITS(WDG->CR, WDG_CR_INTE_Msk); } /** @@ -104,7 +105,7 @@ void WDG_Enable(void) */ void WDG_Disable(void) { - REG_CLR_BITS(WDG->CR, WDG_CR_INTE_Msk); + REG_CLR_BITS(WDG->CR, WDG_CR_INTE_Msk); } /** @@ -161,7 +162,7 @@ uint32_t WDG_GetMIF(uint32_t mif_bit_mask) */ void WDG_Unlock(void) { - WDG->LOCK = 0x1ACCE551; + WDG->LOCK = 0x1ACCE551; } /** * @brief Lock the WDG so thatit cannot be overwritten @@ -170,7 +171,7 @@ void WDG_Unlock(void) */ void WDG_Lock(void) { - WDG->LOCK = 0; + WDG->LOCK = 0; } /** * @brief Get WDG lock status. This Value is only read. diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_compatiable.h b/Drivers/PEC930/NMSIS/Core/Include/core_compatiable.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_compatiable.h rename to Drivers/PEC930/NMSIS/Core/Include/core_compatiable.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_base.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_base.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_base.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_base.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_bitmanip.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_bitmanip.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_bitmanip.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_bitmanip.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_cache.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_cache.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_cache.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_cache.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_cidu.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_cidu.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_cidu.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_cidu.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_dsp.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_dsp.h similarity index 99% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_dsp.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_dsp.h index 6a7e5a1..5fb3c67 100644 --- a/Drivers/PB5700/NMSIS/Core/Include/core_feature_dsp.h +++ b/Drivers/PEC930/NMSIS/Core/Include/core_feature_dsp.h @@ -19569,7 +19569,7 @@ __STATIC_FORCEINLINE unsigned long __RV_DREDAS16(unsigned long long a) * Do halfs reduced subtraction and halfs reduced addition from a register. The result is written to Rd. * * **Description**:\n - * For the `DREDSA16` instruction, add the top 16-bit Q15 element from the bottom 16-bit Q15 element of the bottom 32-bit Q31 content of 64-bit chunks in Rs1. At the same time, subtract the the top16-bit Q15 element with the bottom16-bit Q15 element of the top 32-bit Q31 content of 64-bit chunks in Rs1. The two Q15 results are then written into Rd. + * For the `DREDSA16` instruction, add the top 16-bit Q15 element from the bottom 16-bit Q15 element of the bottom 32-bit Q31 content of 64-bit chunks in Rs1. At the same time, subtract the the top16-bit Q15 element with the bottom16-bit Q15 element of the top 32-bit Q31 content of 64-bit chunks in Rs1. The two Q15 results are then written into Rd. * * **Operations**:\n * ~~~ @@ -20445,7 +20445,7 @@ __STATIC_FORCEINLINE unsigned long long __RV_DPKBT16(unsigned long long a, unsig * * **Purpose**:\n * Pack 16-bit data from 32-bit chunks in two registers. - * * PKTT16 top.top + * * PKTT16 top.top * * **Description**:\n * This instruction moves Rs1.W[x] [31:16] to Rd.W[x] [31:16] and moves Rs2.W[x] [31:16] to Rd.W[x] [15:0]. @@ -23979,7 +23979,7 @@ __STATIC_FORCEINLINE long __RV_DMADA32(long long t, unsigned long long a, unsign * * **Purpose**:\n * Multiply the signed 16-bit content of the 32-bit elements of a register with the 16-bit content of the corresponding 32-bit - * elements of another register and add the results with a 64-bit value of an even/odd pair of registers. The addition result + * elements of another register and add the results with a 64-bit value of an even/odd pair of registers. The addition result * is written back to the register-pair. * * DSMALBB: rt pair + bottom*bottom (all 32-bit elements) * diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_eclic.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_eclic.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_eclic.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_eclic.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_fpu.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_fpu.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_fpu.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_fpu.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_plic.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_plic.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_plic.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_plic.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_pmp.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_pmp.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_pmp.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_pmp.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_spmp.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_spmp.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_spmp.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_spmp.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_timer.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_timer.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_timer.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_timer.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/core_feature_vector.h b/Drivers/PEC930/NMSIS/Core/Include/core_feature_vector.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/core_feature_vector.h rename to Drivers/PEC930/NMSIS/Core/Include/core_feature_vector.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/nmsis_bench.h b/Drivers/PEC930/NMSIS/Core/Include/nmsis_bench.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/nmsis_bench.h rename to Drivers/PEC930/NMSIS/Core/Include/nmsis_bench.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/nmsis_compiler.h b/Drivers/PEC930/NMSIS/Core/Include/nmsis_compiler.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/nmsis_compiler.h rename to Drivers/PEC930/NMSIS/Core/Include/nmsis_compiler.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/nmsis_core.h b/Drivers/PEC930/NMSIS/Core/Include/nmsis_core.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/nmsis_core.h rename to Drivers/PEC930/NMSIS/Core/Include/nmsis_core.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/nmsis_gcc.h b/Drivers/PEC930/NMSIS/Core/Include/nmsis_gcc.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/nmsis_gcc.h rename to Drivers/PEC930/NMSIS/Core/Include/nmsis_gcc.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/nmsis_iar.h b/Drivers/PEC930/NMSIS/Core/Include/nmsis_iar.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/nmsis_iar.h rename to Drivers/PEC930/NMSIS/Core/Include/nmsis_iar.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/nmsis_version.h b/Drivers/PEC930/NMSIS/Core/Include/nmsis_version.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/nmsis_version.h rename to Drivers/PEC930/NMSIS/Core/Include/nmsis_version.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/riscv_bits.h b/Drivers/PEC930/NMSIS/Core/Include/riscv_bits.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/riscv_bits.h rename to Drivers/PEC930/NMSIS/Core/Include/riscv_bits.h diff --git a/Drivers/PB5700/NMSIS/Core/Include/riscv_encoding.h b/Drivers/PEC930/NMSIS/Core/Include/riscv_encoding.h similarity index 100% rename from Drivers/PB5700/NMSIS/Core/Include/riscv_encoding.h rename to Drivers/PEC930/NMSIS/Core/Include/riscv_encoding.h diff --git a/Drivers/PEC930/component.mk b/Drivers/PEC930/component.mk new file mode 100644 index 0000000..79a155e --- /dev/null +++ b/Drivers/PEC930/component.mk @@ -0,0 +1,92 @@ +# +# component Makefile +# + + +#======================================= +# Configurations +#======================================= + +# +# Drivers of MCU +# + +SOC_CPU_NAME = n203e + +#======================================= +# system +#======================================= +ifeq ("$(SOC)","pec930") + C_DEFS += -DCONFIG_USE_PEC930 +else +$(error "Unknown SoC !!!") +endif + +# +# cpu +# +C_DEFS += -DCONFIG_CPU_N203E -DCONFIG_HAS_BPU + +CPU_FLAGS = -mabi=ilp32e -mcmodel=medlow +CPU_FLAGS += -march=rv32emc_zba_zbb_zbs_zca_zcb_zcmp_zcmt_zicond + + +# +# Source +# +ASM_SOURCES := \ + $(srctree)/Drivers/PEC930/Device/src/Startup/startup.S \ + $(srctree)/Drivers/PEC930/Device/src/Startup/trap.S + +C_SOURCES += \ + $(srctree)/Drivers/PEC930/Device/src/interrupt.c \ + $(srctree)/Drivers/PEC930/Device/src/syscalls.c \ + $(srctree)/Drivers/PEC930/Device/src/system_dev.c + +C_INCLUDES += \ + -I$(srctree)/Drivers/PEC930/Device/inc \ + -I$(srctree)/Drivers/PEC930/NMSIS/Core/Include \ + -I$(srctree)/Drivers/PEC930/ + + + +#======================================= +# peripheral hal driver +#======================================= +C_SOURCES += \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_adc.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_amisc.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_comp.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_opamp.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_crc.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_dsp.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_flash.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_gpio.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_i2c.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_lptim.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_pwr.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_spi.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_syscfg.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_tim.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_uart.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_wdg.c \ + $(srctree)/Drivers/PEC930/HAL_Lib/src/hal_device.c + +C_INCLUDES += \ + -I$(srctree)/Drivers/PEC930/HAL_Lib/inc + +#======================================= +# BSP +#======================================= +C_SOURCES += $(srctree)/Drivers/PEC930/BSP/StarterKit/starterkit.c + +C_INCLUDES += \ + -I$(srctree)/Drivers/PEC930/BSP/StarterKit + +#======================================= +# Flags +#======================================= +CFLAGS += $(CPU_FLAGS) +CXXFLAGS += +LDFLAGS += $(CPU_FLAGS) +LIBDIR += diff --git a/Drivers/PB5700/gcc_flashxip.ld b/Drivers/PEC930/gcc_flashxip.ld similarity index 100% rename from Drivers/PB5700/gcc_flashxip.ld rename to Drivers/PEC930/gcc_flashxip.ld diff --git a/Examples/I2C/I2C_Master_EEPROM/inc/isr.h b/Examples/I2C/I2C_Master_EEPROM/inc/isr.h deleted file mode 100644 index b1ab850..0000000 --- a/Examples/I2C/I2C_Master_EEPROM/inc/isr.h +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file isr.h - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/09/16 - * @license - * @description - */ - -#ifndef __isr_H_wuraIpBA_lTJm_HvJw_sNDo_uEd5JnucTReY__ -#define __isr_H_wuraIpBA_lTJm_HvJw_sNDo_uEd5JnucTReY__ - -#ifdef __cplusplus -extern "C" { -#endif - - -//============================================================================= -// Constant Definition -//============================================================================= - -//============================================================================= -// Macro Definition -//============================================================================= - -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= - -//============================================================================= -// Public Function Definition -//============================================================================= -/** - * ISRs of Internal Interrupt of IRQC - */ -void irqc_mtip_handler(void); -void irqc_msip_handler(void); - -/** - * ISRs of External Interrupt of IRQC - */ -void irqc_uart_handler(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Examples/I2C/I2C_Master_EEPROM/src/isr.c b/Examples/I2C/I2C_Master_EEPROM/src/isr.c deleted file mode 100644 index 4cd5b57..0000000 --- a/Examples/I2C/I2C_Master_EEPROM/src/isr.c +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file isr.c - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/09/16 - * @license - * @description - */ - - -#include "main.h" -#include "isr.h" - -//============================================================================= -// Constant Definition -//============================================================================= - -//============================================================================= -// Macro Definition -//============================================================================= - -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= - -//============================================================================= -// Public Function Definition -//============================================================================= -/** - * \brief System Software ISR - * - * \return None - */ -__INTERRUPT void irqc_msip_handler(void) -{ - sys_clear_swi(); - return; -} - diff --git a/Examples/I2C/I2C_Master_EEPROM/src/main.c b/Examples/I2C/I2C_Master_EEPROM/src/main.c deleted file mode 100644 index 0f04546..0000000 --- a/Examples/I2C/I2C_Master_EEPROM/src/main.c +++ /dev/null @@ -1,401 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file main.c - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/08/29 - * @license - * @description - */ - - -#include "main.h" -#include "isr.h" -//============================================================================= -// Constant Definition -//============================================================================= -//#define ENABLE_IIC_INT -//============================================================================= -// Macro Definition -//============================================================================= -#define EEPROM_I2C_ADDRESS 0xA0 -uint32_t testFlasg = 0; -uint32_t errCounter = 0; -uint32_t delay = 0; -uint8_t i = 0; -uint8_t ReadBuffer[20], WriteBuffer[20]; -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= -void I2C_Configure(void); -void I2C_Handler(void); -void I2C_TxData_Polling(uint8_t *Buffer, uint8_t Length); -void EEPROM_WriteData(uint8_t Address, uint8_t *Buffer, uint8_t Length); -void EEPROM_WritePage(uint8_t Address, uint8_t *Buffer, uint8_t Length); -void I2C_RxData_Polling(uint8_t *Buffer, uint16_t Length); -void EEPROM_ReadData(uint8_t Address, uint8_t *Buffer, uint8_t Length); -void I2C_Send_WriteAddr(I2C_Type *i2c,uint8_t address); -void I2C_Send_ReadAddr(I2C_Type *i2c,uint8_t address); - -void EEPROM_GenerateSTART(I2C_Type *i2c, FunctionalState state); -void EEPROM_GenerateRESTART(I2C_Type *i2c, FunctionalState state); -void EEPROM_Send_WriteAddr(I2C_Type *i2c, uint8_t address); -void I2C_Send_ReadAddr(I2C_Type *i2c,uint8_t address); -void EEPROM_Send_Data(I2C_Type *i2c, uint8_t data); -void EEPROM_GenerateSTOP(I2C_Type *i2c, FunctionalState state); - - -void I2C_Master_EEPROM_Polling_Sample(void); -//============================================================================= -// Public Function Definition -//============================================================================= -int main(void) -{ - SYSCFG_ClkInitTypeDef SysClkInit = {0}; - - SysClkInit.ClkSource = SYSCFG_ClkSrc_HSI; - SYSCFG_SysClkConfig(&SysClkInit); - - sys_config_systick(SYS_TICK_1_MS); - - I2C_Master_EEPROM_Polling_Sample(); - - while(1) - { - - } - -} - -void I2C_Master_EEPROM_Polling_Sample(void) -{ - I2C_Configure(); - - for (i = 0; i < 20; i++) - { - ReadBuffer[i] = 0; - WriteBuffer[i] = i + 0x10; - } - - EEPROM_GenerateSTART(I2C,ENABLE); - EEPROM_Send_WriteAddr(I2C,0xA0); - EEPROM_Send_Data(I2C,0x00); - EEPROM_Send_Data(I2C,0x00); - - I2C_TxData_Polling((uint8_t *)WriteBuffer, 20); - EEPROM_GenerateSTOP(I2C,ENABLE); - - for(delay = 0;delay <0x1000; delay ++); - - EEPROM_GenerateSTART(I2C,ENABLE); - EEPROM_Send_WriteAddr(I2C,0xA0); - EEPROM_Send_Data(I2C,0x00); - EEPROM_Send_Data(I2C,0x00); - - EEPROM_GenerateRESTART(I2C,ENABLE); - I2C_Send_ReadAddr(I2C,0xA1); - - I2C_RxData_Polling((uint8_t *)ReadBuffer, 20); - EEPROM_GenerateSTOP(I2C,ENABLE); - - for (i = 0; i < 20; i++) - { - if(WriteBuffer[i] != ReadBuffer[i]) - { - errCounter ++; - } - } -} - -void I2C_Configure(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - I2C_InitTypeDef I2C_InitStruct; - - I2C_StructInit(&I2C_InitStruct); - I2C_InitStruct.I2C_Mode = I2C_Mode_Master; - I2C_InitStruct.I2C_OwnAddress = 0x00; - I2C_InitStruct.I2C_ClockDiv = I2C_CLK_Div960; - I2C_Init(I2C,&I2C_InitStruct); - - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_00 | GPIO_Pin_01; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStruct.GPIO_AF_Mode = GPIO_AF_3; - GPIO_Init(GPIOA, &GPIO_InitStruct); - - I2C_TargetAddressConfig(I2C,EEPROM_I2C_ADDRESS); -#ifdef ENABLE_IIC_INT - I2C_ITConfig(I2C, ENABLE); - sys_irq_attr_t irq_attr = { .trig_mode = SYS_IRQ_TRIGGER_LEVEL, }; - sys_register_IRQ(I2C0_IRQn, I2C_Handler, &irq_attr); - __enable_irq(); -# endif - I2C_Cmd(I2C, ENABLE); -} - -void EEPROM_WriteData(uint8_t Address, uint8_t *Buffer, uint8_t Length) -{ - /****************SEND_START****************/ - I2C_GenerateSTART(I2C,ENABLE); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK)) - { - - } - EEPROM_WritePage(Address, Buffer, EEPROM_PAGE_SIZE); -} - -void EEPROM_WritePage(uint8_t Address, uint8_t *Buffer, uint8_t Length) -{ - I2C_Send_WriteAddr(I2C,Address); - - I2C_TxData_Polling((uint8_t *)Buffer, Length); - - I2C_GenerateSTOP(I2C, ENABLE); - I2C_ITConfig(I2C, DISABLE); - while (!I2C_GetFlagStatus(I2C, I2C_BUS_FREE)) - { - } -} - -void I2C_TxData_Polling(uint8_t *Buffer, uint8_t Length) -{ - uint8_t i = 0; - - for (i = 0; i < Length; i++) - { - I2C_SendData(I2C, Buffer[i]); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_RESET); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_WRDATEND_ACK)); - { - - } - } -} - -void I2C_Send_WriteAddr(I2C_Type *i2c,uint8_t address) -{ - I2C_SendData(i2c, address); - REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_SI_Msk, 1 << I2C_CTLCLR_SI_Pos); - while (RESET == I2C_GetFlagStatus(i2c, I2C_MASTER_WRDEVADREND_ACK)); - { - - } -} - -void EEPROM_ReadData(uint8_t Address, uint8_t *Buffer, uint8_t Length) -{ - - - - I2C_GenerateSTART(I2C,ENABLE); - I2C_ITConfig(I2C, DISABLE); -// I2C_StaFlagConfig(I2C,I2C_STA_SET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_RESET); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_RPTSTART_ACK)) - { - - } - I2C_Send_ReadAddr(I2C,0xA1); - - I2C_RxData_Polling((uint8_t *)Buffer, Length); - - I2C_GenerateSTOP(I2C, ENABLE); - - while (!I2C_GetITStatus(I2C, I2C_BUS_FREE)) - { - } -} - -void I2C_RxData_Polling(uint8_t *Buffer, uint16_t Length) -{ - uint8_t i = 0; - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - for (i = 0; i < Length; i++) - { - REG_WRITE_MASK(I2C->CTLCLR, I2C_CTLCLR_SI_Msk, 1 << I2C_CTLCLR_SI_Pos); - while (RESET == I2C_GetFlagStatus(I2C, I2C_RXDAT_TXACK)); - { - - } - Buffer[i] = I2C_ReceiveData(I2C); - } -} - -void EEPROM_GenerateSTART(I2C_Type *i2c, FunctionalState state) -{ - I2C_GenerateSTART(I2C,ENABLE); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK)) - { - - } -} - -void EEPROM_GenerateRESTART(I2C_Type *i2c, FunctionalState state) -{ - I2C_GenerateSTART(I2C,ENABLE); - I2C_ITConfig(I2C,DISABLE ); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_RPTSTART_ACK)) - { - - } -} - -void EEPROM_Send_WriteAddr(I2C_Type *i2c, uint8_t address) -{ - I2C_Send_WriteAddr(i2c,address); - - I2C_SendData(I2C, 0x00); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_RESET); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_WRDATEND_ACK)); - { - - } -} - - -void EEPROM_Send_Data(I2C_Type *i2c, uint8_t data) -{ - I2C_SendData(i2c, data); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_RESET); - while (RESET == I2C_GetFlagStatus(I2C, I2C_MASTER_WRDATEND_ACK)); - { - - } -} -void I2C_Send_ReadAddr(I2C_Type *i2c,uint8_t address) -{ - I2C_SendData(i2c, address); - REG_WRITE_MASK(i2c->CTLCLR, I2C_CTLCLR_SI_Msk, 1 << I2C_CTLCLR_SI_Pos); - while (RESET == I2C_GetFlagStatus(i2c, I2C_MASTER_WRADR_RDCMD_ACK)); - { - - } -} - -void EEPROM_GenerateSTOP(I2C_Type *i2c, FunctionalState state) -{ - I2C_GenerateSTOP(i2c,ENABLE); - I2C_ITConfig(i2c, DISABLE); - while (RESET == I2C_GetFlagStatus(I2C, I2C_BUS_FREE)) - { - - } - -} -/**********IRQ Number 17**********/ -__INTERRUPT void I2C_Handler(void) -{ - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x01,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_RPTSTART_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_RPTSTART_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_WRDEVADREND_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_WRDEVADREND_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_WRDEVADREND_NACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_WRDEVADREND_NACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_WRDATEND_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_WRDATEND_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } - if(I2C_GetFlagStatus(I2C, I2C_MASTER_START_ACK) == 1) - { - printf("I2C_STAT = 0x02,I2C_MASTER_START_ACK Interrupt Successful!/r/n"); - } -} diff --git a/Examples/I2C/I2C_Slave_STM32/inc/isr.h b/Examples/I2C/I2C_Slave_STM32/inc/isr.h deleted file mode 100644 index b1ab850..0000000 --- a/Examples/I2C/I2C_Slave_STM32/inc/isr.h +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file isr.h - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/09/16 - * @license - * @description - */ - -#ifndef __isr_H_wuraIpBA_lTJm_HvJw_sNDo_uEd5JnucTReY__ -#define __isr_H_wuraIpBA_lTJm_HvJw_sNDo_uEd5JnucTReY__ - -#ifdef __cplusplus -extern "C" { -#endif - - -//============================================================================= -// Constant Definition -//============================================================================= - -//============================================================================= -// Macro Definition -//============================================================================= - -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= - -//============================================================================= -// Public Function Definition -//============================================================================= -/** - * ISRs of Internal Interrupt of IRQC - */ -void irqc_mtip_handler(void); -void irqc_msip_handler(void); - -/** - * ISRs of External Interrupt of IRQC - */ -void irqc_uart_handler(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Examples/I2C/I2C_Slave_STM32/readme.md b/Examples/I2C/I2C_Slave_STM32/readme.md deleted file mode 100644 index 04dfe58..0000000 --- a/Examples/I2C/I2C_Slave_STM32/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -IIC_SlaveMode_project ---- - -This example is a demo project to IIC onePulseOutput - -## Hardware and Software environment - -+ This example runs on PB5700 devices. - -## Log - -+ STM32 as the Master and PB5700 as the slave for communication - diff --git a/Examples/I2C/I2C_Slave_STM32/src/isr.c b/Examples/I2C/I2C_Slave_STM32/src/isr.c deleted file mode 100644 index 4cd5b57..0000000 --- a/Examples/I2C/I2C_Slave_STM32/src/isr.c +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file isr.c - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/09/16 - * @license - * @description - */ - - -#include "main.h" -#include "isr.h" - -//============================================================================= -// Constant Definition -//============================================================================= - -//============================================================================= -// Macro Definition -//============================================================================= - -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= - -//============================================================================= -// Public Function Definition -//============================================================================= -/** - * \brief System Software ISR - * - * \return None - */ -__INTERRUPT void irqc_msip_handler(void) -{ - sys_clear_swi(); - return; -} - diff --git a/Examples/I2C/I2C_Slave_STM32/src/main.c b/Examples/I2C/I2C_Slave_STM32/src/main.c deleted file mode 100644 index 196696b..0000000 --- a/Examples/I2C/I2C_Slave_STM32/src/main.c +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved. - */ -/** @file main.c - * - * @author Wei-Lun Hsu - * @version 0.1 - * @date 2024/08/29 - * @license - * @description - */ - - -#include "main.h" -#include "isr.h" -//============================================================================= -// Constant Definition -//============================================================================= - -//============================================================================= -// Macro Definition -//============================================================================= -#define I2C_SLAVE_ADDRESS 0x50 -uint8_t i = 0; -uint8_t ReadBuffer[100], WriteBuffer[20]; -uint8_t readCounter = 0; -uint8_t writeCounter = 0; -//============================================================================= -// Structure Definition -//============================================================================= - -//============================================================================= -// Global Data Definition -//============================================================================= - -//============================================================================= -// Private Function Definition -//============================================================================= -void I2C_Handler(void); -void I2C_Slave_Configure(void); -//============================================================================= -// Public Function Definition -//============================================================================= -int main(void) -{ - SYSCFG_ClkInitTypeDef SysClkInit = {0}; - - SysClkInit.ClkSource = SYSCFG_ClkSrc_HSI; - SYSCFG_SysClkConfig(&SysClkInit); - - sys_config_systick(SYS_TICK_1_MS); - - I2C_Slave_Configure(); - - - while(1) - { - - } - -} - -void I2C_Slave_Configure(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - I2C_InitTypeDef I2C_InitStruct; - - I2C_StructInit(&I2C_InitStruct); - I2C_InitStruct.I2C_Mode = I2C_Mode_Master; - I2C_InitStruct.I2C_OwnAddress = 0x00; - I2C_InitStruct.I2C_ClockDiv = I2C_CLK_Div960; - I2C_Init(I2C,&I2C_InitStruct); - - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_00 | GPIO_Pin_01; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; - GPIO_InitStruct.GPIO_AF_Mode = GPIO_AF_3; - GPIO_Init(GPIOA, &GPIO_InitStruct); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - I2C_TargetAddressConfig(I2C,I2C_SLAVE_ADDRESS); - I2C_ITConfig(I2C, ENABLE); - for (i = 0; i < 20; i++) - { - ReadBuffer[i] = 0; - WriteBuffer[i] = i + 0x10; - } - - sys_irq_attr_t irq_attr = { .trig_mode = SYS_IRQ_TRIGGER_LEVEL, }; - sys_register_IRQ(I2C0_IRQn, I2C_Handler, &irq_attr); - __enable_irq(); - I2C_Cmd(I2C, ENABLE); -} - -/**********IRQ Number 17**********/ -__INTERRUPT void I2C_Handler(void) -{ - switch(I2C_GetSta(I2C)) - { - case (I2C_SLAVE_WRCMD_ACK): - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - - break; - - case (I2C_SLAVE_RXADR_WRCMD_ACK): - - break; - - case (I2C_RX_BROADCASTADR_ACK): - - break; - - case (I2C_SLAVE_RXBROADCASTADR_ACK): - - break; - - case (I2C_SLAVE_RXNEXTDAT_ACK): - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - ReadBuffer[readCounter] = I2C_ReceiveData(I2C); - readCounter++; - - - break; - - case (I2C_SLAVE_RXNEXTDAT_NACK): - - break; - - case (I2C_BROADCAST_RXNEXTDAT_ACK): - - break; - - case (I2C_BROADCAST_RXNEXTDAT_NACK): - - break; - - case (I2C_SLAVE_RXSTOP_OR_RPTSTAT): - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - - break; - - case (I2C_SLAVE_RXADR_RXCMD_ACK): - I2C_SendData(I2C,WriteBuffer[writeCounter]); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - writeCounter ++; - - break; - - case (I2C_BUSLOST_SLAVE_RXADR_RXCMD_ACK): - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - - break; - - case (I2C_SLAVE_TXDAT_ACK): - I2C_SendData(I2C,WriteBuffer[writeCounter]); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - writeCounter ++; - - break; - - case (I2C_SLAVE_TXDAT_NACK): - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); - - break; - - case (I2C_SLAVE_TXLASTDAT_ACK): -// I2C_SendData(I2C,WriteBuffer[writeCounter]); - I2C_StaFlagConfig(I2C,I2C_STA_RESET,I2C_STO_RESET,I2C_SI_RESET,I2C_AA_SET); -// writeCounter ++; - - break; - - case (I2C_BUS_FREE): - break; - default: - break; - } -} diff --git a/Examples/adc/adc_conv_mode/.cproject b/Examples/adc/adc_conv_mode/.cproject index 2f90cfe..1a0019e 100644 --- a/Examples/adc/adc_conv_mode/.cproject +++ b/Examples/adc/adc_conv_mode/.cproject @@ -40,28 +40,28 @@