Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes to the book content: #103

Merged
merged 3 commits into from
Sep 8, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion book/src/01_intro.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
<p style="text-align:center;"><img src="./assets/esp-logo-black.svg" width="50%"></p>

# Introduction

## Content of this material

This is Ferrous Systems' *Embedded Rust on Espressif* training material. It is divided into two workshops: introductory and advanced. The introductory trail will introduce you to basics of embedded development and how to make the embedded board interact with the outside world - reacting to commands and sending sensor data.

The advanced course takes it from there to dive deeper into topics like interrupt handling, low-level peripheral access and writing your own drivers.

An [Espressif Rust Board](https://github.com/esp-rs/esp-rust-board) or [ESP32-C3-DevKitC-02](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitc-02.html) (intro part only!) is mandatory for working with this book - emulators like QEMU are not supported.
⚠️ You will be able to chat with our experts during the training if you are participating to the training. In addition, we strongly suggest to join the [community](https://matrix.to/#/#esp-rs:matrix.org) on the Matrix for all technical questions or delivery issues! The community is open to everyone.
Dajamante marked this conversation as resolved.
Show resolved Hide resolved

## The board

An [Espressif Rust Board](https://github.com/esp-rs/esp-rust-board) is mandatory[^note] for working with this book - emulators like QEMU are not supported.
If you subscribed to one of the trainings, a board will be provided to you directly by Espressif.
Some exercises also require wireless internet access.



Our focus lies primarily on the [ESP32-C3](https://www.espressif.com/en/products/socs/esp32-c3) platform, a [RISC-V](https://riscv.org/) based microcontroller with strong IoT capabilities, facilitated by integrated Wi-Fi and Bluetooth 5 (LE) functionality as well as large RAM + flash size for sophisticated applications. A substantial amount of this course is also applicable for Xtensa the other architecture Espressif uses, in particular the [ESP32-S3](https://www.espressif.com/en/products/socs/esp32-s3). For low-level access the general principles apply as well, but actual hardware access will differ in various ways - refer to the technical reference manuals ([C3](https://www.espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_en.pdf), [S3](https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf)) or [other available technical documents](https://www.espressif.com/en/support/documents/technical-documents) as needed.

### Block diagram
<p style="text-align:center;"><img src="./assets/block_diagram.png" width="100%"></p>

### EESP32-C3-DevKit-RUST-1

<p style="text-align:center;"><img src="./assets/rust_board_v1_diagram.svg" width="100%"></p>

## Rust knowledge

Basic Rust like [The Rust Book](https://doc.rust-lang.org/book/) Chapters 1 - 6, Chapter 4 Ownership does not need to be fully understood.


[^note]: It is possible to follow the intro part with [ESP32-C3-DevKitC-02](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitc-02.html) but we do not recommend it. It is inherently easier to follow the training when using the same hardware.
12 changes: 11 additions & 1 deletion book/src/04_3_0_i2c.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,15 @@ To read three bytes from an EEPROM device, the sequence will be something like:
| 15. | | Data Byte from EEPROM Address + 2 |
| 16. | NAK (i.e. end-of-read) | |
| 17. | STOP | |
### I²C signal image

TODO I2C signal image

<p style="text-align:center;"><img src="./assets/I2C_data_transfer.svg" width="100%"></p>

A sequence diagram of data transfer on the I²C bus:
- S - Start condition
- P - Stop condition
- B<sub>1</sub> to B<sub>N</sub> - transferring of one bit
- SDA changes are allowed when SCL is low (blue), otherwise there will be a start or stop condition generated.

[Source & more details: Wikipedia](https://en.wikipedia.org/wiki/I%C2%B2C).
216 changes: 216 additions & 0 deletions book/src/assets/I2C_data_transfer.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added book/src/assets/block_diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading