Qual microcontrolador pode se conectar diretamente a uma porta USB?

9

Essencialmente, eu só preciso enviar alguns dados para o microcontrolador via USB, então o microprocessador decodifica os dados e aciona uma faixa de luz LED, que funciona a 5V. Estou tendo problemas para encontrar o microcontrolador certo para o trabalho.

O microcontrolador só precisa ter 2 portas seriais para comunicação USB, duas portas seriais para comunicação com a faixa de LEDs e poder operar em 5V. Parece desnecessário ter um IC dedicado para comunicação USB quando tudo o que preciso é de uma porta COM serial configurada.

Por exemplo, aqui está o trecho de código do Arduino que grava um byte na faixa LPD8806:

void write8(uint8_t d) {
  for (uint8_t i=0; i<8; i++) {
    if (d & _BV(7-i))
      digitalWrite(dataPin, HIGH);
    else
      digitalWrite(dataPin, LOW);
   digitalWrite(clockPin, HIGH);
   digitalWrite(clockPin, LOW); 
  }
}

Para bloquear os dados, você envia zeros para a faixa.

Steve Barna
fonte
Eu acho que você quer dizer uma conexão USB (eles são bidirecionais) e uma conexão serial (também bidirecional). Se você gosta de fotos, a família 18f4550 fará o trabalho.
Scott Seidman
11
Qual é o protocolo para a faixa de LED? Você pode adicionar um link para a folha de dados ou o site da tira?
Rocketmagnet
@Rocketmagnet É essa faixa de LED . A folha de dados é em chinês, no entanto, há simplesmente uma entrada serial e uma entrada de relógio, e você trava enviando zeros na linha.
9788 Steve Barna #

Respostas:

7

Eu acho que por "duas portas de saída serial" você quer dizer um UART (já que você também descreve USB como 2 portas). O Rocketmagmet indica que muitas / a maioria das cordas de LED usam SPI, mas isso precisará de pelo menos 3 fios. Você pode especificar qual protocolo você precisa?

Em geral, o Microchip possui microcontroladores de menor custo, também desta vez. E a Microchip também possui muitos microcontroladores no pacote DIL, enquanto muitos outros descartaram isso. Pode ser importante para DIY. O PIC18F13K50

  • existe nos pacotes DIL-20 e SMT
  • trabalha a 5 V (para interface com a faixa de LED)
  • é de baixo custo a US $ 2,5 (OK, isso é relativo, mas os controladores com capacidade USB são um pouco mais caros que os tipos mais básicos)
  • aprimorou a interface USART para UART
  • possui uma interface SPI, caso você queira
  • possui fonte de 25 mA e E / S de dissipador, para que você possa acionar diretamente alguns LEDs indicadores, se necessário

Leitura adicional
Função genérica USB em um dispositivo incorporado , nota de aplicação de microchip AN1166

stevenvh
fonte
Ele menciona tiras de LED, então presumo que seja um protocolo síncrono (basicamente SPI sem o pino de retorno de dados). Esse PIC possui apenas 1 porta SPI, portanto não seria adequado. Embora ele pudesse estragar o protocolo.
Rocketmagnet
@Rocket - onde ele diz que é SPI? E ele não precisará de dois barramentos SPI: o SPI é multi-escravo. E, como Scott comentou e eu também disse no início da minha resposta, acho que por duas portas ele quer dizer dois pinos, por isso pensei primeiro no UART.
Stevenvh 9/10/12
Talvez o PIC18F24J50? Mas é uma parte de 3.3v, então não sei se ele fará interface com a faixa de LED.
Rocketmagnet
11
Ele não diz que é SPI, mas eu já usei tiras de LED antes, e elas sempre foram síncronas. Eu poderia estar errado. Ele pode significar outro tipo de tira de LED que eu nunca vi antes. Eu acho que ele quer dizer dois pinos para relógio e dados.
Rocketmagnet
Na verdade, eu li mal a pergunta e pensei que ele tinha dito duas tiras de LED! Na verdade, ele disse dois pinos para uma faixa de LED. Então, er, como você estava com a sugestão original.
Rocketmagnet
4

Sua faixa de LED possui uma interface serial simples. Se você está apenas tentando controlá-lo com um computador, pode usar um chip FTDI para mover os pinos: http://www.ftdichip.com/Products/ICs/FT232R.htm

Em seguida, a complexidade está no lado do PC usando libftdi ou D2XX bibliotecas. Mas não é tão ruim, complexidade semelhante ao seu exemplo do Arduino.

Se você não gosta de fazer hardware, pode comprar cabos pré-fabricados com o chip FTDI de distribuidores FTDI como Mouser ou Sparkfun etc. Os cabos estão disponíveis em diferentes configurações de tensão, portanto, faça o pedido com cuidado.

Obviamente, se você deseja que o projeto seja autônomo ou autônomo de alguma forma, desejará uma solução completa de microcontrolador.

markrages
fonte
Devo considerar o envio de dados SPI brutos para a faixa de LEDs através de um controlador USB. O Microchip faz um USB para SPI que se configura como um dispositivo HID, enquanto os chips FTDI são VCOM ou D2XX e não tenho certeza de qual seria o melhor para executar uma faixa de luz de um programa c ++.
9788 Steve Barna #
Não conheço uma ponte USB <-> SPI que aparece como uma porta serial virtual, como os chips ponte USB <-> UART. Em vez disso, você precisará escrever um código de troca de bits, o que é fácil para o SPI.
markrages
3

Considere usar o PSoC3 .

PSoc3

Eles estão disponíveis com USB e quase todos os periféricos que você deseja. (Eles estão configurados em software) Você certamente poderá ter duas portas seriais para as faixas de LED. Você provavelmente terá 20, se quiser.

O ambiente de desenvolvimento também é uma alegria de usar.

Criador de PSoC

Rocketmagnet
fonte
3
Bem, isso parece um pouco exagerado. Mas eu vou investigar.
9788 Steve Barna #
8
@Rocket - vejo no Digikey que um PSOC custa mais que o dobro do PIC que mencionei. Não duvido que valham seu peso em ouro (como figura de linguagem), se você precisar de todos esses periféricos configuráveis, para soluções que não encontrará em nenhum outro microcontrolador, como 16 UART ou mais. Mas o OP parece precisar apenas de uma porta USB e uma porta serial (UART, SPI ou I2C), então é muito mais barato escolher um controlador relativamente low-end que possua exatamente isso.
Stevenvh 9/10/12
@stevenvh - Concordo, os PSoCs podem ser dolorosamente caros. Eles realmente valem a pena para produção quando você pode tirar proveito de suas muitas funções. Mas para a prototipagem, eles valem totalmente a pena. Você nunca precisa procurar a PIC especial que possui a combinação certa de periféricos e pode implementar alterações de hardware com o clique de um botão!
Rocketmagnet
@Rocket - "implementa alterações de hardware com o clique de um botão". Sim, é o que os caras do Cypress ficavam me dizendo. Não entendi (discuti isso extensivamente com meus colegas, e eles também não): Se, por exemplo, eu preciso de um timer nas minhas aplicações, é provável que eu precise dele o tempo todo, não o jogue fora por um tempo porque eu quero fazer algo diferente com o hardware. Eu fazer apreciar as ferramentas de configuração, como em sua imagem, e eu implorei Motorola (antes de se tornarem Freescale) vezes rhousand para adicionar uma pequena FPGA para seus controladores HC05, mas isso não era ...
stevenvh
@Rocket - (continuação) ... para reconfigurar no aplicativo, que deveria ter um controlador mais flexível durante o desenvolvimento . Nós éramos um grande cliente da Motorola na época e eles nos consultaram para obter idéias sobre como limpar a bagunça do HC05; havia centenas de tipos diferentes, alguns mais bem-sucedidos que outros. Então, sugeri 1) o FPGA e / ou 2) um conjunto de comutadores de ponto cruzado para permitir a conexão de periféricos selecionados à E / S (limitada); o hardware estava no dado de qualquer maneira. Nada aconteceu, e A Motorola não fazer controladores mais ...
stevenvh
0

Não pode ficar mais simples que isso: ATmega8U2 .

Para finalizar, você ainda pode usá-lo com o gerenciador de inicialização Arduino ...

Folha de dados: http://www.atmel.com/Images/doc7799.pdf

(desculpe por ser um pouco conciso, estou digitando no telefone)

ppeterka
fonte
2
Quando você está de volta ao seu PC (não deveria estar "na frente de"?), Você pode elaborar: como essa é a solução mais simples? Tem que ser uma boa história :-), já que o ATmega8U2 é 50% mais caro que o PIC.
Stevenvh 10/10/12
11
Eu sou a favor da linha AVR (especialmente ATmega) porque é possível usar o ambiente do Arduino para prototipagem rápida (o pôster está familiarizado com isso!) E permite ciclos rápidos de correção de testes. Então, otimizo o código manualmente ou até uso um AVR uC menor, como o Tiny2313 (BTW, existem bibliotecas soft-USB para AVRs). Eu queria gostar dos PICs, mas quando os observei (pouco antes de o Arduino decolar), escolhi os AVRs: achei os documentos deles melhores e a comunidade mais forte - apesar de aqui na Hungria, os PICs são historicamente mais suportados. Eu escolheria um ciclo de desenvolvimento mais curto para reduzir o custo na produção em baixo volume.
ppeterka
11
Exatamente por que o voto negativo? Gostaria de explicar?
ppeterka