mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
RMT transmitter and receiver overview pictures
This commit is contained in:
parent
cdad1e8382
commit
2b010d4bc9
BIN
docs/_static/rmt-carrier.png
vendored
Normal file
BIN
docs/_static/rmt-carrier.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
BIN
docs/_static/rmt-waveform-modulated.png
vendored
Normal file
BIN
docs/_static/rmt-waveform-modulated.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
BIN
docs/_static/rmt-waveform.png
vendored
Normal file
BIN
docs/_static/rmt-waveform.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
@ -3,6 +3,87 @@ RMT
|
||||
|
||||
The RMT (Remote Control) module driver can be used to send and receive infrared remote control signals. Due to flexibility of RMT module, the driver can also be used to generate or receive many other types of signals.
|
||||
|
||||
The signal, that consists of a series of pulses, is generated by RMT's transmitter basing on a list of values. The values define the pulse duration and a binary level, see below. The transmitter can also provide a carrier and modulate it with provided pulses.
|
||||
|
||||
.. blockdiag::
|
||||
:scale: 100
|
||||
:caption: RMT Transmitter Overview
|
||||
:align: center
|
||||
|
||||
blockdiag rmt_tx {
|
||||
|
||||
node_width = 80;
|
||||
node_height = 60;
|
||||
default_group_color = lightgrey;
|
||||
|
||||
a -> b -> c -> d;
|
||||
e -> f -> g -- h;
|
||||
d -> o [label=GPIO];
|
||||
h -> d [folded];
|
||||
|
||||
a [style=none, width=100, label="{11,high,7,low},\n{5,high,5,low},\n..."]
|
||||
b [label="Waveform\nGenerator"]
|
||||
c [style=none, label="", background="_static/rmt-waveform.png"]
|
||||
d [shape=beginpoint, label="mod"]
|
||||
e [style=none, width=60, height=40, label="Carrier\nenable"]
|
||||
f [label="Carrier\nGenerator"]
|
||||
g [style=none, label="", background="_static/rmt-carrier.png"]
|
||||
h [shape=none]
|
||||
o [style=none, label="", background="_static/rmt-waveform-modulated.png"]
|
||||
|
||||
group {
|
||||
label = Input
|
||||
a,e;
|
||||
}
|
||||
group {
|
||||
label = "RMT Transmitter"
|
||||
b,f,c,g,d,h;
|
||||
}
|
||||
group {
|
||||
label = Output
|
||||
o;
|
||||
}
|
||||
}
|
||||
|
||||
Reverse operation is performed by the receiver, where a series of pulses is decoded into a list of values containing the pulse duration and binary level. A filter may be applied to remove high frequency noise from the input signal.
|
||||
|
||||
.. blockdiag::
|
||||
:scale: 90
|
||||
:caption: RMT Receiver Overview
|
||||
:align: center
|
||||
|
||||
blockdiag rmt_rx {
|
||||
|
||||
node_width = 80;
|
||||
node_height = 60;
|
||||
default_group_color = lightgrey;
|
||||
|
||||
a -> b [label=GPIO];
|
||||
b -> c -> d;
|
||||
e -- f;
|
||||
f -> b [folded];
|
||||
|
||||
a [style=none, label="", background="_static/rmt-waveform.png"]
|
||||
b [label=Filter]
|
||||
c [label="Edge\nDetect"]
|
||||
d [style=none, width=100, label="{11,high,7,low},\n{5,high,5,low},\n..."]
|
||||
e [style=none, width=60, height=40, label="Filter\nenable"]
|
||||
f [shape=none, label=""]
|
||||
|
||||
group {
|
||||
label = Input
|
||||
a,e;
|
||||
}
|
||||
group {
|
||||
label = "RMT Receiver"
|
||||
b,c;
|
||||
}
|
||||
group {
|
||||
label = Output
|
||||
d;
|
||||
}
|
||||
}
|
||||
|
||||
There couple of typical steps to setup and operate the RMT and they are discussed in the following sections:
|
||||
|
||||
1. `Configure Driver`_
|
||||
@ -155,9 +236,9 @@ Registering of an interrupt handler for the RMT controller is done be calling :c
|
||||
The RMT controller triggers interrupts on four specific events describes below. To enable interrupts on these events, the following functions are provided:
|
||||
|
||||
* RMT's receiver has finished receiving a signal - :cpp:func:`rmt_set_rx_intr_en`
|
||||
* Ownership to the RMT memory block has been violated - :cpp:func:`rmt_set_err_intr_en`
|
||||
* RMT's transmitter has finished transmitting the signal - :cpp:func:`rmt_set_tx_intr_en`
|
||||
* The number of events the transmitter has sent matches a threshold value :cpp:func:`rmt_set_tx_thr_intr_en`
|
||||
* Ownership to the RMT memory block has been violated - :cpp:func:`rmt_set_err_intr_en`
|
||||
|
||||
Setting or clearing an interrupt enable mask for specific channels and events may be also done by calling :cpp:func:`rmt_set_intr_enable_mask` or :cpp:func:`rmt_clr_intr_enable_mask`.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user