EVK BSP Changelog

v0.8.1 - 2023-12-08

  • Added RTOS_ENABLED preprocessor directive to evk_it.c to exclude SVC, PendSV & SysTick handlers definition.

v0.8.0 - 2023-05-31

  • Added UART4 peripheral to read/write data in interrupt mode.

  • Added configuration structure as a parameter to initializing function.

  • DAC1 can be initialized (init_exp_dac1_ch1()) for conversion on CH1 through the evk_exp_dac1_ch1_convert() function.

  • Changed the Startup file and linker script:
    • Added a linker script section (.ccmram) for specific user-defined functions relocation.

    • Added a startup file routine to relocate .ccmram section content from flash to CCMRAM.

    • Added a linker script memory section (ISRCCMRAM) for vector table relocation.

    • Added the ccmram_sections.ld file in which functions must be specified for relocation in CCMRAM.

    • Added CCMRAM vector table relocation support in SystemInit().

  • Added PRIO_TIMER_NO_IRQ configuration and evk_timer_get_count function.

  • Adjusted flash wait state configuration depending on core clock & core voltage according to latest ST RM0440 reference manual (Feb. 4th 2022).

  • Increased stack size from 2kb to 4kb to account for the fragmentation application example requirements.

  • Moved initialization functions from the main BSP file to their BSP feature file.

  • Reduced LPUART baud rate from 1152000 to 115200.

  • Renamed “stlink” and “midi” in UART function names to “SWD” and “EXP” respectively.

  • Split USB RX callback and RX function call to have flow control.

  • Updated timer handling and configurations.

  • PendSV priority now configurable through board initialization.

  • The full-duplex SPI transfer function no longer controls the chip select.

  • Removed systick_timer.

  • Removed app_timer.

  • Removed basic_ms_timer.

  • Removed free_running_us_timer.

v0.7.0 - 2022-11-30

  • Add ST-Link UART enter/exit critical functions.

  • Add ST-Link UART receive DMA stop function.

  • Add basic milliseconds timer (TIM4) with its interrupt handler, init, start & stop functions.

  • Add PRIO_APP_TIMER_IRQ_HIGH constant with priority value 1

  • Add PRIO_BASIC_MS_TIMER_IRQ constant with priority value 15

  • Add new USB initialization function (init_usb_peripheral()) in evk_init().

  • Change PRIO_APP_TIMER_IRQ from 1 to 14

  • Change UART IRQs priority from 14 to 11

  • Change USB detection IRQ priority from 14 to 12

  • Change PendSV priority from 15 to 13

  • Use in-house driver functions for ST-Link UART receive DMA function (uart_receive_dma() and uart_dma_receive_complete()) instead of ST HAL.

  • Update USB peripheral init functions.

  • Change evk_timer_app_timer_init() to select IRQ priority as an input parameter.

  • Unused constants in evk_usb.h

  • Coding style issues.

v0.6.1 - 2022-06-16

  • New evk_audio_i2c_init() function.

  • SAI frame synchronization polarity is now active-low.

  • evk_audio_sai_configuration() does not initialize I2C anymore.

  • Fixed typos and coding style.

v0.6.0 - 2022-05-27

  • Support for 20 and 24-bit audio samples.

  • Support for payload size up to 65535 bytes.

  • Added a function to set the USB_LP IRQ callback.

  • I2S is now Right justified (LSB justified), Left channel on FS High.

  • DMA alignment is now on WORDS when using 20 and 24-bit audio.

  • STM32 USB stack functions have been moved from evk_usb.c to the evk_usb_device.c files in the usb_device folder.

  • evk_usb.c only contain functions required to read the usb detect pin and enable or disable the USB_LP IRQ.

  • The USB descriptor definitions are now in the evk_usb.h file.

  • The USB_LP IRQ priority and IRQn definitions are now part of the evk_def.h file.

  • NVIC_USB_IRQ has been renamed to NVIC_USB_DET_IRQ to avoid confusion with USB_LP_IRQ.

  • Fix the double inversion logic for the DMA direction in the sai_dma_start_it function.

  • SAI TX FIFO threshold is now set to FULL.

v0.5.0 - 2022-03-03

  • Change every public function prefix from bsp_ to evk_.

  • Fixed free running timer issue while using low power functionalities.

  • Fixed disabling and enabling DMA IRQ functions which wasn’t working as intended.

v0.4.0 - 2022-02-04

  • The following functions were added in the clock module:
    • bsp_clock_set_pll_170Mhz_as_sysclk()

    • bsp_clock_set_hsi_as_sysclk()

    • bsp_clock_set_hsi_as_sysclk_protected()

    • bsp_clock_init_rtc_for_wakeup()

    • bsp_clock_start_rtc_for_wakeup()

  • The following function was added in the power module:
    • bsp_power_shutdown_and_wake_up()

  • The following functions were added in the audio module:
    • bsp_audio_i2c_write_byte_blocking()

    • bsp_audio_i2c_read_byte_blocking()

    • bsp_audio_sai_configuration()

    • bsp_audio_sai_write_non_blocking()

    • bsp_audio_sai_read_non_blocking()

    • bsp_audio_sai_stop_write_non_blocking()

    • bsp_audio_sai_stop_read_non_blocking()

    • bsp_expansion_sai_start_write_non_blocking()

    • bsp_expansion_sai_start_read_non_blocking()

    • bsp_expansion_set_sai_tx_dma_cplt_callback()

    • bsp_expansion_set_sai_rx_dma_cplt_callback()

    • bsp_radio_enable_dma_irq_it()

    • bsp_radio_disable_dma_irq_it()

  • #defines for interrupt priorities in bsp_def.h were renamed to match our internal naming convention.

  • #defines for DMA_Channelx_IRQn were abstracted with peripherals #defines in bsp_def.h.

  • NVIC_SetPriority and NVIC_EnableIRQ now uses the defines in bsp_def.h, thus making future changes easier and centralized.

  • #defines in bsp_def.h were reordered.

  • Some typedefs were moved from bsp_def.h to bsp_audio.h.

  • DMA1 and DMA2 initialization is now centralized in bsp.c.

  • GPIO clock enabling has been centralized in bsp.c.

  • The return type of some USB functions was changed from uwb_err to uint8_t.

  • bsp_radio_spi_transfer_full_duplex_blocking() does not use the DMA anymore.

  • bsp_audio.h is now included by bsp.h, the public BSP API.

  • The following functions were removed from the audio module:
    • bsp_audio_init()

    • bsp_audio_deinit()

    • bsp_audio_playback_start()

    • bsp_audio_record_start()

    • bsp_audio_playback_stop()

    • bsp_audio_record_stop()

    • bsp_audio_i2c_write()

    • bsp_audio_i2c_read()

    • bsp_audio_sai_write()

    • bsp_audio_sai_read()

    • bsp_audio_set_playback_channel()

    • bsp_audio_set_record_channel()

    • bsp_audio_set_sampling_rate()

    • bsp_audio_set_rx_callback()

    • bsp_audio_set_tx_callback()

    • bsp_audio_set_error_callback()

    • bsp_audio_config1()

    • bsp_audio_config2()

    • bsp_audio_config3()

  • Some unused includes were removed from bsp_def.h.

  • Free running timer that wasn’t providing a 4 kHz tick if system clock was not set to 163.84 MHz.

v0.3.0 - 2021-12-13

  • Raise STM32 HAL tick interrupt priority one level (from 0x0f to 0x0e) to make it higher priority than the PendSV interrupt which is at 0x0f. This enables calling HAL delay functions inside the PendSV ISR.

  • Functions bsp_audio_sai_read() and bsp_audio_sai_write() size argument is now in bytes instead of in samples.

  • Function bsp_audio_playback_start() now calls audio_tx_callback() instead of sending dummy bytes on the I2S bus.

v0.2.0 - 2021-11-09

  • STM32 I2S controller role from master to slave.

  • STM32 system clock frequency from 164 MHz to 170 MHz.

  • C++ inclusion directives.

  • Wrong call to STM32 HAL RCC when initializing TIM3 timer.

v0.1.0 - 2021-09-30

Initial release.