Commit Graph

156 Commits

Author SHA1 Message Date
bjoernQ
ad1970c6b7 Offer DMA channel 3 and 4 on ESP32-S3 2022-10-31 07:09:15 -07:00
dimi
2f3b6c843c remove lifetime annotations from cpu_control::start_app_core 2022-10-31 14:46:31 +01:00
dimi
5cf6079054 cpu_control::start_app_core improvements
* add `Send` bound
* move `#[must_use]` to `AppCoreGuard`
* remove redundant `-> ()`
* document guard behaviour
2022-10-31 13:28:56 +01:00
Björn Quentin
8ec46df825
Merge pull request #234 from jessebraham/feature/dma
Add DMA support for ESP32-C2 and ESP32-S3
2022-10-28 16:15:28 +02:00
Jesse Braham
4f18e2c846 Update the priority enum and add missing channels for ESP32-S3 2022-10-28 06:51:10 -07:00
JCF
a7d561ec26 Added method to change bus frequency to Spi struct 2022-10-28 11:15:39 +02:00
Jesse Braham
c642c79297 Add DMA support for ESP32-S3 2022-10-27 12:08:23 -07:00
Jesse Braham
e2df98da52 Add DMA support for ESP32-C2 2022-10-27 11:22:30 -07:00
bjoernQ
3e4710b822 Add DMA support for ESP32-S2 2022-10-25 07:38:45 -07:00
Gustavo Henrique Nihei
3ff5da5aa7 esp-hal-common: Remove unnecessary unsafe block
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-10-24 09:52:46 -03:00
playfulFence
4fb77df6ce Fix lifetime error 2022-10-24 13:09:06 +02:00
Björn Quentin
9744d12484
SPI-DMA for ESP32 (#216)
* SPI-DMA for ESP32

* MSRV Fix
2022-10-20 09:12:31 -07:00
Juraj Sadel
d850b76246 ESP32S3: Add ADC support 2022-10-20 17:44:08 +02:00
Jesse Braham
00cba4485c Update esp-hal-common to use the newest PACs 2022-10-19 07:00:20 -07:00
bjoernQ
9cb24bb79f Basic DMA for ESP32-C3 2022-10-13 10:14:51 -07:00
Jesse Braham
f13c47f28f
Merge pull request #211 from jessebraham/feature/esp32c2
Add support for the ESP32-C2/ESP8684
2022-10-13 08:52:44 -07:00
Jesse Braham
908fb48e6c Remove some unused constants 2022-10-13 07:34:02 -07:00
Jesse Braham
e2b2d55bf8 Fix a bunch of cfg gates, use published version of PAC 2022-10-12 12:25:15 -07:00
Jesse Braham
2880ca4ca0 More corrections to clocks 2022-10-12 09:28:34 -07:00
Jesse Braham
d3f92db2ec Get the ADC example building, clean up some cfg gates
Note that this example still doesn't seem to be working correctly
2022-10-12 09:28:34 -07:00
Jesse Braham
312c41cee2 All examples building, many still have issues at runtime 2022-10-12 09:28:34 -07:00
Andreas Hartmann
159fe3b29b common/spi: Use constructor in add_device
to create a new `SpiBusDevice` instead of directly instantiating the
struct. `SpiBusDevice::new` takes care of setting up the CS line to be a
default-high output, too, which the raw struct doesn't.
2022-10-12 08:52:02 +02:00
Jesse Braham
76f803ae63 Make some corrections to clock/RTC_CNTL (still not working) 2022-10-11 10:12:42 -07:00
Jesse Braham
05fd5a64de Update dependencies, fix some errors after rebase, add RTC_CNTL 2022-10-11 10:12:42 -07:00
Jesse Braham
3019b78d6a Fix clock and GPIO drivers, add analog GPIO pins 2022-10-11 10:11:36 -07:00
Jesse Braham
f5f475923f Add startup code and build/linker scripts, add ADC, eFuse, GPIO, and TIMG 2022-10-11 10:11:36 -07:00
Jesse Braham
455965d471 Create the esp32c2-hal package and add it to the workspace
Add a feature for the ESP32-C2 to`esp-hal-common` and update some `cfg`s


Organize the `esp-hal-common` imports and exports and update to include the ESP32-C2
2022-10-11 08:03:43 -07:00
Andreas Hartmann
2b98932028 common/spi: Implement hardware CS
Removes a lot of generic arguments and hard-codes the `SpiBusController`
and `SpiBusDevice` to work with the `Spi<T>` defined in the HAL instead.
This allows us to access the `cs_signal()` trait function from `T:
Instance`, which we need to connect/disconnect the CS I/O as
appropriate.
2022-10-11 16:06:45 +02:00
Björn Quentin
af745ac7b0
Fix ESP32-C3 interrupt/exception handling (#207)
* Fix ESP32-C3 interrupt/exception handling

* Use riscv-atomic-emulation-trap 0.2.0
2022-10-05 14:15:17 +01:00
Jesse Braham
5054681ba3 Update to newest embedded-hal alpha and add embedded-hal-nb 2022-09-29 16:07:49 +02:00
Jesse Braham
7889a992d7 Add cfg symbols for SYSTIMER and USB_SERIAL_JTAG peripherals 2022-09-20 16:41:39 +02:00
Juraj Sadel
0f9fdb7c15 RMT: Shouldn't be possible to assign pins multiple times into channel 2022-09-20 12:33:17 +02:00
Jesse Braham
5ca771a12e
Inject configuration symbols in build script, simplify cfg gating (#187)
* Update the build script to inject a configuration value for the enabled chip

* Update all cfg gates to use the new symbols instead of the chip features

* Inject architecture and core count symbols as well, update as needed

* Organize the imports and exports of `esp-hal-common`
2022-09-14 07:46:23 -07:00
Jesse Braham
ee7e9bd0a1 Bump version numbers and update dependencies 2022-09-13 21:01:08 +02:00
Jesse Braham
252fa27c2e Change target_arch cfgs to chip features
This hopefully will allow the documentation's build to succeed on docs.rs, as it uses the `x86_64-unknown-linux-gnu` target by default
2022-09-13 19:46:41 +02:00
Juraj Sadel
3ebfbc44c3 ADC: Add compile time check for using unconfigured PIN, add AdcPin wrapper around PIN 2022-09-13 08:41:04 +02:00
Juraj Sadel
f11a23dddb Make it impossible to create multiple instances of LEDC 2022-09-06 11:37:05 +02:00
bjoernQ
b9f38aae7c Pin version of paste to fix build errors 2022-08-31 11:28:42 +02:00
har7an
8b9fd8b7a0
embedded-hal SpiDevice on all esp32 variants (#106)
* WIP: common/spi: Implement `SpiDevice`

to get shared access to an SPI bus directly via the HAL.

* WIP: common/spi: add SpiBusDevice::new

to create instances via a function call.

* esp32/examples: Add example for spi device trait

* common/spi: Finish "SpiDevice" implementation

for esp32. Abandons the approach of having the user pass in some generic
mutex in favor of creating the Mutex as part of the API so it isn't
exposed to the user in the first place.

* common/spi: Add more thorough docs

* esp32/examples: Fix example for eh1 "SpiDevice"

* common/spi: Implement `SpiDevice` for xtensa arch

and move the code into a submodule that is fenced with conditional
compilation directives.

* esp32/examples: Update spi device example

to the changed APIs for the timers and clocks, and add more transmission
tests to the example code.

* common/spi: Create devices from buscontroller

directly, instead of offering only the `new` method.

* common/spi: Finish `SpiBusDevice` trait

from embedded-hal 1.0.0-alpha.8.

* esp32: Update `SpiBusDevice` usage example.

* common/spi: Fix mutex types for xtensa32 esp

because the esp32/esp32s3 can use `SpinLockMutex`, whereas the esp32s2
has access only to `CriticalSectionMutex`.

* common/spi: Implement `SpiBusDevice` for riscv

based esp32c3.

* general: Add examples for spi device loopback

to all esp variants.

* common: Use esp_backtrace in spi_eh1_device examples

* common/spi: Update module documentation.

* common/spi: Use `critical_section::Mutex`

to unify locking across all esp variants.

* esp32c3-hal: Fix spi device example

* esp32c3/examples: Fix typo in used spi pins

Co-authored-by: Jesse Braham <jessebraham@users.noreply.github.com>

Co-authored-by: Jesse Braham <jessebraham@users.noreply.github.com>
2022-08-30 06:55:53 -07:00
Juraj Sadel
9911a1e359 Replace all float calculations with fixed ones 2022-08-30 13:43:48 +02:00
Maxime Borges
04c8721e60 gpio: Impl From<> 2022-08-28 01:22:33 +02:00
Jesse Braham
6f20358124
Update the Cargo manifests and top-level README (#168)
* Add the `rust-version` key to each Cargo manifest

* Normalize dependencies and features in each Cargo manifest

* Enable all features in CI when checking examples

* Update the top-level README
2022-08-25 09:20:05 -07:00
Scott Mabin
b30886cce6
Periodic system timer & esp32s2 fixes & edge interrupt fixes (#167)
* Add Periodic mode to SYSTIMER

* Deduplicate shared code in SYSTIMER

* esp32s2 edge mode systimer interrupt

- Make systimer interrupts edge mode
- fix examples for s3 & s2

* Fix TPS for esp32s2, clean up examples
2022-08-25 07:13:56 -07:00
bjoernQ
5e6234dcc4 Fix embedded-hal 0.2.x SPI implementation 2022-08-24 19:49:47 +02:00
Scott Mabin
4c943378f8 Use vscode multi-root ws for esp-hal 2022-08-23 21:24:04 +02:00
Jesse Braham
81ea741a81 No longer alias the PAC package names 2022-08-22 12:22:42 -07:00
Scott Mabin
be184a552d
critical_section implementations & esp_backtrace (#151)
* CS impl

* use CS Mutex in C3 examples

* use CS Mutex in S2 examples

* Update esp32 example

* run fmt

* Update S3 examples

* Remove uses of unsafe where no longer required

* use esp_backtrace in examples

* fix import & fmt once more

* Bump MSRV to 1.60.0

Co-authored-by: Jesse Braham <jesse@beta7.io>
2022-08-22 20:02:28 +01:00
Björn Quentin
f7c9b0869e
Merge pull request #157 from jessebraham/fixes/pacs
Use the published version of the PACs
2022-08-22 08:53:54 +02:00
Gustavo Henrique Nihei
61c0731b62 rtc: Add support for monitoring of XTAL clock
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-08-19 21:55:54 +02:00
Jesse Braham
f0335ade53 Use the published version of the PACs 2022-08-19 10:45:32 -07:00