From dce0993ce5b45602de63ba32ff641a59cbf74c0f Mon Sep 17 00:00:00 2001 From: morris Date: Fri, 29 Apr 2022 14:42:35 +0800 Subject: [PATCH] doc: apply wavedrom extension --- .../diagrams/spi/miso_timing_waveform.json | 29 +++++++++ .../diagrams/spi/miso_timing_waveform.rst | 17 ------ .../spi/miso_timing_waveform_async.json | 33 +++++++++++ .../spi/miso_timing_waveform_async.rst | 19 ------ .../diagrams/spi/spi_slave_miso_dma.json | 56 ++++++++++++++++++ .../diagrams/spi/spi_slave_miso_dma.rst | 23 ------- docs/_static/miso_timing_waveform.png | Bin 14658 -> 0 bytes docs/_static/spi_slave_miso_dma.png | Bin 25734 -> 0 bytes docs/conf_common.py | 4 ++ .../api-reference/peripherals/spi_master.rst | 4 +- .../api-reference/peripherals/spi_slave.rst | 2 +- 11 files changed, 124 insertions(+), 63 deletions(-) create mode 100644 docs/_static/diagrams/spi/miso_timing_waveform.json delete mode 100644 docs/_static/diagrams/spi/miso_timing_waveform.rst create mode 100644 docs/_static/diagrams/spi/miso_timing_waveform_async.json delete mode 100644 docs/_static/diagrams/spi/miso_timing_waveform_async.rst create mode 100644 docs/_static/diagrams/spi/spi_slave_miso_dma.json delete mode 100644 docs/_static/diagrams/spi/spi_slave_miso_dma.rst delete mode 100644 docs/_static/miso_timing_waveform.png delete mode 100644 docs/_static/spi_slave_miso_dma.png diff --git a/docs/_static/diagrams/spi/miso_timing_waveform.json b/docs/_static/diagrams/spi/miso_timing_waveform.json new file mode 100644 index 0000000000..8f0dfed212 --- /dev/null +++ b/docs/_static/diagrams/spi/miso_timing_waveform.json @@ -0,0 +1,29 @@ +{ + "signal": [ + { + "name": "SCLK", + "wave": "p...", + "node": ".ad..." + }, + { + "name": "MISO", + "wave": "x3x.", + "node": ".b...", + "phase": -1.8 + }, + { + "name": "MISO delayed", + "wave": "x3x.", + "node": ".c.", + "phase": -2.4 + } + ], + "edge": [ + "a|->b input delay", + "b|->c gpio delay", + "c-|>d setup slack" + ], + "config": { + "hscale": 3 + } +} diff --git a/docs/_static/diagrams/spi/miso_timing_waveform.rst b/docs/_static/diagrams/spi/miso_timing_waveform.rst deleted file mode 100644 index 7740be2281..0000000000 --- a/docs/_static/diagrams/spi/miso_timing_waveform.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. this picture is generated by https://wavedrom.com/, using the sphinx plugin sphinxcontrib-wavedrom -.. due to plugin issue, we cannot place only the picture information in a standalone file, but have to take .. wavedrom:: inside - -.. wavedrom:: - - { signal: [ - { name: 'SCLK', wave: 'p...', node: '.ad...' }, - { name: 'MISO', wave: 'x3x.', node: '.b...', phase:-1.8 }, - { name: 'MISO delayed', wave: 'x3x.', node: '.c.', phase:-2.4 }, - ], - edge: [ - 'a|->b input delay', - 'b|->c gpio delay', - 'c-|>d setup slack' - ], - config: { hscale: 3 } - } diff --git a/docs/_static/diagrams/spi/miso_timing_waveform_async.json b/docs/_static/diagrams/spi/miso_timing_waveform_async.json new file mode 100644 index 0000000000..73e94f517e --- /dev/null +++ b/docs/_static/diagrams/spi/miso_timing_waveform_async.json @@ -0,0 +1,33 @@ +{ + "signal": [ + { + "name": "SCLK", + "wave": "0.1....0....1...", + "node": "..a.........e" + }, + { + "name": "SLV_CLK", + "wave": "p..............", + "node": "..b..", + "phase": -0.5 + }, + { + "name": "MISO", + "wave": "x...3.....x....", + "node": "....c", + "phase": -0.5 + }, + { + "name": "MISO delayed", + "wave": "x.......3.....x.", + "node": "........d" + } + ], + "edge": [ + "a|->b sample delay", + "b|->c slave output delay", + "c|->d gpio delay", + "d-|>e setup slack", + "a-|>c input delay" + ] +} diff --git a/docs/_static/diagrams/spi/miso_timing_waveform_async.rst b/docs/_static/diagrams/spi/miso_timing_waveform_async.rst deleted file mode 100644 index 2cbf7666ec..0000000000 --- a/docs/_static/diagrams/spi/miso_timing_waveform_async.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. this picture is generated by https://wavedrom.com/, using the sphinx plugin sphinxcontrib-wavedrom -.. due to plugin issue, we cannot place only the picture information in a standalone file, but have to take .. wavedrom:: inside - -.. wavedrom:: - - { signal: [ - { name: 'SCLK', wave: '0.1....0....1...', node: '..a.........e'}, - { name: 'SLV_CLK',wave: 'p..............', node: '..b..', phase: -0.5 }, - { name: 'MISO', wave: 'x...3.....x....', node: '....c', phase:-0.5}, - { name: 'MISO delayed', wave: 'x.......3.....x.', node: '........d'}, - ], - edge: [ - 'a|->b sample delay', - 'b|->c slave output delay', - 'c|->d gpio delay', - 'd-|>e setup slack', - 'a-|>c input delay' - ], - } diff --git a/docs/_static/diagrams/spi/spi_slave_miso_dma.json b/docs/_static/diagrams/spi/spi_slave_miso_dma.json new file mode 100644 index 0000000000..48185c8329 --- /dev/null +++ b/docs/_static/diagrams/spi/spi_slave_miso_dma.json @@ -0,0 +1,56 @@ +{ + "signal": [ + { + "name": "CS", + "wave": "10........" + }, + { + "name": "SCLK", + "wave": "0.10101010", + "node": "...ab" + }, + { + "name": "MISO (normal)", + "wave": "x3.3.3.3.3", + "node": "...c.d", + "data": [ + "7", + "6", + "5", + "4", + "3" + ], + "phase": -0.8 + }, + { + "name": "SCLK", + "wave": "0.10101010", + "node": "..e.f" + }, + { + "name": "MISO (DMA)", + "wave": "x33.3.3.3", + "node": "..g.h", + "data": [ + "7", + "6", + "5", + "4", + "3", + "2" + ], + "phase": -0.8 + } + ], + "edge": [ + "a|->c delay", + "b-|->c setup", + "b-|->d hold", + "e|->g delay", + "f|->g setup", + "f-|>h hold" + ], + "config": { + "hscale": 2 + } +} diff --git a/docs/_static/diagrams/spi/spi_slave_miso_dma.rst b/docs/_static/diagrams/spi/spi_slave_miso_dma.rst deleted file mode 100644 index afa2a69a4a..0000000000 --- a/docs/_static/diagrams/spi/spi_slave_miso_dma.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. This is the source code to generate figure by https://wavedrom.com/. -.. We can use the sphinx plugin sphinxcontrib-wavedrom to generate the figure and put it in the html doc (by include this source code), but it is not supported by the pdf. Currently we generate the figure manually and include the stataic figure in the doc. - -.. wavedrom:: - - { signal: [ - { name:'CS', wave:'10........'}, - { name: 'SCLK', wave: '0.10101010', node: '...ab'}, - { name: 'MISO (normal)', wave: 'x3.3.3.3.3', node: '...c.d', data: ['7','6','5','4','3'], phase:-0.8}, - { name: 'SCLK', wave: '0.10101010', node: '..e.f'}, - { name: 'MISO (DMA)', wave: 'x33.3.3.3', node: '..g.h', data: ['7','6','5','4','3','2'], phase:-0.8}, - ], - edge: [ - 'a|->c delay', - 'b-|->c setup', - 'b-|->d hold', - 'e|->g delay', - 'f|->g setup', - 'f-|>h hold', - ], - config:{hscale: 2} - } - diff --git a/docs/_static/miso_timing_waveform.png b/docs/_static/miso_timing_waveform.png deleted file mode 100644 index 19cc223bc0b19255dd6b1e2695ad766dbd9ba8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14658 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 UzVESkJrgAA>FVdQ&MBb@04ZcJApigX diff --git a/docs/conf_common.py b/docs/conf_common.py index 6b9c6471d6..cac554628e 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -160,6 +160,7 @@ conditional_include_dict = {'SOC_BT_SUPPORTED':BT_DOCS, 'esp32c3':ESP32C3_DOCS} extensions += ['sphinx_copybutton', + 'sphinxcontrib.wavedrom', # Note: order is important here, events must # be registered by one extension before they can be # connected to another extension @@ -173,6 +174,9 @@ extensions += ['sphinx_copybutton', 'esp_docs.esp_extensions.run_doxygen', ] +# Use wavedrompy as backend, insted of wavedrom-cli +render_using_wavedrompy = True + # link roles config github_repo = 'espressif/esp-idf' diff --git a/docs/en/api-reference/peripherals/spi_master.rst b/docs/en/api-reference/peripherals/spi_master.rst index 69249f3cdf..68639eb7f6 100644 --- a/docs/en/api-reference/peripherals/spi_master.rst +++ b/docs/en/api-reference/peripherals/spi_master.rst @@ -509,9 +509,7 @@ Please note that the ISR is disabled during flash operation by default. To keep :scale: 40 % :align: center - .. wavedrom does not support rendering pdflatex till now(1.3.1), so we use the png here - - .. image:: /../_static/miso_timing_waveform.png + .. wavedrom:: /../_static/diagrams/spi/miso_timing_waveform.json The maximum allowed frequency is dependent on: diff --git a/docs/en/api-reference/peripherals/spi_slave.rst b/docs/en/api-reference/peripherals/spi_slave.rst index f4e9fe3fdd..eca77af311 100644 --- a/docs/en/api-reference/peripherals/spi_slave.rst +++ b/docs/en/api-reference/peripherals/spi_slave.rst @@ -201,7 +201,7 @@ Restrictions and Known Issues 2. Furthermore, DMA requires SPI modes 1 and 3. For SPI modes 0 and 2, the MISO signal has to be launched half a clock cycle earlier to meet the timing. The new timing is as follows: - .. image:: /../_static/spi_slave_miso_dma.png + .. wavedrom:: /../_static/diagrams/spi/spi_slave_miso_dma.json If DMA is enabled, a Device's launch edge is half of an SPI clock cycle ahead of the normal time, shifting to the Master's actual latch edge. In this case, if the GPIO matrix is bypassed, the hold time for data sampling is 68.75 ns and no longer a half of an SPI clock cycle. If the GPIO matrix is used, the hold time will increase to 93.75 ns. The Host should sample the data immediately at the latch edge or communicate in SPI modes 1 or 3. If your Host cannot meet these timing requirements, initialize your Device without DMA.