Olá a todos.

A um tempo atrás adquiri duas telinhas de lcd com comunicação distinta (paralelo e spi) para conhecer.

LCD TFT 2.4" Touchscreen Shield para Arduino | Baú da Eletrônica (paralelo)

2.4inch SPI Module ILI9341 SKU:MSP2402 - LCD wiki ( SPI )

As duas foram fáceis de usar. No inicio brinquei um pouco com a paralela, pois usava o arduino, bastava encaixar. Depois de um tempo migrei para o esp32 e, por já ter biblioteca pronta para spi, adotei o spi.

Atualmente estou com essa telinha com comunicação paralela jogada aqui no canto, e gostaria de da uma utilidade, toda via, não da pra usar com o arduino uno pois consome TODOS os pinos (isso é terrível).

Sendo assim, existiria alguma forma de "convertermos" a comunicação paralela para spi? talvez usando algum ci? Existe algo pronto?

Exibições: 590

Responder esta

Respostas a este tópico

Oi Tiago,

Algo como um shift register?

Vamos por partes:

SPI usa 4 sinais: MISO, MOSI, SCLK e SS.

Para comunicar da placa para o LCD SPI, em uma única direção, podemos descartar o MISO e SS.

Ficamos com uma comunicação serial baseada no MOSI e SCLK que indica a transição dos dados.

Do lado do LCD Paralelo temos:

D0 a D7 : 8 bits de dados

Sinais RD, WR, D/C e CS. Novamente somente vamos escrever, portanto usaremos apenas o WR (ativo em LOW->HIGH), o pino D/C (ou RS).

Deixaremos CS sempre em GND (ativo em LOW). Vamos ignorar RD deixando em HIGH.

Para traduzir Serial (SPI) em Paralelo usamos um shift register como o CMOS 74164.

Agora a cada 8 bits, precisa baixar WR para LOW e uns 15ns depois subir para HIGH. Talvez usar um chip contador, como o CMOS 4022 para usar a saída O7 como WR?

Esse é o "clock, engatado na subida de LOW->HIGH" do D0..D7 paralelo.

Além disso precisa dizer se o byte a ser escrito é Dados ou Comando para o LCD, via pino D/C (chamado de DC ou RS - Regiter Select). Felizmente o display via SPI  também possui um pino como o DC (ou RS), portanto... seria questão de usar o pino destinado ao DC no RS do parelelo.

Mais informações sobre o ILI9341 (que parece ser o seu LCD paralelo):

https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf

Na pior das hipóteses... seria possível escrever um programa no Arduino que rode em um Arduino Pro Mini, por exemplo, para fazer essa conversão SPI -> 8080 Paralelo via software.

Lembrando que o CI 74164 precisa de um pulso de Latch, que poderia ser do próprio contador (CI 4022), desde que o timing das coisas seja síncrono. O contador também poderia gerar o sinal de WR do 8080 (interface paralela). Ou mesmo limitar as transações SPI a 8 bits por vez e adicionar via código um pino de Latch/WR.

Muitas opções, porém nada testado... seria bom usar um Data Analizer para ver os sinais, tempos e suas transições a fim de garantir o sincronismo dos vários sinais digitais de controle.

Todos os CIs e Arduino deveriam estar sincronizados via SCLK, que é o clock da porta SPI.

Outro detalhe bem importante é a frequência do SCLK... o CI 4022, se não me falha a memória chega a apenas 4MHz de clock, o que limitaria a velocidade da interface SPI. Tem que olhar todos os datasheets ligados a esses CIs.

Na minha opinião, apesar de usar muitos pinos, a interface paralela 8080 consegue, com o código correto, ser a mais rápida. SPI->paralelo, implicaria no máximo em uma velocidade de transfência de Bytes/seg de um 1/8 do clock do SPI. Portanto uma porta SPI a 16MHz significa na prática, na mais eficiente alternativa, 2M Bytes por segundo. A interface 8080 paralela, dependendo do chipset do LCD, poderá ser ainda mais rápida. Mas, claro, tudo depende da necessidade da sua aplicação...

Usando um STM32F103 ou um ESP32 com DMA para 8 GPIOs em conjunto com Timers para sinais de clock e disparo do DMA, pode se transformar em uma plataforma imbatível. Se usar o PIO do RP2040 (Raspberry Pi Pico), então .... ficaria um luxo!

Rodrigo Corbera

Não vou mentir, questionei na esperança de reduzir meu trabalho ou não descartar o material que tenho em mãos, mas fiquei um pouco assustado com a informação e precisei ler algumas vezes em dias separados para entender um pouco.

Vou colocar na lista para aprender depois de concluir o que já esta na fila.

Mas agradeço o seu apoio.

Legal!

Para registro de um resumo do que escrevi:

- caso a necessidade seja velocidade de Frames/segundo no Display, a interface paralela é a mais indicada por chegar a taxas de transferência mais altas em Bits/Segundo.

- caso a necessidade seja usar o mínimo de pinos, a SPI é a mais indicada. A velocidade máxima da SPI varia com o modelo do LCD, mas em geral todos aceitam algo em torno de 16Mbps.
- Para usar a interface paralela (6800 / 8080) de forma serial (um único pino ao invés de 8 pinos), a forma mais simples é acoplar um CI Shift Register e controlá-lo via microcontrolador.

Boa noite TM,

Quais são os tipos (modelo) das placas? (Principalmente a paralela)?

Dê mais informações sobre as placas para que possamos analisar e se possível sugerir alguma solução.

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço