Mikrokontroler apa yang dapat terhubung langsung ke port USB?

9

Pada dasarnya, saya hanya perlu mengirim beberapa data ke mikrokontroler melalui USB, kemudian mikroprosesor menerjemahkan data dan menggerakkan strip lampu LED, yang berjalan pada 5V. Saya mengalami kesulitan menemukan mikrokontroler yang tepat untuk pekerjaan itu.

Mikrokontroler hanya perlu memiliki 2 port serial untuk komunikasi USB, dua port serial keluar untuk komunikasi dengan strip LED, dan dapat beroperasi pada 5V. Tampaknya tidak perlu memiliki IC khusus untuk komunikasi USB ketika yang saya butuhkan hanyalah port COM serial yang diatur.

Misalnya, di sini adalah potongan kode Arduino yang menulis byte ke strip 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); 
  }
}

Untuk mengunci data yang Anda kirim nol ke strip.

Steve Barna
sumber
Saya pikir maksud Anda satu koneksi USB (dua arah), dan satu koneksi serial (juga dua arah). Jika Anda suka foto, keluarga 18f4550 akan melakukan pekerjaan.
Scott Seidman
1
Apa protokol untuk strip LED? Bisakah Anda menambahkan tautan ke lembar data atau situs web strip?
Rocketmagnet
@Rocketmagnet Ini Strip LED ini . Datasheet dalam bahasa Cina, namun hanya ada serial masuk dan jam masuk, dan Anda mengunci dengan mengirim nol di telepon.
Steve Barna

Jawaban:

7

Saya kira dengan "dua port keluar port" maksud Anda satu UART (karena Anda juga menggambarkan USB sebagai 2 port). Rocketmagmet menunjukkan bahwa banyak / sebagian besar string LED menggunakan SPI, tetapi itu membutuhkan setidaknya 3 kabel. Bisakah Anda menentukan protokol yang Anda butuhkan?

Secara umum Microchip memiliki mikrokontroler biaya terendah, juga saat ini. Dan Microchip memiliki banyak mikrokontroler dalam paket DIL juga, sementara banyak lainnya telah membuangnya. Mungkin penting untuk DIY. The PIC18F13K50

  • ada dalam paket DIL-20 dan SMT
  • bekerja pada 5 V (untuk berinteraksi dengan strip LED)
  • adalah biaya rendah pada $ 2,5 (OK, itu relatif, tapi USB controller mampu yang sedikit lebih mahal daripada jenis yang lebih mendasar)
  • memiliki Enhanced USART untuk antarmuka UART
  • memiliki antarmuka SPI jika Anda menginginkannya
  • memiliki 25 mA sumber dan wastafel I / O, sehingga Anda dapat langsung mengarahkan beberapa indikator LED jika diperlukan

Bacaan lebih lanjut
Fungsi Generik USB pada Perangkat Tertanam , Aplikasi Microchip Note AN1166

stevenvh
sumber
Dia menyebutkan strip LED, jadi saya menganggap itu protokol sinkron (pada dasarnya SPI tanpa pin pengembalian data). PIC itu hanya memiliki 1 port SPI, jadi tidak akan cocok. Meskipun dia bisa menggigit protokol.
Rocketmagnet
@Rocket - di mana dia mengatakan itu SPI? Dan dia tidak akan membutuhkan dua bus SPI: SPI multi-slave. Dan seperti yang dikomentari Scott dan saya juga katakan di awal jawaban saya, saya pikir dengan dua port maksudnya dua pin, itu sebabnya saya memikirkan UART dulu.
stevenvh
Mungkin PIC18F24J50? Tapi itu bagian 3.3V, jadi saya tidak tahu apakah itu akan antarmuka ke strip LED.
Rocketmagnet
1
Dia tidak mengatakan itu SPI, tetapi saya telah menggunakan strip LED sebelumnya, dan mereka selalu sinkron. Saya bisa saja salah. Dia mungkin berarti jenis strip LED yang belum pernah saya lihat sebelumnya. Saya pikir dia berarti dua pin untuk jam & data.
Rocketmagnet
Sebenarnya, saya salah membaca pertanyaan dan berpikir dia mengatakan dua strip LED! Dia benar-benar mengatakan dua pin untuk satu strip LED. Jadi, er, ketika Anda dengan saran aslinya.
Rocketmagnet
4

Strip LED Anda memiliki antarmuka serial sederhana. Jika Anda hanya mencoba mengendalikannya dengan komputer, Anda dapat menggunakan chip FTDI untuk menggoyangkan pin: http://www.ftdichip.com/Products/ICs/FT232R.htm

Kemudian kompleksitasnya ada di sisi PC menggunakan libftdi atau D2XX libraries. Tapi itu tidak terlalu buruk, kompleksitas yang mirip dengan contoh Arduino Anda.

Jika Anda merasa tidak ingin membuat perangkat keras, Anda dapat membeli kabel premade dengan chip FTDI dari distributor FTDI seperti Mouser, atau dari Sparkfun dll. Kabel tersedia dalam konfigurasi tegangan yang berbeda, jadi pesan dengan hati-hati.

Tentu saja, jika Anda ingin proyek itu berdiri sendiri atau mandiri, Anda akan menginginkan solusi mikrokontroler penuh.

markrages
sumber
Saya harus mempertimbangkan mengirim data SPI mentah ke strip LED melalui Pengontrol USB. Microchip membuat USB-ke-SPI yang menetapkan dirinya sebagai perangkat HID, sementara chip FTDI adalah VCOM atau D2XX dan saya tidak yakin mana yang paling cocok menjalankan strip cahaya dari program c ++.
Steve Barna
Saya tidak mengetahui USB <-> SPI bridge yang muncul sebagai port serial virtual seperti USB <-> chip jembatan UART. Sebagai gantinya Anda harus menulis kode bit-banging, yang mudah untuk SPI.
markrages
3

Pertimbangkan untuk menggunakan PSoC3 .

PSoc3

Mereka tersedia dengan USB, dan hampir semua periferal yang Anda inginkan. (Mereka dikonfigurasi dalam perangkat lunak) Anda pasti dapat memiliki dua port serial untuk strip LED. Anda mungkin dapat memiliki 20 jika mau.

Lingkungan pengembangan juga menyenangkan untuk digunakan.

Pencipta PSoC

Roket
sumber
3
Sepertinya itu agak berlebihan. Tapi saya akan memeriksanya.
Steve Barna
8
@Rocket - Saya melihat di Digikey bahwa biaya PSOC lebih dari dua kali PIC yang saya sebutkan. Saya tidak ragu mereka bernilai emas (sebagai kiasan), jika Anda membutuhkan semua periferal yang dapat dikonfigurasi, untuk solusi yang tidak akan Anda temukan di mikrokontroler lain, seperti 16 UART atau lebih. Tetapi OP tampaknya hanya membutuhkan port USB dan port serial (UART, SPI, atau I2C), maka jauh lebih murah untuk memilih controller yang relatif rendah yang hanya memiliki itu.
stevenvh
@stevenvh - Saya setuju, PSoC bisa sangat mahal. Mereka hanya benar-benar layak untuk diproduksi ketika Anda dapat memanfaatkan banyak fungsi mereka. Tetapi untuk prototipe, mereka benar - benar layak. Anda tidak perlu berburu PIC khusus yang memiliki kombinasi periferal yang tepat, dan Anda dapat menerapkan perubahan perangkat keras hanya dengan mengklik tombol!
Rocketmagnet
@Rocket - "mengimplementasikan perubahan perangkat keras dengan mengklik tombol". Ya, itulah yang terus dikatakan oleh orang-orang Cypress. Saya tidak mengerti (saya membahas ini secara luas dengan rekan-rekan saya, dan mereka juga tidak): Jika saya perlu misalnya timer di aplikasi saya kemungkinan adalah saya membutuhkannya sepanjang waktu, tidak membuangnya untuk sementara waktu karena saya ingin melakukan sesuatu yang berbeda dengan perangkat kerasnya. Saya sangat menghargai alat konfigurasi, seperti pada tangkapan layar Anda, dan saya telah memohon Motorola (sebelum menjadi Freescale) beberapa kali untuk menambahkan FPGA kecil ke pengontrol HC05 mereka, tapi itu bukan ...
stevenvh
@Rocket - (lanjutan) ... untuk konfigurasi ulang dalam aplikasi, itu adalah untuk memiliki pengontrol yang lebih fleksibel selama pengembangan . Kami adalah pelanggan besar Motorola pada saat itu, dan mereka berkonsultasi dengan kami untuk mendapatkan ide bagaimana cara membersihkan kekacauan HC05; ada ratusan jenis yang berbeda, beberapa lebih sukses daripada yang lain. Jadi saya menyarankan 1) FPGA, dan / atau 2) array switch crosspoint untuk membiarkan Anda menghubungkan perangkat yang dipilih ke (terbatas) I / O; perangkat kerasnya sudah mati. Tidak ada yang terjadi, dan Motorola tidak membuat pengendali lagi ...
stevenvh
0

Tidak bisa lebih sederhana dari ini: ATmega8U2 .

Selain itu, Anda bahkan dapat menggunakannya dengan bootloader Arduino ...

Lembar Data: http://www.atmel.com/Images/doc7799.pdf

(maaf karena agak ringkas, saya mengetik dari ponsel)

ppeterka
sumber
2
Ketika Anda kembali di belakang PC Anda (bukankah seharusnya "di depan"?) Bisakah Anda menguraikan: bagaimana ini solusi paling sederhana? Ini harus menjadi cerita yang bagus :-), karena ATmega8U2 50% lebih mahal daripada PIC.
stevenvh
1
Saya menyukai garis AVR (esp. ATmega) karena seseorang dapat menggunakan lingkungan Arduino untuk membuat prototipe cepat (poster sudah familiar dengan itu!), Dan memungkinkan siklus perbaikan-pengujian yang cepat. Kemudian saya mengoptimalkan kode secara manual, atau bahkan menggunakan AVR UC yang lebih kecil, seperti Tiny2313 (BTW, ada soft-USB libs untuk AVR). Saya ingin menyukai PIC, tetapi ketika saya melihat mereka (tepat sebelum Arduino lepas landas), saya memilih AVR: Saya menemukan dokumen mereka lebih baik dan komunitas lebih kuat - meskipun di sini di Hongaria, PIC secara historis lebih didukung. Saya akan memilih dev.cycle yang lebih pendek untuk menurunkan biaya dalam produksi volume rendah.
ppeterka
1
Tepatnya mengapa downvote? Mau jelaskan?
ppeterka