Eu fiz um programa simples no Visual C # que se comunica com o AVR via chip FT232RL.
PC <-> FTDI <-> MCU.
Estou usando o FTD2XX_NET.dll para acessar diretamente o dispositivo USB.
Gostaria de saber, qual é a diferença entre um par de FTDI-AVR e um único AVR com controlador USB embutido? Eu acho que deve haver alguma diferença na velocidade da comunicação. O que mais é diferente?
Respostas:
Existem algumas razões, mas elas são, pelo menos para a maioria das pessoas, bastante nicho.
As razões que eu vejo e experimentei
No entanto, com bibliotecas USB prontas para uso, o custo significativo das pontes USB FTDI (geralmente custam mais do que os AVRs de ponta) e sem penalidade de desempenho na maioria dos aplicativos, é muito difícil justificar os chips FTDI hoje em dia se você tenha controle total sobre hardware e firmware.
fonte
tl;dr
parágrafo certeza foi uma surpresa fim ... Você lixo comentada / pilhas de série USB só de firmware (embora com pontos extremamente válidos), e, em seguida, BAM ... "só um idiota iria usar FTDI". Hilário. Amo isso!Há vantagens em usar um chip USB separado e permitir que o AVR se comunique através do seu UART.
Uma pilha USB precisa responder à pesquisa do PC host. Isso acontece pelo menos a cada milissegundo. Isso significa que é ainda mais difícil garantir uma resposta em tempo real aos eventos, pois o MCU pode ser interrompido para responder à pesquisa de USB dos hosts.
Quando não há nada para se comunicar ou o MCU quer se concentrar totalmente em uma tarefa em tempo real, ainda precisa responder a alguns eventos de sondagem USB do host, ou o host 'perderá' o dispositivo. Portanto, é difícil ignorar. Um chip USB dedicado, como um FTDI, descarrega essas tarefas do AVR.
Um pequeno problema é que a pilha USB consumirá uma quantidade razoável de memória flash e RAM; portanto, o chip precisa de mais recursos do que um simples AVR.
Além disso, as duas partes podem ser separadas em duas placas; portanto, o USB não é um custo fixo, mas pode ser compartilhado em várias placas.
Por outro lado, o principal benefício do uso de um AVR com um periférico USB e uma pilha USB integrados é que há apenas uma peça para comprar e montar.
Não verifiquei recentemente, mas acredito que os chips FTDI mais recentes forneceram uma taxa de transferência de dados USB mais alta do que o USB do AVR. No entanto, os UARTs do AVR eram tão lentos que um AVR com USB é uma transferência mais rápida do que a combinação de FTDI (ou qualquer interface USB) que se comunica através do UART do AVR por causa do lento AVR UART.
Edit: O FTDI faz outras interfaces além do UART. Por exemplo SPI. Não tenho experiência em usá-los. Alguns AVRs suportam transferência SPI de 9 (talvez 12) megabits. O FTDI é o mestre SPI, o que não é ideal. Se o AVR estiver transmitindo, pode ser bom. Como os FTDI têm amortecedores, mas receber pode ser 'como beber de uma mangueira de incêndio'. AFAIK, você precisará trabalhar no PC host para fazê-lo funcionar.
A transferência de velocidade mais alta pode ser através de uma placa-filha Ethernet de 100mbits, mas eu não vi medições de taxa de transferência.
Estou feliz em usar outros microcontroladores que não o AVR. Então, eu poderia usar algo com um UART rápido e um controlador DMA que poderiam mover caracteres sem o envolvimento da CPU. Se essa é uma abordagem útil, talvez veja o Arduin Due, ou o mbed, o ST mbed é chamado nucelo, que é de baixo custo.
fonte