mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
61 lines
1.2 KiB
Markdown
61 lines
1.2 KiB
Markdown
|
# SDIO workflow
|
||
|
|
||
|
This README is a supplement to the comments in the SDIO slave driver. For more details, see `sdio_slave.c`.
|
||
|
|
||
|
The diagram are described in mermaid format. You can view the diagrams on Github or with any mermaid renders.
|
||
|
|
||
|
## Sending direction
|
||
|
|
||
|
```mermaid
|
||
|
sequenceDiagram
|
||
|
actor task
|
||
|
participant ISR
|
||
|
participant HW
|
||
|
Note right of HW: always: rx_done.raw = 1, rx_eof.ena= 1
|
||
|
|
||
|
task-->>ISR: Prepare transfers
|
||
|
task->>HW: rx_done.ena=1
|
||
|
activate HW
|
||
|
|
||
|
%% First ISR triggering transfer
|
||
|
HW->>ISR: trigger
|
||
|
activate ISR
|
||
|
|
||
|
ISR->>HW: rx_done.ena=0
|
||
|
deactivate HW
|
||
|
|
||
|
loop every finished descriptor
|
||
|
note over task, HW: skipped, see below
|
||
|
end
|
||
|
|
||
|
opt HW idle && new transfer prepared
|
||
|
ISR->>HW: Load transfer
|
||
|
end
|
||
|
deactivate ISR
|
||
|
|
||
|
activate HW
|
||
|
HW->>HW: Host doing RX transfer
|
||
|
deactivate HW
|
||
|
|
||
|
HW->>HW: rx_eof.raw=1
|
||
|
activate HW
|
||
|
|
||
|
%% Second ISR recycling transfer
|
||
|
HW->>ISR: trigger
|
||
|
activate ISR
|
||
|
|
||
|
ISR-->>HW: rx_done.ena=0
|
||
|
|
||
|
loop every finished descriptor
|
||
|
ISR->>HW: rx_eof.raw=0
|
||
|
deactivate HW
|
||
|
ISR-->>task: inform
|
||
|
end
|
||
|
|
||
|
opt HW idle && new transfer prepared
|
||
|
note over ISR, HW: Load next transfer if there is...
|
||
|
end
|
||
|
|
||
|
deactivate ISR
|
||
|
```
|