Analisador lógico com ESP32 - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T15:56:18Zhttps://labdegaragem.com/forum/topics/analisador-l-gico-com-esp32?feed=yes&xn_auth=noManual super importante:
ESP…tag:labdegaragem.com,2022-10-13:6223006:Comment:8874012022-10-13T01:28:33.576ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Manual super importante:</p>
<p></p>
<p><strong>ESP IDF Programming guide - para ESP32:</strong></p>
<p><a rel="nofollow noopener" href="https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-idf/en/latest/pdf/" target="_blank">https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-idf/e...</a></p>
<p>Manual super importante:</p>
<p></p>
<p><strong>ESP IDF Programming guide - para ESP32:</strong></p>
<p><a rel="nofollow noopener" href="https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-idf/en/latest/pdf/" target="_blank">https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-idf/e...</a></p> Rui bom dia,
Consegui config…tag:labdegaragem.com,2020-03-14:6223006:Comment:7283772020-03-14T03:38:07.134ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Rui bom dia, </p>
<p>Consegui configurar e usar o <strong>SUMP ESP32 Logic Analyzer</strong>. </p>
<p>O projeto é bem promissor e esta funcionando! </p>
<p><a href="https://esp32.com/viewtopic.php?f=19&t=14135&p=56903#p56903" rel="nofollow">https://esp32.com/viewtopic.php?f=19&t=14135&p=56903#p56903</a></p>
<p></p>
<p>Para baixar os códigos :…</p>
<p></p>
<p>Rui bom dia, </p>
<p>Consegui configurar e usar o <strong>SUMP ESP32 Logic Analyzer</strong>. </p>
<p>O projeto é bem promissor e esta funcionando! </p>
<p><a rel="nofollow" href="https://esp32.com/viewtopic.php?f=19&t=14135&p=56903#p56903">https://esp32.com/viewtopic.php?f=19&t=14135&p=56903#p56903</a></p>
<p></p>
<p>Para baixar os códigos :</p>
<p><a href="https://github.com/EUA/ESP32_LogicAnalyzer">https://github.com/EUA/ESP32_LogicAnalyzer</a></p>
<p></p>
<p><font>Resumindo meu ambiente e configurações:</font><br/><br/><font>ESP32 Dev Kit (38 pinos) - Arduino IDE 1.8.10</font><br/><font>ESP32 Arduino FW versão 1.04</font><br/><font>ESP32 Configurações da placa:</font></p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/4100650478?profile=original" target="_blank" rel="noopener"><font><img src="https://storage.ning.com/topology/rest/1.0/file/get/4100650478?profile=RESIZE_710x" class="align-center" width="651" height="451"/></font></a></p>
<p></p>
<p>Carregue os 3 arquivos do código em uma mesma pasta, para a IDE poder acessá-los.</p>
<p></p>
<p><font>No código do<span> </span>arquivo<span> </span><strong class="text-strong">ESP32_LogicAnalyzer.h</strong><span> </span>, fiz essa alteração:<br/><strong class="text-strong">#define USE_SERIAL2_FOR_OLS 0 // If 0, UART0 = OLS e UART2 </strong><span> </span>(funcionou)<br/><br/><br/><strong class="text-strong">PulseView - versão 0.4.1 (64 bits)</strong></font></p>
<p></p>
<p><font><a rel="nofollow" href="https://sigrok.org/wiki/PulseView" class="postlink">https://sigrok.org/wiki/PulseView</a><br/><span>Pulse View downloads:</span><br/><a rel="nofollow" href="https://sigrok.org/wiki/Downloads" class="postlink">https://sigrok.org/wiki/Downloads</a></font></p>
<p><font><br/>Conectando ao ESP32:</font></p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/4100658163?profile=original" target="_blank" rel="noopener"><font><img src="https://storage.ning.com/topology/rest/1.0/file/get/4100658163?profile=RESIZE_710x" class="align-center"/></font></a></p>
<p></p>
<p><font>Usei um oscilador de cristal de 1,3025 MHz para testar o Logic Analyzer - conectado ao pino GPIO4 (canal 4):<br/>A leitura da frequência foi quase precisa.<span> </span>O buffer de 128K não foi encontrado.</font></p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/4100663135?profile=original" target="_blank" rel="noopener"><font><img src="https://storage.ning.com/topology/rest/1.0/file/get/4100663135?profile=RESIZE_710x" class="align-center"/></font></a></p>
<p></p> Atualizando, após alguns dias…tag:labdegaragem.com,2020-02-22:6223006:Comment:7275352020-02-22T22:25:25.889ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Atualizando, após alguns dias de férias:</p>
<p></p>
<p>Consegui gerar clocks bem altos com o ESP32. Achei isso incrível! Esse clock será usado como base de tempo no Analisador Logico. </p>
<p>Através de equações matemáticas, uma gama variada de frequências poderá ser gerada.</p>
<p></p>
<p>Consegui gerar um clock de <strong>80 MHz usando o PLL_D2_clock</strong> e até <strong>64 MHz usando o APLL_clock</strong>. </p>
<p>Esse último permite variações mais precisas na frequência (mais…</p>
<p>Atualizando, após alguns dias de férias:</p>
<p></p>
<p>Consegui gerar clocks bem altos com o ESP32. Achei isso incrível! Esse clock será usado como base de tempo no Analisador Logico. </p>
<p>Através de equações matemáticas, uma gama variada de frequências poderá ser gerada.</p>
<p></p>
<p>Consegui gerar um clock de <strong>80 MHz usando o PLL_D2_clock</strong> e até <strong>64 MHz usando o APLL_clock</strong>. </p>
<p>Esse último permite variações mais precisas na frequência (mais flexível).</p>
<p><a href="https://esp32.com/viewtopic.php?f=18&t=14185">https://esp32.com/viewtopic.php?f=18&t=14185</a></p>
<p></p>
<p>Pesquisando no Forum do ESP32, encontrei esse projeto de um Analisador Lógico com o ESP32:</p>
<p><a href="https://esp32.com/viewtopic.php?f=19&t=14135&start=20&sid=7d7eb9e5bba15aa331d1e5b6ca056d28">https://esp32.com/viewtopic.php?f=19&t=14135&start=20&sid=7d7eb9e5bba15aa331d1e5b6ca056d28</a>4</p>
<p>(não testei ainda). </p>
<p></p>
<p></p> No caso do esp32 você poder u…tag:labdegaragem.com,2020-02-19:6223006:Comment:7275062020-02-19T21:30:08.386ZA.A.S.https://labdegaragem.com/profile/AAS
<p>No caso do esp32 você poder usar um núcleo exclusivamente para ler as portas, acredito que dessa forma consiga uma taxa de amostragem melhor que a do teste que você fez.<br></br> Pra isso é necessário desabilitar todas tasks e interrupts daquele core.<br></br> vTaskSuspendAll(); // suspende as tasks<br></br> portDISABLE_INTERRUPTS(); // desabilita interrupts<br></br> <br></br> O método acima não impede que o outro core acesse a memoria compartilhada, nesse caso tem de usar spinlock para proteger de acesso…</p>
<p>No caso do esp32 você poder usar um núcleo exclusivamente para ler as portas, acredito que dessa forma consiga uma taxa de amostragem melhor que a do teste que você fez.<br/> Pra isso é necessário desabilitar todas tasks e interrupts daquele core.<br/> vTaskSuspendAll(); // suspende as tasks<br/> portDISABLE_INTERRUPTS(); // desabilita interrupts<br/> <br/> O método acima não impede que o outro core acesse a memoria compartilhada, nesse caso tem de usar spinlock para proteger de acesso simultâneo :<br/> portMUX_TYPE myMutex = portMUX_INITIALIZER_UNLOCKED;<br/> taskENTER_CRITICAL(&myMutex);</p>
<p>// seção critica variaveis compatilhada<br/> taskEXIT_CRITICAL(&myMutex);<br/><br/>quando taskENTER_CRITICAL é executado, bloqueia todas tasks e interrupt daquele core e caso outro core que tente executar taskENTER_CRITICAL ele é bloqueado até o primeiro core executar taskEXIT_CRITICAL<br/>enfim, mutex para quem conhece.</p> Boa tarde pessoal.
Continuand…tag:labdegaragem.com,2020-02-01:6223006:Comment:7266122020-02-01T19:09:37.902Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>Boa tarde pessoal.</p>
<p>Continuando na saga do analisador logico. (Chamarei de AL)</p>
<p>Resolvi entender como o Gillham (<a href="https://github.com/gillham/logic_analyzer" rel="nofollow">https://github.com/gillham/logic_analyzer</a>) faz para capturar os </p>
<p>dados para o AL, e verifiquei que para não perder tempo dentro do "for" ele fez</p>
<p>1024 leitura consecutivas guardando cada uma em uma célula da matriz.</p>
<p>Resolvi então medir este tempo de leitura, e comparar com os…</p>
<p>Boa tarde pessoal.</p>
<p>Continuando na saga do analisador logico. (Chamarei de AL)</p>
<p>Resolvi entender como o Gillham (<a rel="nofollow" href="https://github.com/gillham/logic_analyzer">https://github.com/gillham/logic_analyzer</a>) faz para capturar os </p>
<p>dados para o AL, e verifiquei que para não perder tempo dentro do "for" ele fez</p>
<p>1024 leitura consecutivas guardando cada uma em uma célula da matriz.</p>
<p>Resolvi então medir este tempo de leitura, e comparar com os tempos de leituras de outros processadores.</p>
<p>Escrevi um sketch bem básico e o mais limpo possível.</p>
<p>Os resultado foram surpreendentes.</p>
<p>A minha conclusâo: nem o ESP8266 e nem o ESP32 são mais rápidos do que o Atmega328 ao manusear ports.</p>
<p></p>
<p>Resultados encontrados:</p>
<p></p>
<p>ESP8266<br/>1908 useg gastos pelo ESP8266 para ler um port 1000 vezes.<br/>Media de 1908 nseg por leitura. </p>
<p>Possibilidade de leitura de pulsos á frequência de 524 KHz.<br/><br/></p>
<p>ESP32 GPIO<br/>353 useg gastos pelo ESP32_GPIO para ler um port 1000 vezes.<br/>Media de 353 nseg por leitura. </p>
<p>Possibilidade de leitura de pulsos á frequência de 2.833 KHz. </p>
<p>ESP32 IOMUX<br/>115 useg gastos pelo ESP32_IOMUX para ler um port 1000 vezes.<br/>Media de 115 nseg por leitura.</p>
<p>Possibilidade de leitura de pulsos á frequência de 8.696 KHz.</p>
<p>Atmega328<br/>64 useg gastos pelo Arduino para ler um port 1000 vezes.<br/>Media de 64 nseg por leitura.</p>
<p>Possibilidade de leitura de pulsos á frequência de 15.625 KHz.</p>
<p></p>
<p>Para prosseguir com o projeto, só mesmo usando o DMA do ESP32, mas que tem se mostrado</p>
<p>muito complexo e até agora não obtive resultados conclusivos.</p>
<p>Abaixo sketch usado para os testes.</p>
<p>Qualquer critica é aceita de bom grado.</p>
<p>RV</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/3843301069?profile=original" target="_blank" rel="noopener">TimeSample.ino</a></p> Na verdade o clock master da…tag:labdegaragem.com,2020-02-01:6223006:Comment:7267082020-02-01T13:56:54.411ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Na verdade o clock master da Interface I2S é o i2Sn CLK que pode ser derivado do PLL D2 Clock ou do APLL Clock. </p>
<p></p>
<p>12.3 The Clock of I²S Module</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/3843013789?profile=original" rel="noopener" target="_blank"><img class="align-full" src="https://storage.ning.com/topology/rest/1.0/file/get/3843013789?profile=RESIZE_710x"></img></a></p>
<p></p>
<p>A relação entre a frequência I2Sn_CLK fi2s e a frequência da fonte divisória do relógio fpll pode ser vista no<br></br>equação abaixo:…</p>
<p></p>
<p></p>
<p>Na verdade o clock master da Interface I2S é o i2Sn CLK que pode ser derivado do PLL D2 Clock ou do APLL Clock. </p>
<p></p>
<p>12.3 The Clock of I²S Module</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/3843013789?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3843013789?profile=RESIZE_710x" class="align-full"/></a></p>
<p></p>
<p>A relação entre a frequência I2Sn_CLK fi2s e a frequência da fonte divisória do relógio fpll pode ser vista no<br/>equação abaixo:</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/3843014844?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3843014844?profile=RESIZE_710x" class="align-center" width="233" height="127"/>// Configurar a configuração do Bit Clock - I2S_CLKM_CONF_Register</a></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/3843014844?profile=original" target="_blank" rel="noopener"><br/> I2S0.clkm_conf.clkm_div_a = 1; // valor do denominador do divisor de relógio fracionário<br/> I2S0.clkm_conf.clkm_div_b = 0; // valor do numerador do divisor de relógio fracionário<br/> I2S0.clkm_conf.clkm_div_num = 2; // Valor integral do divisor de relógio I2S<br/></a></p>
<p></p>
<p></p> Vejam como é complexo o APLL…tag:labdegaragem.com,2020-02-01:6223006:Comment:7266072020-02-01T12:16:54.644ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Vejam como é complexo o APLL Clock do ESP32 :</p>
<p>(Google Tradutor) </p>
<p></p>
<p><strong>3.2.2 Clock Source</strong></p>
<p>PLL_CLK é um relógio interno da PLL com uma frequência de 320 MHz.</p>
<p>APLL_CLK é um relógio interno de áudio PLL com uma faixa de frequência de 16 a 128 MHz.</p>
<p></p>
<p><strong>3.2.4.4 APLL_SCLK Source</strong></p>
<p>O APLL_CLK é originário do PLL_CLK, com sua frequência de saída configurada usando a configuração dos registradores do APLL. PLL…</p>
<p>Vejam como é complexo o APLL Clock do ESP32 :</p>
<p>(Google Tradutor) </p>
<p></p>
<p><strong>3.2.2 Clock Source</strong></p>
<p>PLL_CLK é um relógio interno da PLL com uma frequência de 320 MHz.</p>
<p>APLL_CLK é um relógio interno de áudio PLL com uma faixa de frequência de 16 a 128 MHz.</p>
<p></p>
<p><strong>3.2.4.4 APLL_SCLK Source</strong></p>
<p>O APLL_CLK é originário do PLL_CLK, com sua frequência de saída configurada usando a configuração dos registradores do APLL. PLL Clock.</p>
<p></p>
<p><strong>3.2.7 Audio PLL</strong></p>
<p>A operação de áudio e outros aplicativos de transferência de dados críticos em termos de tempo, requer alta configurabilidade, baixa instabilidade, e fontes de relógio precisas. As fontes de relógio derivadas dos relógios do sistema que servem periféricos digitais podem ter jitter de transporte e, portanto, eles não suportam uma configuração de freqüência de relógio de alta precisão.<br/>Fornecer uma fonte de relógio de precisão integrada pode minimizar o custo do sistema. Para este fim, o ESP32 integra um áudio PLL destinado a periféricos I2S. Mais detalhes sobre como cronometrar o módulo I2S, usando um relógio APLL, podem ser encontrado no capítulo I2S. A fórmula do Audio PLL é a seguinte:</p>
<p></p>
<p><strong>apll_freq = xtal_freq * (4 + sdm2 + sdm1/256 + sdm0/65536)/((o_div + 2) * 2)</strong></p>
<p><br/> *<br/> * The dividend in this expression should be in the range of 240 - 600 MHz.<br/> *<br/> * In rev. 0 of ESP32, sdm0 and sdm1 are unused and always set to 0.<br/> *<br/> * @param enable true to enable, false to disable<br/> * @param sdm0 frequency adjustment parameter, 0..255<br/> * @param sdm1 frequency adjustment parameter, 0..255<br/> * @param sdm2 frequency adjustment parameter, 0..63<br/> * @param o_div frequency divider, 0..31</p>
<p></p>
<p>xtal: a frequência do oscilador de cristal, geralmente 40 MHz;</p>
<p></p>
<p>Pasta da Biblioteca ESP32-Arduino que usei para configurar o APLL Clock: </p>
<p><a rel="nofollow noopener" href="https://github.com/espressif/arduino-esp32/blob/a59eafbc9dfa3ce818c110f996eebf68d755be24/tools/sdk/include/soc/soc/rtc.h" target="_blank">https://github.com/espressif/arduino-esp32/blob/a59eafbc9dfa3ce818c...</a></p>
<p></p>
<p><strong>Exemplo 1) Para gerar um clock de 60 MHz no APLL:</strong></p>
<p>sdm0= 0 sdm1= 0 sdm2= 2 o_div= 0</p>
<p>apll_freq = xtal_freq * (4 + sdm2 + sdm1/256 + sdm0/65536)/((o_div + 2) * 2)<br/>apll_freq = 40 Mhz * (4 + 2 + 0 + 0) / (0+2)*2 = 40 * 6 / 4 = 60 MHz</p>
<p></p>
<p></p> Bom dia a todos,
Tenho estud…tag:labdegaragem.com,2020-02-01:6223006:Comment:7267022020-02-01T11:57:45.083ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Bom dia a todos, </p>
<p>Tenho estudado muito sobre o ESP32. </p>
<p>Estou estudando em partes, pois o ESP32 é muito complexo e o manual de referência técnica tem mais de 600 páginas!.</p>
<p>O que eu já descobri é que esse manual é incompleto e possui alguns erros. </p>
<p></p>
<p><strong>ESP32 Technical Reference Manual…</strong></p>
<p></p>
<p>Bom dia a todos, </p>
<p>Tenho estudado muito sobre o ESP32. </p>
<p>Estou estudando em partes, pois o ESP32 é muito complexo e o manual de referência técnica tem mais de 600 páginas!.</p>
<p>O que eu já descobri é que esse manual é incompleto e possui alguns erros. </p>
<p></p>
<p><strong>ESP32 Technical Reference Manual</strong></p>
<p><a rel="nofollow noopener" href="https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf" target="_blank">https://www.espressif.com/sites/default/files/documentation/esp32_t...</a></p>
<p></p>
<p>Ainda bem, que muito mais informação complementar pode ser encontrada no <strong>Github do ESP32- Arduino:</strong></p>
<p><a rel="nofollow" href="https://github.com/espressif/arduino-esp32">https://github.com/espressif/arduino-esp32</a></p>
<p></p>
<p>Ou no <strong>Github ESP32-IDF</strong>:</p>
<p><a rel="nofollow" href="https://github.com/espressif/esp-idf">https://github.com/espressif/esp-idf</a></p>
<p></p>
<p>Estou aprendendo como mostrar o conteúdo dos registradores, como setar ou resetar os bits dos registradores e como selecionar as pastas das bibliotecas correspondentes à essas funções! Muito legal. </p>
<p></p>
<p>No momento estou estudando como configurar o Audio PLL Clock do ESP32. Os inúmeros clocks do ESP32 tem inúmeros recursos. São fantásticos! Teoricamente é possível gerar pulsos de clock de várias maneiras e com frequências de até 128 Mhz! Incrível. </p>
<p></p>
<p>Esse <strong>APLL Clock</strong> é o clock master usado na interface I2S. </p>
<p></p>
<p>Se quiser aprender mais sobre <strong>interface I2S:</strong></p>
<p><a rel="nofollow" href="https://en.wikipedia.org/wiki/I%C2%B2S">https://en.wikipedia.org/wiki/I%C2%B2S</a></p>
<p></p>
<p>Esse manual da Especificação o <strong>I2S BUS</strong> também é muito importante:</p>
<p><a rel="nofollow" href="https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf">https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf</a></p>
<p></p>
<p><strong>PLL Sintetizador de frequências</strong> :</p>
<p><a href="https://www.analog.com/en/analog-dialogue/articles/pll-synthesizers.html">https://www.analog.com/en/analog-dialogue/articles/pll-synthesizers.html</a></p>
<p></p> Links importantes para estudo…tag:labdegaragem.com,2020-01-18:6223006:Comment:7257552020-01-18T22:48:00.395ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Links importantes para estudos :</p>
<p></p>
<p><span style="font-size: 12pt;"><strong>I2S bus specification</strong></span></p>
<p><a href="https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf" rel="nofollow">https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf</a></p>
<p></p>
<h1><span style="font-size: 12pt;"><strong>ESP32 Camera Driver…</strong></span></h1>
<p></p>
<p>Links importantes para estudos :</p>
<p></p>
<p><span style="font-size: 12pt;"><strong>I2S bus specification</strong></span></p>
<p><a rel="nofollow" href="https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf">https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf</a></p>
<p></p>
<h1><span style="font-size: 12pt;"><strong>ESP32 Camera Driver</strong></span></h1>
<p><a rel="nofollow" href="https://github.com/espressif/esp32-camera">https://github.com/espressif/esp32-camera</a></p>
<p></p>
<p><span style="font-size: 12pt;"><strong>OV2640DS datasheet - camera 2 MegaPixels </strong></span></p>
<p><a rel="nofollow" href="https://www.uctronics.com/download/cam_module/OV2640DS.pdf">https://www.uctronics.com/download/cam_module/OV2640DS.pdf</a></p>
<p></p>
<p><span style="font-size: 12pt;"><strong>ESP32 API Reference - I2S </strong></span></p>
<p><a rel="nofollow" href="https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/i2s.html">https://docs.espressif.com/projects/esp-idf/en/latest/api-reference...</a></p>
<p></p>
<p></p> Lendo a biblioteca esp32-came…tag:labdegaragem.com,2020-01-18:6223006:Comment:7258362020-01-18T15:35:37.476ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<h1 class="entry-title"><span style="font-size: 10pt;"><strong><font>Lendo a biblioteca esp32-camera-OV2640, SCCB, DMA, I2S edition</font></strong></span></h1>
<p><span style="font-size: 10pt;"><a href="https://www.mgo-tec.com/blog-entry-sccb-dma-i2s-esp32-ov2640.html/6"><font>https://www.mgo-tec.com/blog-entry-sccb-dma-i2s-esp32-ov2640.html/6</font></a></span></p>
<p><span style="font-size: 10pt;"><font>(use o tradutor do navegador Chrome)…</font></span></p>
<p></p>
<p></p>
<h1 class="entry-title"><span style="font-size: 10pt;"><strong><font>Lendo a biblioteca esp32-camera-OV2640, SCCB, DMA, I2S edition</font></strong></span></h1>
<p><span style="font-size: 10pt;"><a href="https://www.mgo-tec.com/blog-entry-sccb-dma-i2s-esp32-ov2640.html/6"><font>https://www.mgo-tec.com/blog-entry-sccb-dma-i2s-esp32-ov2640.html/6</font></a></span></p>
<p><span style="font-size: 10pt;"><font>(use o tradutor do navegador Chrome)</font></span></p>
<p></p>
<p><span style="font-size: 13.3333px;">Esse japonês demorou 6 meses para desenvolver esse programa. O cara não é um especialista, mas é muito esforçado e conseguiu. Ele usou I2S DMA com frequência de 20 MHz, para capturar os 8 bits e mais alguns bits de controle da camera de video. Boa referência para o uso de I2S DMA usando Arduino IDE. </span></p>
<p></p>
<p><span style="font-size: 13.3333px;"><iframe width="560" height="315" src="https://www.youtube.com/embed/HkEX-xJ1FJM?wmode=opaque" frameborder="0" allowfullscreen=""></iframe>
</span></p>