* Add failing test * Fix enabled interrupt * Fix using the correct waker * Changelog * Enable test on more devices that have SPI3
35 KiB
35 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Implement
embedded-haloutput pin traits forDummyPin(#2019) - Added
esp_hal::initto simplify HAL initialisation (#1970)
Changed
Fixed
- Fixed an issue with DMA transfers potentially not waking up the correct async task (#2065)
Removed
0.20.1 - 2024-08-30
Fixed
- A build issue when including doc comment prelude (#2040)
0.20.0 - 2024-08-29
Added
- Introduce DMA buffer objects (#1856, #1985)
- Added new
Io::new_no_bind_interruptconstructor (#1861) - Added touch pad support for esp32 (#1873, #1956)
- Allow configuration of period updating method for MCPWM timers (#1898)
- Add self-testing mode for TWAI peripheral. (#1929)
- Added a
PeripheralClockControl::resetto the driver constructors where missing (#1893) - Added
digest::Digestimplementation to SHA (#1908) - Added
debugger::debugger_connected. (#1961) - DMA: don't require
Sealedto implementReadBufferandWriteBuffer(#1921) - Allow DMA to/from psram for esp32s3 (#1827)
- Added missing methods to
SpiDmaBus(#2016). - PARL_IO use ReadBuffer and WriteBuffer for Async DMA (#1996)
Changed
- Peripheral driver constructors don't take
InterruptHandlers anymore. Useset_interrupt_handlerto explicitly set the interrupt handler now. (#1819) - Migrate SPI driver to use DMA buffer objects (#1856, #1985)
- Use the peripheral ref pattern for
OneShotTimerandPeriodicTimer(#1855) - Improve SYSTIMER API (#1871)
- SHA driver now use specific structs for the hashing algorithm instead of a parameter. (#1908)
- Remove
fn free(self)in HMAC which goes against esp-hal API guidelines (#1972) AnyPin,AnyInputOnyPinandDummyPinare now accessible fromgpiomodule (#1918)- Changed the RSA modular multiplication API to be consistent across devices (#2002)
Fixed
- Improve error detection in the I2C driver (#1847)
- Fix I2S async-tx (#1833)
- Fix PARL_IO async-rx (#1851)
- SPI: Clear DMA interrupts before (not after) DMA starts (#1859)
- SPI: disable and re-enable MISO and MOSI in
start_transfer_dma,start_read_bytes_dmaandstart_write_bytes_dmaaccordingly (#1894) - TWAI: GPIO pins are not configured as input and output (#1906)
- ESP32C6: Make ADC usable after TRNG deinicialization (#1945)
- We should no longer generate 1GB .elf files for ESP32C2 and ESP32C3 (#1962)
- Reset peripherals in driver constructors where missing (#1893, #1961)
- Fixed ESP32-S2 systimer interrupts (#1979)
- Software interrupt 3 is no longer available when it is required by
esp-hal-embassy. (#2011) - ESP32: Fixed async RSA (#2002)
Removed
- This package no longer re-exports the
esp_hal_procmacros::mainmacro (#1828) - The
AesFlavourtrait no longer has theENCRYPT_MODE/DECRYPT_MODEassociated constants (#1849) - Removed
FlashSafeDma(#1856) - Remove redundant WithDmaSpi traits (#1975)
IsFullDuplexandIsHalfDuplextraits (#1985)
0.19.0 - 2024-07-15
Added
- uart: Added
with_cts/with_rtss methods to configure CTS, and RTS pins (#1592) - uart: Constructors now require TX and RX pins (#1592)
- uart: Added
Uart::new_with_default_pinsconstructor (#1592) - uart: Added
UartTxandUartRxconstructors (#1592) - Add Flex / AnyFlex GPIO pin driver (#1659)
- Add new
DmaError::UnsupportedMemoryRegion- used memory regions are checked when preparing a transfer now (#1670) - Add DmaTransactionTxOwned, DmaTransactionRxOwned, DmaTransactionTxRxOwned, functions to do owning transfers added to SPI half-duplex (#1672)
- uart: Implement
embedded_io::ReadReadyforUartandUartRx(#1702) - ESP32-S3: Expose optional HSYNC input in LCD_CAM (#1707)
- ESP32-S3: Add async support to the LCD_CAM I8080 driver (#1834)
- ESP32-C6: Support lp-core as wake-up source (#1723)
- Add support for GPIO wake-up source (#1724)
- gpio: add DummyPin (#1769)
- dma: add Mem2Mem to support memory to memory transfer (#1738)
- Add
uartwake source (#1727) #[ram(persistent)]option to replace the unsounduninitializedoption (#1677)- uart: Make
rx_timeoutoptional in Config struct (#1759) - Add interrupt related functions to
PeriodicTimer/OneShotTimer, addedErasedTimer(#1753) - Added blocking
read_bytesmethod toUartandUartRx(#1784) - Add method to expose
InputPin::is_interrupt_setinInput<InputPin>for use in interrupt handlers (#1829)
Fixed
- ESP32-S3: Fix DMA waiting check in LCD_CAM (#1707)
- TIMG: Fix interrupt handler setup (#1714)
- Fix
sleep_lightfor ESP32-C6 (#1720) - ROM Functions: Fix address of
ets_update_cpu_frequency_rom(#1722) - Fix
regi2c_*functions foresp32h2(#1737) - Improved
#[ram(zeroed)]soundness by adding abytemuck::Zeroabletype bound (#1677) - EESP32-S2 / ESP32-S3: Fix UsbDm and UsbDp for Gpio19 and Gpio20
- Fix reading/writing small buffers via SPI master async dma (#1760)
- Remove unnecessary delay in rtc_ctnl (#1794)
Changed
- Refactor
Dac1/Dac2drivers into a singleDacdriver (#1661) - esp-hal-embassy: make executor code optional (but default) again
- Improved interrupt latency on RISC-V based chips (#1679)
esp_wifi::initializeno longer requires running maximum CPU clock, instead check it runs above 80MHz. (#1688)- Move DMA descriptors from DMA Channel to each individual peripheral driver. (#1719)
- Allow users to easily name DMA channels (#1770)
- Support DMA chunk sizes other than the default 4092 (#1758)
- Improved interrupt latency on Xtensa based chips (#1735)
- Improve PCNT api (#1765)
Removed
- uart: Removed
configure_pinsmethods (#1592) - Removed
DmaError::Exhaustederror by improving the implementation of thepopfunction (#1664) - Unsound
#[ram(uninitialized)]option in favor of the newpersistentoption (#1677)
0.18.0 - 2024-06-04
Added
- i2c: implement
I2C:transactionforembedded-halandembedded-hal-async(#1505) - spi: implement
with_bit_order(#1537) - ESP32-PICO-V3-02: Initial support (#1155)
time::current_timeAPI (#1503)- ESP32-S3: Add LCD_CAM Camera driver (#1483)
embassy-usbsupport (#1517)- SPI Slave support for ESP32-S2 (#1562)
- Add new generic
OneShotTimerandPeriodicTimerdrivers, plus newTimertrait which is implemented forTIMGxandSYSTIMER(#1570) - Feature: correct
TRNGmechanism #1804
Fixed
- i2c: i2c1_handler used I2C0 register block by mistake (#1487)
- Removed ESP32 specific code for resolutions > 16 bit in ledc embedded_hal::pwm max_duty_cycle function. (#1441)
- Fixed division by zero in ledc embedded_hal::pwm set_duty_cycle function and converted to set_duty_hw instead of set_duty to eliminate loss of granularity. (#1441)
- Embassy examples now build on stable (#1485)
- Fix delay on esp32h2 (#1535)
- spi: fix dma wrong mode when using eh1 blocking api (#1541)
- uart: make
uart::UartRx::read_bytepublic (#1547) - Fix async serial-usb-jtag (#1561)
- Feeding
RWDTnow actually works (#1645)
Changed
- Removed unneeded generic parameters on
Usb(#1469) - Created virtual peripherals for CPU control and radio clocks, rather than splitting them from
SYSTEM(#1428) IO,ADC,DAC,RTC*,LEDC,PWMandPCNTdrivers have been converted to camel case format (#1473)- RNG is no longer TRNG, the
CryptoRngimplementation has been removed. To track this being re-added see #1499 (#1498) - Make software interrupts shareable (#1500)
- The
SystemPartsstruct has been renamed toSystemControl, and now has a constructor which takes theSYSTEMperipheral (#1495) - Timer abstraction: refactor
systimerandtimermodules into a commontimermodule (#1527) - Removed the
embassy-executor-threadandembassy-executor-interruptfeatures, they are now enabled by default whenembassyis enabled. (#1485) - Software interrupt 3 is now used instead of software interrupt 0 on the thread aware executor on multicore systems (#1485)
- Timer abstraction: refactor
systimerandtimermodules into a commontimermodule (#1527) - Refactoring of GPIO module, have drivers for Input,Output,OutputOpenDrain, all drivers setup their GPIOs correctly (#1542)
- DMA transactions are now found in the
dmamodule (#1550) - Remove unnecessary generics from PARL_IO driver (#1545)
- Use
Level enumin GPIO constructors instead of plain bools (#1574) - rmt: make ChannelCreator public (#1597)
Removed
- Removed the
SystemExttrait (#1495) - Removed the
GpioExttrait (#1496) - Embassy support (and all related features) has been removed, now available in the
esp-hal-embassypackage instead (#1595)
0.17.0 - 2024-04-18
Added
- Add
ADC::read_blockingto xtensa chips (#1293) - ESP32-C6 / ESP32-H2: Implement
ETMfor general purpose timers (#1274) interrupt::enablenow has a direct CPU enable counter part,interrupt::enable_direct(#1310)Delay::delay(time: fugit::MicrosDurationU64)- Added async support for TWAI (#1320)
- Add TWAI support for ESP32-C6 (#1323)
GpioPin::stealunsafe API (#1363)- Inherent implementions of GPIO pin
set_low,is_low, etc. - Warn users when attempting to build using the
devprofile (#1420) - Async uart now reports interrupt errors(overflow, glitch, frame error, parity) back to user of read/write. uart clock decimal part configured for c2,c3,s3 (#1168, #1445)
- Add mechanism to configure UART source clock (#1416)
GpioPingot a functionset_state(bool)(#1462)- Add definitions of external USB PHY peripheral I/O signals
- Expose e-hal ErrorKind::NoAcknowledge in I2C driver (#1454)
- Add remaining peripheral signals for LCD_CAM (#1466)
Fixed
- Reserve
esp32ROM stacks to prevent the trashing of dram2 section (#1289) - Fixing
esp-wifi+TRNGissue onESP32-S2(#1272) - Fixed core1 startup using the wrong stack on the esp32 and esp32s3 (#1286).
- ESP32: Apply fix for Errata 3.6 in all the places necessary. (#1315)
- ESP32 & ESP32-S2: Fix I²C frequency (#1306)
- UART's TX/RX FIFOs are now cleared during initialization (#1344)
- Fixed
LCD_CAM I8080driver potentially sending garbage to display (#1301) - The TWAI driver can now be used without requiring the
embedded-haltraits (#1355) - USB pullup/pulldown now gets properly cleared and does not interfere anymore on esp32c3 and esp32s3 (#1244)
- Fixed GPIO counts so that using async code with the higher GPIO number should no longer panic (#1361, #1362)
- ESP32/ESP32-S2: Wait for I2S getting out of TX_IDLE when starting a transfer (#1375)
- Fixed writes to SPI not flushing before attempting to write, causing corrupted writes (#1381)
- fix AdcConfig::adc_calibrate for xtensa targets (#1379)
- Fixed a divide by zero panic when setting the LEDC duty cycle to 0 with
SetDutyCycle::set_duty_cycle(#1403) - Support 192 and 256-bit keys for AES (#1316)
- Fixed MCPWM DeadTimeCfg bit values (#1378)
- ESP32 LEDC
set_duty_cycleused HighSpeedChannel for LowSpeedChannel (#1457)
Changed
- TIMG: Allow use without the embedded-hal-02 traits in scope (#1367)
- DMA: use channel clusters
- Remove
Ext32andRateExtU64from prelude - Prefer mutable references over moving for DMA transactions (#1238)
- Support runtime interrupt binding, adapt GPIO driver (#1231)
- Renamed
eh1feature toembedded-hal, feature-gatedembedded-hal@0.2.xtrait implementations (#1273) - Enable
embedded-halfeature by default, instead of theembedded-hal-02feature (#1313) Uartstructs now take aModeparameter which defines how the driver is initialized (#1294)Rmtcan be created in async or blocking mode. The blocking constructor takes an optional interrupt handler argument. (#1341)- All
Instancetraits are now sealed, and can no longer be implemented for arbitrary types (#1346) - DMA channels can/have to be explicitly created for async or blocking drivers, added
set_interrupt_handlerto DMA channels, SPI, I2S, PARL_IO, don't enable interrupts on startup for DMA, I2S, PARL_IO, GPIO (#1300) - UART: Rework
change_baudso it is possible to set baud rate even after instantiation (#1350) - Runtime ISR binding for SHA,ECC and RSA (#1354)
- Runtime ISR binding for I2C (#1376)
UsbSerialJtagcan be created in async or blocking mode. The blocking constructor takes an optional interrupt handler argument (#1377)- SYSTIMER and TIMG instances can now be created in async or blocking mode (#1348)
- Runtime ISR binding for TWAI (#1384)
- ESP32-C6: The
gpio::lp_gpiomodule has been renamed togpio::lp_ioto match the peripheral name (#1397) - Runtime ISR binding for assist_debug (#1395)
- Runtime ISR binding for software interrupts, software interrupts are split now, interrupt-executor takes the software interrupt to use, interrupt-executor is easier to use (#1398)
- PCNT: Runtime ISR binding (#1396)
- Runtime ISR binding for RTC (#1405)
- Improve MCPWM DeadTimeCfg API (#1378)
SystemTimer'sAlarmmethods now require&mut self(#1455)
Removed
- Remove package-level type exports (#1275)
- Removed
direct-vectoring&interrupt-preemptionfeatures, as they are now enabled by default (#1310) - Removed the
rtandvectoredfeatures (#1380) - Remove partial support for the ESP32-P4 (#1461)
0.16.1 - 2024-03-12
- Resolved an issue with the
defmtdependency/feature (#1264)
Changed
- Use ROM
memcpyover compiler builtins (#1255) - Do not ensure randomness or implement the
CryptoRngtrait for ESP32-P4/S2 (#1267)
0.16.0 - 2024-03-08
Added
- Add initial support for the ESP32-P4 (#1101)
- Implement
embedded_hal::pwm::SetDutyCycletrait forledc::channel::Channel(#1097) - ESP32-P4: Add initial GPIO support (#1109)
- ESP32-P4: Add initial support for interrupts (#1112)
- ESP32-P4: Add efuse reading support (#1114)
- ESP32-S3: Added LCD_CAM I8080 driver (#1086)
- Allow for splitting of the USB Serial JTAG peripheral into tx/rx components (#1024)
RngCoretrait is implemented (#1122)- Support Rust's
stack-protectorfeature (#1135) - Adding clock support for
ESP32-P4(#1145) - Implementation OutputPin and InputPin for AnyPin (#1067)
- Implement
estimate_xtal_frequencyfor ESP32-C6 / ESP32-H2 (#1174) - A way to push into I2S DMA buffer via a closure (#1189)
- Added basic
LP-I2Cdriver for C6 (#1185) - Ensuring that the random number generator is TRNG. (#1200)
- ESP32-C6: Add timer wakeup source for deepsleep (#1201)
- Introduce
InterruptExecutor::spawner()(#1211) - Add
InterruptHandlerstruct, which couples interrupt handlers and their priority together (#1299)
Fixed
- Fix embassy-time tick rate not set when using systick as the embassy timebase (#1124)
- Fix
get_raw_coreon Xtensa (#1126) - Fix docs.rs documentation builds (#1129)
- Fix circular DMA (#1144)
- Fix
hello_rgbexample for ESP32 (#1173) - Fixed the multicore critical section on Xtensa (#1175)
- Fix timer
nowfor esp32c3 and esp32c6 (#1178) - Wait for registers to get synced before reading the timer count for all chips (#1183)
- Fix I2C error handling (#1184)
- Fix circular DMA (#1189)
- Fix esp32c3 uart initialization (#1156)
- Fix ESP32-S2 I2C read (#1214)
- Reset/init UART if it's not the console UART (#1213)
Changed
- DmaDescriptor struct to better model the hardware (#1054)
- DMA descriptor count no longer needs to be multiplied by 3 (#1054)
- RMT channels no longer take the channel number as a generic param (#959)
- The
esp-hal-commonpackage is now calledesp-hal(#1131) - Refactor the
Tracedriver to be generic around its peripheral (#1140) - Auto detect crystal frequency based on
RtcClock::estimate_xtal_frequency()(#1165) - ESP32-S3: Configure 32k ICACHE (#1169)
- Lift the minimal buffer size requirement for I2S (#1189)
- Replaced
SystemTimer::TICKS_PER_SECwithSystemTimer::ticks_per_sec()(#1981)
Removed
- Remove
xtal-26mhzandxtal-40mhzfeatures (#1165) - All chip-specific HAL packages have been removed (#1196)
Breaking
ADCandDACdrivers now take virtual peripherals in their constructors, instead of splittingAPB_SARADC/SENS(#1100)- The
DACdriver's constructor is nownewinstead ofdac, to be more consistent with other APIs (#1100) - The DMA peripheral is now called
Dmafor devices with both PDMA and GDMA controllers (#1125) - The
ADCdriver's constructor is nownewinstead ofadc, to be more consistent with other APIs (#1133) embassy-executor'sintegrated-timersis no longer enabled by default.- Renamed
embassy-time-systicktoembassy-time-systick-16mhzfor use with all chips with a systimer, exceptesp32s2. Addedembassy-time-systick-80mhzspecifically for theesp32s2. (#1247)
0.15.0 - 2024-01-19
Added
- ESP32-C6: Properly initialize PMU (#974)
- Implement overriding base mac address (#1044)
- Add
rt-riscvandrt-xtensafeatures to enable/disable runtime support (#1057) - ESP32-C6: Implement deep sleep (#918)
- Add
embedded-iofeature to each chip-specific HAL (#1072) - Add
embassy-time-drivertoesp-hal-commondue to updatingembassy-timetov0.3.0(#1075) - ESP32-S3: Added support for 80Mhz PSRAM (#1069)
- ESP32-C3/S3: Add workaround for USB pin exchange on usb-serial-jtag (#1104).
- ESP32C6: Added LP_UART initialization (#1113)
- Add
place-spi-driver-in-ramfeature toesp-hal-common(#1096)
Changed
- Set up interrupts for the DMA and async enabled peripherals only when
asyncfeature is provided (#1042) - Update to
1.0.0releases of theembedded-hal-*packages (#1068) - Update
embassy-timeto0.3.0and embassy-executor to0.5.0release due to the release of theembedded-hal-*packages (#1075) - No longer depend on
embassy-time(#1092) - Update to latest
smart-leds-traitandsmart-ledspackages (#1094)
Fixed
- ESP32: correct gpio 32/33 in errata36() (#1053)
- ESP32: make gpio 4 usable as analog pin (#1078)
- Fix double &mut for the
SetDutyCycleimpl onPwmPin(#1033) - ESP32/ESP32-S3: Fix stack-top calculation for app-core (#1081)
- ESP32/ESP32-S2/ESP32-S3: Fix embassy-time-timg0 driver (#1091)
- ESP32: ADC readings are no longer inverted (#1093)
Removed
Breaking
- Unify the low-power peripheral names (
RTC_CNTLandLP_CLKRSTtoLPWR) (#1064)
0.14.1 - 2023-12-13
Fixed
- Fix SHA for all targets (#1021)
0.14.0 - 2023-12-12
Added
- ESP32-C6: LP core clock is configurable (#907)
- Derive
CloneandCopyforEspTwaiFrame(#914) - A way to configure inverted pins (#912)
- Added API to check a GPIO-pin's interrupt status bit (#929)
- A
embedded_io_async::Readimplementation forUsbSerialJtag(#889) RtcClock::get_xtal_freq,RtcClock::get_slow_freq(#957)- Added Rx Timeout functionality to async Uart (#911)
- RISC-V: Thread-mode and interrupt-mode executors,
#[main]macro (#947) - A macro to make it easier to create DMA buffers and descriptors (#935)
- I2C timeout is configurable (#1011)
- ESP32-C6/ESP32-H2:
flip-linkfeature gives zero-cost stack overflow protection (#1008)
Changed
- Improve DMA documentation & clean up module (#915)
- Only allow a single version of
esp-hal-commonto be present in an application (#934) - ESP32-C3/C6 and ESP32-H2 can now use the
zero-rtc-bssfeature to enableesp-hal-common/rv-zero-rtc-bss(#867) - Reuse
ieee802154_clock_enable/disable()functions for BLE and renameble_ieee802154_clock_enable()(#953) - The
embedded-iotrait implementations are now gated behind theembedded-iofeature (#964) - Simplifed RMT channels and channel creators (#958)
- Reworked construction of I2S driver instances (#983)
- ESP32-S2/S3: Don't require GPIO 18 to create a USB peripheral driver instance (#990)
- Updated to latest release candidate (
1.0.0-rc.2) forembedded-hal{-async,-nb}(#994) - Explicit panic when hitting the
DefaultHandler(#1005) - Relevant interrupts are now auto enabled in
embassy::init(#1014).
Fixed
- ESP32-C2/C3 examples: fix build error (#899)
- ESP32-S3: Fix GPIO interrupt handler crashing when using GPIO48. (#898)
- Fixed short wait times in embassy causing hangs (#906)
- Make sure to clear LP/RTC RAM before loading code (#916)
- Async RMT channels can be used concurrently (#925)
- Xtensa: Allow using
embassy-executor's thread-mode executor if neitherembassy-executor-thread, norembassy-executor-interruptis enabled. (#937) - Uart Async: Improve interrupt handling and irq <--> future communication (#977)
- RISC-V: Fix stack allocation (#988)
- ESP32-C6: Fix used RAM (#997)
- ESP32-H2: Fix used RAM (#1003)
- Fix SPI slave DMA dma_read and dma_write (#1013)
- ESP32-C6/H2: Fix disabling of interrupts (#1040)
Removed
- Direct boot support has been removed (#903).
- Removed the
mcu-bootfeature fromesp32c3-hal(#938) - Removed SpiBusController and SpiBusDevice in favour of embedded-hal-bus and embassy-embedded-hal implementataions. (#978)
Breaking
Spi::new/Spi::new_half_duplextakes no gpio pin now, instead you need to callwith_pinsto setup those (#901).- ESP32-C2, ESP32-C3, ESP32-S2: atomic emulation trap has been removed. (#904) (#985)
- When upgrading you must either remove these lines from your
.cargo/config.toml. - Usage of
core::sync::atomic::*in dependent crates should be replaced with portable-atomic.
- When upgrading you must either remove these lines from your
- RSA driver now takes
u32words instead ofu8bytes. The expected slice length is now 4 times shorter. (#981)
0.13.1 - 2023-11-02
Fixed
- ESP32-C3: Make sure BLE and WiFi are not powered down when esp-wifi needs them (#891)
- ESP32-C6/H2: Fix setting UART baud rate (#893)
0.13.0 - 2023-10-31
Added
- Implement SetFrequencyCycle and PwmPin from embedded_hal for PwmPin of MCPWM. (#880)
- Added
embassy-time-systickto ESP32-S2 (#827) - Implement enabling/disabling BLE clock on ESP32-C6 (#784)
- Async support for RMT (#787)
- Implement
defmt::Formatfor more types (#786) - Add new_no_miso to Spi FullDuplexMode (#794)
- Add UART support for splitting into TX and RX (#754)
- Async support for I2S (#801)
- Async support for PARL_IO (#807)
- ETM driver, GPIO ETM (#819)
- (G)DMA AES support (#821)
- SYSTIMER ETM functionality (#828)
- Adding async support for RSA peripheral(doesn't work properly for
esp32chip - issue will be created)(#790) - Added sleep support for ESP32-C3 with timer and GPIO wakeups (#795)
- Support for ULP-RISCV including Delay and GPIO (#840, #845)
- Add bare-bones SPI slave support, DMA only (#580, #843)
- Embassy
#[main]convenience macro (#841) - Add a
defmtfeature to theesp-hal-smartledpackage (#846) - Support 16MB octal PS-RAM for ESP32-S3 (#858)
- RISCV TRACE Encoder driver for ESP32-C6 / ESP32-H2 (#864)
embedded_hal1InputPinandembedded_hal_asyncWaitimpls for open drain outputs (#905)
Changed
- Bumped MSRV to 1.67 (#798)
- Optimised multi-core critical section implementation (#797)
- Changed linear- and curve-calibrated ADC to provide readings in mV (#836)
Fixed
- S3: Allow powering down RC_FAST_CLK (#796)
- UART/ESP32: fix calculating FIFO counter with
get_rx_fifo_count()(#804) - Xtensa targets: Use ESP32Reset - not Reset (#823)
- Examples should now work with the
defmtfeature (#810) - Fixed a race condition causing SpiDma to stop working unexpectedly (#869)
- Fixed async uart serial, and updated the embassy_serial examples (#871).
- Fix ESP32-S3 direct-boot (#873)
- Fix ESP32-C6 ADC (#876)
- Fix ADC Calibration not being used on ESP32-S2 and ESP32-S3 (#1000)
Removed
Pin::is_pcore_interrupt_set(#793)Pin::is_pcore_non_maskable_interrupt_set(#793)Pin::is_acore_interrupt_set(#793)Pin::is_acore_non_maskable_interrupt_set(#793)Pin::enable_hold(#793)- Removed the generic return type for ADC reads (#792)
Breaking
Uart::newnow takes the&Clocksstruct to ensure baudrate is correct for CPU/APB speed. (#808)Uart::new_with_configtakes anConfiginstead ofOption<Config>. (#808)Alarm::set_periodtakes a period (duration) instead of a frequency (#812)Alarm::interrupt_clearis nowAlarm::clear_interruptto be consistent (#812)- The
PeripheralClockControlstruct is no longer public, drivers no longer take this as a parameter (#817) - Unify the system peripheral,
SYSTEM,DPORTandPCRare now all exposed asSYSTEM(#832). - Unified the ESP32's and ESP32-C2's xtal frequency features (#831)
- Replace any underscores in feature names with dashes (#833)
- The
spiandspi_slavemodules have been refactored into thespi,spi::master, andspi::slavemodules (#843) - The
WithDmaSpi2/WithDmaSpi3structs are no longer generic around the inner peripheral type (#853) - The
SarAdcExt/SensExttraits are now collectively namedAnalogExtinstead (#857) - Replace the
radiomodule with peripheral singleton structs (#852) - The SPI traits are no longer re-exported in the main prelude, but from preludes in
spi::master/spi::slaveinstead (#860) - The
embedded-hal-1andembedded-hal-asynctraits are no longer re-exported in the prelude (#860)
0.12.0 - 2023-09-05
Added
- Implement RTCIO pullup, pulldown and hold control for Xtensa MCUs (#684)
- S3: Implement RTCIO wakeup source (#690)
- Add PARL_IO driver for ESP32-C6 / ESP32-H2 (#733, #760)
- Implement
ufmt_write::uWritetrait for USB Serial JTAG (#751) - Add HMAC peripheral support (#755)
- Add multicore-aware embassy executor for Xtensa MCUs (#723, #756).
- Add interrupt-executor for Xtensa MCUs (#723, #756).
- Add missing
Into<Gpio<Analog, GPIONUN>>conversion (#764) - Updated
clockmodule documentation (#774) - Add
logfeature to enable log output (#773) - Add
defmtfeature to enable log output (#773) - A new macro to load LP core code on ESP32-C6 (#779)
- Add `ECC`` peripheral driver (#785)
- Initial LLD support for Xtensa chips (#861).
Changed
- Update the
embedded-hal-*packages to1.0.0-rc.1and implement traits fromembedded-ioandembedded-io-async(#747) - Moved AlignmentHelper to its own module (#753)
- Disable all watchdog timers by default at startup (#763)
logcrate is now opt-in (#773)
Fixed
- Fix
psramavailability lookup inesp-hal-commonbuild script (#718) - Fix wrong
dram_seglength inesp32s2-hallinker script (#732) - Fix setting alarm when a timer group is used as the alarm source. (#730)
- Fix
Instant::now()not counting in some cases when using TIMG0 as the timebase (#737) - Fix number of ADC attenuations for ESP32-C6 (#771)
- Fix SHA registers access (#805)
Breaking
CpuControl::start_app_core()now takes anFnOnceclosure (#739)
0.11.0 - 2023-08-10
Added
- Add initial LP-IO support for ESP32-C6 (#639)
- Implement sleep with some wakeup methods for
esp32(#574) - Add a new RMT driver (#653, #667, #695)
- Implemented calibrated ADC API for ESP32-S3 (#641)
- Add MCPWM DeadTime configuration (#406)
- Implement sleep with some wakeup methods for
esp32-s3(#660, #689, #696) - Add feature enabling directly hooking the interrupt vector table (#621)
- Add
ClockControl::maxhelper for all chips (#701) - Added module-level documentation for all peripherals (#680)
- Implement sleep with some wakeup methods for
esp32-s3(#660) - Add
FlashSafeDmawrapper for eh traits which ensure correct DMA transfer from source data in flash (ROM) (#678)
Changed
- Update
embedded-hal-*alpha packages to their latest versions (#640) - Implement the
CloneandCopytraits for theRngdriver (#650) - Use all remaining memory as core-0's stack (#716)
Fixed
- Fixed Async Uart
readwhenset_at_cmdis not used (#652) - USB device support is working again (#656)
- Add missing interrupt status read for esp32s3, which fixes USB-SERIAL-JTAG interrupts (#664)
- GPIO interrupt status bits are now properly cleared (#670)
- Increase frequency resolution in
set_periodic(#686) - Fixed ESP32-S2, ESP32-S3, ESP32-C2, ESP32-C3 radio clock gating (#679, #681)
- Partially fix ESP32 radio clocks (#709)
- Fixed "ESP32/ESP32-S2 RMT transmission with with data.len() > RMT_CHANNEL_RAM_SIZE results in TransmissionError" #707 (#710)
Removed
- Remove the
allow-opt-level-zfeature fromesp32c3-hal(#654) - Remove the old
pulse_controldriver (#694)
Breaking
DmaTransfer::waitandI2sReadDmaTransfer::wait_receivenow returnResult(#665)gpio::Pinis now object-safe (#687)
0.10.0 - 2023-06-04
Added
- Add
WithDmaSpi3to prelude for ESP32S3 (#623) - Add bare-bones PSRAM support for ESP32 (#506)
- Add initial support for the ESP32-H2 (#513, #526, #527, #528, #530, #538, #544, #548, #551, #556, #560, #566, #549, #564, #569, #576, #577, #589, #591, #597)
- Add bare-bones PSRAM support for ESP32-S3 (#517)
- Add async support to the I2C driver (#519)
- Implement Copy and Eq for EspTwaiError (#540)
- Add LEDC hardware fade support (#475)
- Added support for multicore async GPIO (#542)
- Add a fn to poll DMA transfers (#559)
- Add unified field-based efuse access (#567)
- Move
esp-riscv-rtinto esp-hal (#578) - Add CRC functions from ESP ROM (#587)
- Add a
debugfeature to enable the PACs'impl-register-debugfeature (#596) - Add initial support for
I2Sin ESP32-H2 (#597) - Add octal PSRAM support for ESP32-S3 (#610)
- Add MD5 functions from ESP ROM (#618)
- Add embassy async
readsupport foruart(#620) - Add bare-bones support to run code on ULP-RISCV / LP core (#631)
- Add ADC calibration implementation for a riscv chips (#555)
- Add
asyncimplementation forUSB Serial/JTAG(#632)
Changed
- Simplify the
Delaydriver, deriveCloneandCopy(#568) - DMA types can no longer be constructed by the user (#625)
- Move core interrupt handling from Flash to RAM for RISC-V chips (ESP32-H2, ESP32-C2, ESP32-C3, ESP32-C6) (#541)
- Change LED pin to GPIO2 in ESP32 blinky example (#581)
- Update ESP32-H2 and ESP32-C6 clocks and remove
i2c_clockfor all chips but ESP32 (#592) - Use both timers in
TIMG0for embassy time driver when able (#609) - Re-work
RadioExtimplementations, add support for ESP32-H2 (#627) - Improve examples documentation (#533)
- esp32h2-hal: added README (#585)
- Update
esp-hal-procmacrospackage dependencies and features (#628)
Fixed
- Corrected the expected DMA descriptor counts (#622, #625)
- DMA is supported for SPI3 on ESP32-S3 (#507)
change_bus_frequencyis now available onSpiDma(#529)- Fixed a bug where a GPIO interrupt could erroneously fire again causing the next
awaiton that pin to instantly returnPoll::Ok(#537) - Set
vecbaseon core 1 (ESP32, ESP32-S3) (#536) - ESP32-S3: Move PSRAM related function to RAM (#546)
- ADC driver will now apply attenuation values to the correct ADC's channels. (#554)
- Sometimes half-duplex non-DMA SPI reads were reading garbage in non-release mode (#552)
- ESP32-C3: Fix GPIO5 ADC channel id (#562)
- ESP32-H2: Fix direct-boot feature (#570)
- Fix Async GPIO not disabling interupts on chips with multiple banks (#572)
- ESP32-C6: Support FOSC CLK calibration for ECO1+ chip revisions (#593)
- Fixed CI by pinning the log crate to 0.4.18 (#600)
- ESP32-S3: Fix calculation of PSRAM start address (#601)
- Fixed wrong variable access (FOSC CLK calibration for ESP32-C6 #593)
- Fixed trap location in ram (#605)
- Fix rom::crc docs (#611)
- Fixed a possible overlap of
.dataand.rwtext(#616) - Avoid SDA/SCL being low while configuring pins for I2C (#619)
Breaking
- Simplified user-facing SpiDma and I2s types (#626)
- Significantly simplified user-facing GPIO pin types. (#553)
- No longer re-export the
socmodule and the contents of theinterruptmodule at the package level (#607)
0.9.0 - 2023-05-02
Added
- Add bare-bones PSRAM support for ESP32-S2 (#493)
- Add
DEBUG_ASSISTfunctionality (#484) - Add RSA peripheral support (#467)
- Add PeripheralClockControl argument to
timg,wdt,sha,usb-serial-jtaganduartconstructors (#463) - Added API to raise and reset software interrupts (#426)
- Implement
embedded_hal_nb::serial::*traits forUsbSerialJtag(#498)
Fixed
- Fix
get_wakeup_causecomparison error (#472) - Use 192 as mclk_multiple for 24-bit I2S (#471)
- Fix
CpuControl::start_app_coresignature (#466) - Move
rwtextafter other RAM data sections (#464) - ESP32-C3: Disable
usb_pad_enablewhen setting GPIO18/19 to input/output (#461) - Fix 802.15.4 clock enabling (ESP32-C6) (#458)
- ESP32-S3: Disable usb_pad_enable when setting GPIO19/20 to input/output (#645)
Changed
- Update
embedded-hal-asyncandembassy-*dependencies (#488) - Update to
embedded-hal@1.0.0-alpha.10andembedded-hal-nb@1.0.0-alpha.2(#487) - Let users configure the LEDC output pin as open-drain (#474)
- Use bitflags to decode wakeup cause (#473)
- Minor linker script additions (#470)
- Minor documentation improvements (#460)
Removed
- Remove unnecessary generic from
UsbSerialJtagdriver (#492) - Remove
#[doc(inline)]from esp-hal-common re-exports (#490)