Commit Graph

305 Commits

Author SHA1 Message Date
Scott Mabin
e65951c882
Add new embassy features for esp32s2 and other systimers. Enable embassy tick rate features by default (#1247) 2024-03-06 17:04:05 +00:00
Kaspar Schleiser
3ec0f3b8ba
embassy: introduce InterruptExecutor::spawner() (#1211)
Co-authored-by: Jesse Braham <jessebraham@users.noreply.github.com>
2024-02-28 17:15:52 +00:00
Timo
0c99d8bb60
Add TimerWakeupSource for the esp32-c6 deepsleep. (#1201) 2024-02-28 16:59:49 +00:00
Björn Quentin
12176dbfff
Uart init (#1213)
* UART init for all chips

* Avoid UART reset for the console UART

* Fix comments

* CHANGELOG.md entry

* Introduce a `uart_peripheral_reset` function
2024-02-28 14:48:51 +01:00
Kirill Mikhailov
0240e2b597
Ensuring that the random number generator is TRNG. (#1200)
* Refactor `RNG` driver, ensure randomness for C6 and H2

* WIP: 3 more chips

* Finish

* Redesign

fmt

clippy

* Adjusting for review

+ changelog
2024-02-28 13:46:32 +00:00
Björn Quentin
76135cf8f9
Fix I2C read for ESP32-S2 (#1214)
* Fix I2C read for ESP32-S2

* CHANGELOG.md entry
2024-02-28 14:19:47 +01:00
Jesse Braham
6a663f8b1a
Unify: Remove the chip-specific HAL packages, adapt esp-hal for direct use [1/?] (#1196)
* Remove the chip-specific HAL packages

* Update some doc comments which were missed, fix build script for ESP32/S2

* Refactor/update `esp-hal-procmacros`

* Create the `examples` package, add back all of the previously existing examples

* Use `xtask` automation package for checking examples and documentation in CI

* Combine the `rt-riscv` and `rt-xtensa` features into a single `rt` feature

* Bump MSRV to 1.76.0 (shocking!)

* Re-document the features for the HAL

* No need to re-export the `riscv` package like this

* Make clippy happy, improve CI clippy checks

* Update `CHANGELOG.md`

* riscv: zero bss

Co-authored-by: Björn Quentin <bjoernQ@users.noreply.github.com>

* Address a number of review comments

* Correct pin number in `hello_rgb` example for ESP32-C3

* Address the remaining review comments

* More small tweaks/improvements

* Fix RMT examples (#11)

* Fix RMT examples

* Remove logger-init

* Make I2S examples work on ESP32 (#12)

* Make I2S examples work on ESP32

* Remove logger init

* Fix the direct-vectoring examples on all RISCV chips (#10)

* Update GPIOs for some examples...

* Embassy timer example fixes (#13)

* Switch to generic queue instead of integrated for all examples

* changelog

* Update GPIO in another example, make `rustfmt` happy

* Fix ESP32-S2 PSRAM

* Avoid UART0 and SPI flash pins (#15)

* Avoid UART0 and SPI flash pins

* Fix spi_eh1_device_loopback for non-ESP32

* Update examples/src/bin/gpio_interrupt.rs

Co-authored-by: Juraj Sadel <jurajsadel@gmail.com>

---------

Co-authored-by: Juraj Sadel <jurajsadel@gmail.com>

---------

Co-authored-by: Scott Mabin <scott@mabez.dev>
Co-authored-by: Björn Quentin <bjoernQ@users.noreply.github.com>
Co-authored-by: bjoernQ <bjoern.quentin@mobile-j.de>
Co-authored-by: Juraj Sadel <jurajsadel@gmail.com>
2024-02-27 14:10:11 +00:00
Fan Jiang
9a95c0aa88
Add option to configure the device driver IRAM placement (RFC) (#1096)
* SPI RAM patch

* SPI in IRAM

* Add DMA functions to IRAM

* Try fixing the interrupt latency issue

* Revert changes

* Rename the option name to `optimize-spi-in-iram`

* Fix clippy warning

* Fix typo
2024-02-21 16:04:54 +00:00
Felix Richter
4bc1aaaefa
fix esp32c3 uart initialization (#1156)
* fix esp32c3 uart initialization

Implement uart initialization according to the [esp32c3 technical
reference manual section 26.5.2.1](https://www.espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_en.pdf#subsubsection.26.5.2)

* add fix to changelog
2024-02-21 14:44:37 +00:00
Juraj Sadel
9378639e4c
C6: LP_I2C basic driver (#1185)
* After more analysis and coding

* More work is done, writing/reading WIP

* `write` prototype done, small fixes. Read next

* pre-rebase

* Rebased and updated

* Pre-final state of driver

* More work (near-final state) done

* WIP

* WIP

* working

* cleanup

* changelog

* address review comments

* remove Option from conjure and improve lp-i2c example description

---------

Co-authored-by: Kirill Mikhailov <konnor1980@yandex.ru>
2024-02-21 14:18:54 +00:00
Björn Quentin
bc2f1a02cc
Fix circular DMA (again) and small I2S improvements (#1189)
* Fix calculation of available buffer

* Lift requirement of circular DMA min buffer

* Have a separate set of convenience macros for circular DMA buffers

* Prefer `addr_of_mut!`

* Add `push_with` for I2S TX

* CHANGELOG.md
2024-02-21 12:20:19 +00:00
Björn Quentin
5b3cf02153
Improve I2C NACK detection (#1184)
* Improve I2C NACK detection

* CHANGELOG.md entry
2024-02-19 16:13:39 +00:00
Björn Quentin
6712aa55f7
Wait for update before reading timer count (#1183)
* Wait for update before reading timer count

* CHANGELOG.md entry

* Wait for update before reading timer count (ESP32)

* Use latest PACs

* CHANGELOG.md fix
2024-02-19 14:51:58 +00:00
Scott Mabin
09fef6acc4
Fix get raw core and document the finer details (#1175)
* Fix and document the get_core functions

* Fix UNUSED_THREAD_ID_VALUE to allow proper operation on the esp32p4

* fix multicore cfgs

* changelog

* fixup cfgs and update comments
2024-02-19 12:00:14 +00:00
Felix Richter
b0bb0ab1ce
wait for timer value to be latched for esp32(c3/c6) (#1178)
* wait for timer value to be latched for esp32(c3/c6)

* update changelog to include timer fix
2024-02-19 08:16:49 +00:00
Björn Quentin
172d2b8777
estimate_xtal_frequency for C6/H2 (#1174)
* `estimate_xtal_frequency` for C6/H2

* CHANGELOG.md entry
2024-02-16 12:53:24 +00:00
Björn Quentin
2a5996f408
Fix ESP32 hello_rgb example (#1173)
* Fix ESP32 hello_rgb example

* CHANGELOG.md
2024-02-16 11:18:16 +00:00
Björn Quentin
6e68da0f4d
ESP32-S3: Use 32K ICACHE (#1169)
* ESP32-S3: Use 32K ICACHE

* CHANGELOG.md entry
2024-02-14 15:35:23 +00:00
Sergio Gasquez Arcos
32824422a1
Autodetect xtal-freq (#1165)
* feat: Autodetect xtal-freq

* docs: Update changelog

* style: Clippy lints

* feat: Remove XtalClock::RtcXtalFreq24M variant

* feat: Adjust visibility of estimate_xtal_frequency

* feat: Remove xtal freq features
2024-02-14 11:09:35 +00:00
Björn Quentin
ca58da4fa1
Fix circular DMA (#1144)
* Fix circular DMA

* CHANGELOG.md entry

* Fix CHANGELOG.md
2024-02-08 12:02:25 +00:00
Alexander Ananiev
3a456bb9dd
Add type for gpio::AnyPin (#1067)
This makes it possible to safely implement the InputPin and OutputPin
traits for AnyPin. Now you can convert any pin to AnyPin with the
appropriate type and use it in other library modules

Added:
- Peripheral implementation for AnyPin
- Implementation of Pin for AnyPin
- Implementation of OutputPin for AnyPin with type IsOutputPin
- Implementation of InputPin for AnyPin with type IsInputPin
- Upgrade types for AnyPin (for example InputOutputAnalogPinType ->
InputOutputPinType)
- Implementation of From<Gpio> for AnyPin with the appropriate type

Changed:
- The Gpio::degrage method returns AnyPin with the appropriate type
2024-02-08 07:29:30 +00:00
Kirill Mikhailov
a08b38d231
Adding clock support for ESP32-P4 (#1145)
* Begin adding clock support for ESP32-P4

* WIP

* WIP: more functionality added, minor example update

* WIP state (testing)

* Format

* Finalizing + populating reset_reason enum

* Update esp-pacs dependency

---------

Co-authored-by: Jesse Braham <jesse@beta7.io>
2024-02-07 19:35:25 +00:00
Jesse Braham
0f12654f4a
Refactor the Trace driver to be generic around its peripheral (#1140)
* Use patched version of PAC for C6/H2

* Rename `TRACE` peripheral to `TRACE0`

* Refactor `Trace` driver to be generic around its peripheral

* Update `CHANGELOG.md`
2024-02-06 09:14:15 +00:00
Björn Quentin
c0f9169879
Support Rust's stack-protector feature (#1135)
* Support Rust's `stack-protector` feature

* Update changelogs
2024-02-02 13:56:39 +00:00
Jesse Braham
a586cb311e
Rename the ADC constructor to new, make it infallible (#1133)
* Rename the ADC constructor to `new`, make it infallible

* Update `CHANGELOG.md`
2024-02-01 11:51:05 +00:00
Jesse Braham
eff8f4b222
Unify: rename the esp-hal-common package to esp-hal [0/?] (#1131)
* Rename the `esp-hal-common` package to `esp-hal`

* Update all references to `esp-hal-common`

* Update `CHANGELOG.md`
2024-01-31 16:26:20 +00:00
jneem
858fd4fb1f
Add docs.rs metadata (#1129)
* Add docs.rs metadata

* changelog

* add p4

* Fix targets for c6, h2, p4
2024-01-31 14:16:09 +00:00
jneem
6f73815043
Rmt channels 2 (#959)
* Remove RMT channel's generic parameter

* changelog
2024-01-30 15:30:35 +00:00
Jesse Braham
c42a96c987
Refactor DMA to make API more consistent across devices (#1125)
* Make the `DMA` peripheral API more consistent

* Update examples for devices with `PDMA`

* Update examples for devices with `GDMA`

* Update `CHANGELOG.md`

* Update example after rebasing
2024-01-30 14:58:48 +00:00
Dominic Fischer
b8c6dcea2e
Add LCD_CAM I8080 Driver (#1086)
* LCD_CAM I8080 POC

* Hush CI

* Apply user provided frequency

* Expose bit and byte order

* Properly support command and dummy phases

* Expose clock edge settings

* Allow background transfers

* Add support for both 8 bit and 16 bit

* Remove unnecessary interrupt usage

* Expose all config

* Add LcdCamPeripheral

* Fix up register modification

* Remove 2^13 limit on data phase

* Make example a bit more interesting

* Add DMA peripheral trait bounds

* Use raw interrupts

* Write module level docs

* Improve example doc
2024-01-30 11:21:27 +00:00
Dániel Buga
deb9f21284
Rework DMA descriptors (#1054) 2024-01-30 08:03:47 +00:00
Fan Jiang
1b0fc6b3f3
Fix get_raw_core (#1126) 2024-01-30 07:02:11 +00:00
Dániel Buga
fabb631b7d
Fix tick rates not being applied (#1124) 2024-01-29 17:53:35 +00:00
Kirill Mikhailov
be7b461ae2
RngCore trait is implemented (#1122)
* WIP

made randomness ensuring function
implemented RngCore trait (final version i guess)

* Revert part of changes and leave TODO comment

Changelog entry

Get rid of warning
2024-01-29 17:51:53 +00:00
Bryant Chandler
3eb296c892
Allow for splitting of the USB Serial JTAG peripheral into tx/rx components (continuation) (#1116)
* Allow for splitting of the USB Serial JTAG peripheral into tx/rx components

* Update `CHANGELOG.md`

* Split single waker into tx/rx wakers

* Fix interrupt bug and update embassy example

The wakers were written to trigger opposite, so the rx waker
would trigger for tx interrupts and vice versa.

Also update the embassy example to run read/write in
separate tasks.

* rustfmt

---------

Co-authored-by: Jesse Braham <jesse@beta7.io>
2024-01-26 14:09:09 +00:00
Jesse Braham
f52aa1351c
Refactor the analog module (#1100)
* Create virtual peripherals for `ADC`/`DAC`

* Refactor the `analog::dac` module

* Refactor the `analog::adc` module

* Decouple the ADC driver from the `embedded-hal` traits

* Update `CHANGELOG.md`

* Seal the `AdcCalScheme` trait, reduce visibility of `AdcCalEfuse` trait

* Remove `APB_SARADC`/`SENS` peripherals from the `Peripherals` struct
2024-01-25 16:46:27 +00:00
Björn Quentin
43f212dc72
ESP32-P4: Enable efuse (#1114)
* ESP32-P4: Enable efuse

* CHANGELOG.md entry
2024-01-25 16:45:45 +00:00
Juraj Sadel
bc96351c17
C6: Basic LP_UART driver (#1113)
* WIP

* Add basic LP_UART C6 driver

* Add lp-uart example for C6

* modify entry macro and fmt

* final cleanups

* revert lp_core_basic example and add lp_core_uart and uart examples

* changelog

* review changes

* second changelog

---------

Co-authored-by: Jesse Braham <jesse@beta7.io>
2024-01-25 16:22:14 +00:00
Björn Quentin
de54a17275
Initial support for CLIC (#1112)
* Initial support for CLIC

* CHANGELOG.md entry

* Explain MCAUSE CSR for CLIC
2024-01-25 15:29:37 +00:00
Björn Quentin
f542eb48bb
ESP32-P4: Initial GPIO support (#1109)
* ESP32-P4: Initial GPIO support

* CHANGELOG.md entry
2024-01-23 17:56:01 +00:00
Remmirad
76b5d77505
Implement embedded_hal 1 pwm traits for ledc channel (#1097)
* Implement eh_1 pwm traits for ledc channel

* Add changelog entry

* Update CHANGELOG.md

---------

Co-authored-by: Remmirad <remmirad@posteo.net>
2024-01-23 14:15:50 +00:00
Jesse Braham
e5cd1bd33e
Add initial support for the ESP32-P4 (#1101)
* Add `esp32p4` feature to `esp-hal-procmacros`

* Add `esp32p4` feature to `esp-hal-common`

* Create the `esp32p4-hal` package

* Add ESP32-P4 to CI workflow

* Fix a silly typo :)

* Update `CHANGELOG.md`
2024-01-22 15:28:05 +00:00
Scott Mabin
8ac075a0aa
Add USB_EXCHG_PINS efuse workarounds for esp32c3 and esp32s3 (#1104)
* Add USB_EXCHG_PINS efuse workarounds for esp32c3 and esp32s3

* changelog
2024-01-22 10:32:56 +00:00
Jesse Braham
c448680054 Begin next release cycle 2024-01-19 15:00:11 +00:00
Jesse Braham
567a44f28c
New package releases (#1098) 2024-01-19 14:40:16 +00:00
Jesse Braham
a5a58291e3
Do not invert ADC readings when using ESP32 (#1093)
* Do not invert ADC readings when using ESP32

* Update `CHANGELOG.md`
2024-01-19 07:13:27 +00:00
Jesse Braham
99c46d6a4e Update CHANGELOG.md 2024-01-18 17:30:30 +00:00
Jesse Braham
0e927d25cf
No longer depend on embassy-time (#1092)
* No longer depend on `embassy-time`

* Update `CHANGELOG.md`
2024-01-17 16:45:11 +00:00
Björn Quentin
ebe4149c39
Fix time-driver-timg timer1 (#1091)
* Fix time-driver-timg timer1

* CHANGELOG.md entry

* Fix examples

* Fix CHANGELOG.md
2024-01-17 16:20:46 +00:00
Sycrosity
842eb7c92e
Update embassy to its embedded-* v1.0.0 versions (#1076)
* update embassy in Cargo.toml and add embassy-time-driver

* fix embassy-time for esp-hal-common

* update CHANGELOG.md

* fix clippy warning by removing manual adc implimentation for esp32

* undo change, fixing clippy error by removing unused use statement

* remove embassy crates-io patches

* remove a remaining embassy patch

* Update embassy-time version in esp-hal-common/Cargo.toml

Co-authored-by: Scott Mabin <scott@mabez.dev>

* remove the remaining embassy patches

* remove embassy-time as a dependency for esp*-hal

---------

Co-authored-by: Scott Mabin <scott@mabez.dev>
2024-01-16 20:25:22 +00:00