Saya sudah mencoba menemukan deskripsi yang baik dari serial TTL "standar" tanpa banyak keberuntungan. Saya mengerti bahwa serial mentransmisikan (TX) dan menerima (RX) baris idle high (at VCC) dan bahwa mereka jatuh ke tanah ketika sedikit ditransmisikan. Dengan demikian, mereka terbalik dari norma, di mana "1" tinggi dan "0" rendah.
Apa yang saya tidak mengerti adalah siapa yang bertanggung jawab untuk memegang garis tinggi dan bagaimana nol ditransmisikan. Apakah pengirim mengarahkan saluran ke tinggi dan rendah? Atau apakah penerima memegang garis tinggi dengan pengirim menarik garis rendah (kolektor terbuka)?
microcontroller
serial
ttl
blalor
sumber
sumber
Jawaban:
Dengan serial TTL, ada dua jalur data searah. Masing-masing digerakkan oleh pengirim, baik tinggi maupun rendah. 0 bit diwakili oleh 0V 1 bit oleh VCC.
Pin penerima harus diatur ke input.
Jadi, bagi mikrokontroler untuk mengirim byte (8-N-1 tanpa kontrol aliran) dapat melakukan sesuatu seperti ini:
(Kode ini sedikit terbaca karena aslinya dimaksudkan untuk serial TTL terbalik)
Tentu saja, sebagian besar MCU memiliki UART perangkat keras yang melakukan semua ini untuk Anda.
Inilah yang akan Anda lihat pada cakupan:
https://www.pololu.com/docs/0J25/4.a
Berikut video hebat dari ladyada yang menjelaskan serial: http://www.adafruit.com/blog/2010/09/15/usb-serial-and-you-video-an-adafruit-after-school-special/
sumber
Anda tidak mengatakan banyak kata, tetapi "idle high" menunjukkan bahwa Anda bermaksud UART. UART adalah point-to-point yang terhubung ke line-transceiver, seperti MAX232 yang ada di mana-mana tetapi bertanggal (ada solusi yang jauh lebih baik saat ini). Garis antara mikrokontroler dan transceiver juga akan pendek; jika ada jarak yang harus dijembatani maka akan berada di antara transceiver.
Output pengendali adalah push-pull.
P-MOSFET akan memberikan level tinggi, N-MOSFET level rendah. Salah satunya harus aktif atau level garis akan mengambang dan tidak terdefinisi (atau ditentukan oleh beban dalam transceiver). Keduanya dapat sumber / menenggelamkan beberapa arus dan akan menarik garis ke rel, sehingga bentuk sinyal hampir ideal.
Yang akan berbeda jika itu benar-benar TTL, seperti dalam pertanyaan Anda (mikrokontroler adalah HCMOS). Output TTL sangat asimetris: mereka hanya dapat memasok sedikit arus, biasanya 0,4mA. Tenggelam saat ini OK, pada 8mA. Sumber arus yang rendah mungkin menjadi masalah jika saluran memiliki kapasitansi tinggi dan kecepatan tinggi. Arus drive rendah berarti kapasitansi hanya akan mengisi daya secara relatif lambat, dan tepi yang naik akan lambat, yang pada kecepatan tinggi dapat menyebabkan distorsi sinyal yang serius. TTL tidak pernah digunakan untuk ini.
Pertanyaan Anda juga dapat merujuk ke saluran multidrop , tempat beberapa perangkat dapat berbicara. Dalam hal ini Anda tidak dapat menggunakan output push-pull: jika satu perangkat akan mendorong saluran tinggi sementara yang lain mendorong rendah, kami akan mengalami korsleting. Garis multidrop hampir selalu menggunakan resistor pull-up untuk menjaga garis tetap tinggi. Maka hanya level rendah yang membutuhkan garis penggerak, dan alih-alih output push-pull kita akan memiliki saluran terbuka, hanya dengan N-MOSFET. Jalur sekarang juga didorong secara asimetris: resistor pull-up hanya dapat memberikan sedikit arus, sedangkan FET pull-down dapat mendorong garis cepat ke ground. Oleh karena itu, saluran multidrop kecepatan tinggi membatasi resistor pull-up. Contohnya adalah I2C.
sumber