Saya membuat program sederhana dalam Visual C # yang berkomunikasi dengan AVR melalui chip FT232RL.
PC <-> FTDI <-> MCU.
Saya menggunakan FTD2XX_NET.dll untuk akses langsung ke Perangkat USB.
Saya bertanya-tanya, apa perbedaan antara sepasang FTDI-AVR dan AVR tunggal dengan USB Controller bawaan? Saya pikir pasti ada beberapa perbedaan dalam kecepatan komunikasi. Apa lagi yang berbeda?
Jawaban:
Ada beberapa alasan, tetapi mereka, setidaknya bagi kebanyakan orang, cukup niche.
Alasan yang saya lihat dan alami
Namun, dengan perpustakaan USB yang siap digunakan, biaya signifikan jembatan FTDI USB (biasanya lebih mahal daripada AVR yang sangat canggih) dan tidak ada penalti kinerja di sebagian besar aplikasi, sangat sulit untuk membenarkan chip FTDI saat ini jika Anda memiliki kontrol penuh atas perangkat keras dan firmware.
sumber
tl;dr
paragraf yakin adalah kejutan berakhir ... Anda sampah-berbicara USB / tumpukan seri firmware-satunya (meskipun dengan poin yang sangat valid), dan kemudian BAM ... "hanya idiot akan menggunakan FTDI". Lucu sekali. Menyukainya!Ada keuntungan menggunakan chip USB yang terpisah, dan membiarkan AVR berkomunikasi melalui UART-nya.
Tumpukan USB harus merespons polling dari PC host. Ini terjadi setidaknya setiap milidetik. Itu berarti bahwa bahkan lebih sulit untuk menjamin respons waktu nyata yang sulit untuk peristiwa, karena MCU mungkin akan terganggu untuk menanggapi jajak pendapat USB host.
Ketika tidak ada apa pun untuk dikomunikasikan, atau MCU ingin fokus penuh pada tugas waktu nyata, ia masih harus menanggapi beberapa acara pemungutan suara host USB, atau tuan rumah akan 'kehilangan' perangkat. Jadi sulit untuk diabaikan. Chip USB khusus, seperti FTDI melepas tugas-tugas dari AVR.
Masalah kecil adalah tumpukan USB akan mengkonsumsi cukup banyak memori flash dan RAM, sehingga chip tersebut membutuhkan lebih banyak sumber daya daripada AVR sederhana.
Juga, dua bagian dapat dipisahkan menjadi dua papan, sehingga USB bukan biaya tetap, tetapi mungkin dibagi di beberapa papan.
Di sisi sebaliknya, manfaat utama menggunakan AVR dengan perangkat USB dan tumpukan USB bawaan adalah hanya ada satu bagian untuk dibeli, dan dipasang.
Saya belum memeriksa baru-baru ini, tapi saya percaya chip FTDI yang lebih baru memberikan kecepatan transfer data USB yang lebih tinggi daripada AVR's USB. Namun, AVR UART sangat lambat sehingga AVR dengan USB lebih cepat ditransfer daripada kombinasi FTDI (atau antarmuka USB apa pun) yang berkomunikasi melalui AVR AVR karena AVR UART yang lambat.
Sunting: FTDI membuat antarmuka lain selain UART. Misalnya SPI. Saya tidak punya pengalaman menggunakannya. Beberapa AVR mendukung 9 (mungkin 12) transfer SPI megabit. FTDI adalah master SPI, yang tidak ideal. Jika AVR mentransmisikan, itu mungkin baik-baik saja. Karena FTDI memang memiliki buffer, tetapi menerima mungkin 'seperti minum dari selang kebakaran'. AFAIK, Anda harus melakukan pekerjaan pada PC host untuk membuatnya bekerja.
Transfer kecepatan tertinggi mungkin melalui papan Ethernet Ethernet 100MB, tapi saya belum melihat pengukuran throughput.
Saya senang menggunakan mikrokontroler selain AVR. Jadi saya mungkin menggunakan sesuatu dengan UART cepat dan pengontrol DMA yang dapat memindahkan karakter tanpa keterlibatan CPU. Jika itu adalah pendekatan yang bermanfaat, mungkin lihat Arduin Due, atau mbed, ST mb disebut nucelo yang berbiaya rendah.
sumber