Próbowałem znaleźć dobry opis seryjnego „standardu” TTL bez powodzenia. Rozumiem, że szeregowe linie nadawcze (TX) i odbiorcze (RX) są bezczynne wysoko (w VCC) i że opadają na ziemię, gdy bit jest transmitowany. Jako takie są odwrócone od normy, gdzie „1” jest wysokie, a „0” jest niskie.
Nie rozumiem, kto jest odpowiedzialny za utrzymywanie linii wysoko i jak transmitowane jest zero. Czy nadawca ustawia linię na wysoką i niską? Czy odbiorca utrzymuje linię wysoko, a nadawca ciągnie ją nisko (otwarty kolektor)?
microcontroller
serial
ttl
blalor
źródło
źródło
Odpowiedzi:
W przypadku szeregowego TTL istnieją dwie jednokierunkowe linie danych. Każdy jest sterowany przez nadawcę, zarówno wysoki, jak i niski. 0 bit jest reprezentowany przez 0 V, a 1 bit przez VCC.
Pin odbiornika powinien być ustawiony na wejście.
Tak więc, aby mikrokontroler wysłał bajt (8-N-1 bez kontroli przepływu), mógłby zrobić coś takiego:
(Ten kod odczytuje nieco wstecz, ponieważ pierwotnie był przeznaczony dla odwróconego szeregowego TTL)
Oczywiście większość MCU ma sprzętowe UART, które robią to wszystko za Ciebie.
Oto, co zobaczysz na lunecie:
https://www.pololu.com/docs/0J25/4.a
Oto świetny film z ladyady wyjaśniającej serial: http://www.adafruit.com/blog/2010/09/15/usb-serial-and-you-video-an-adafruit-after-school-special/
źródło
Nie wypowiadasz tak wielu słów, ale „bezczynny haj” sugeruje, że masz na myśli UART. UART łączy punkt-punkt z nadajnikami-odbiornikami linii, jak wszechobecny, ale opatrzony datą MAX232 (obecnie są znacznie lepsze rozwiązania). Linia między mikrokontrolerem a urządzeniem nadawczo-odbiorczym również będzie krótka; jeśli będzie do pokonania odległość, będzie ona między odbiornikami.
Wyjście kontrolera jest push-pull.
P-MOSFET zapewni wysoki poziom, a N-MOSFET niski poziom. Jedna z nich musi być aktywna, inaczej poziom linii unosi się i będzie niezdefiniowany (lub zdefiniowany przez obciążenie transiwera). Oba są w stanie pobierać / pochłaniać trochę prądu i ciągną linię do szyn, więc kształt sygnału będzie prawie idealny.
Co byłoby inne, gdyby tak naprawdę było TTL, jak w twoim pytaniu (mikrokontrolerem jest HCMOS). Wyjścia TTL są wysoce asymetryczne: mogą dostarczać tylko niewielki prąd, zwykle 0,4 mA. Prąd tonący jest OK, przy 8 mA. Niski prąd źródłowy może stanowić problem, jeśli linia ma wysoką pojemność i dużą prędkość. Niski prąd napędowy oznacza, że pojemność będzie ładować się stosunkowo wolno, a wznoszące się krawędzie będą wolne, co przy dużej prędkości może spowodować poważne zniekształcenie sygnału. TTL nigdy nie jest do tego wykorzystywany.
Twoje pytanie może również dotyczyć linii wielopunktowej , w której może rozmawiać kilka urządzeń. W takim przypadku nie można użyć wyjścia push-pull: jeśli jedno urządzenie doprowadziłoby linię wysoko, podczas gdy inne doprowadziło ją do niskiego poziomu, mielibyśmy zwarcie. Linie Multidrop prawie zawsze używają rezystorów podciągających, aby utrzymać linię na biegu jałowym na wysokim poziomie. Wtedy tylko niski poziom wymaga prowadzenia linii, a zamiast wyjścia push-pull będziemy mieli otwarty odpływ, tylko z N-MOSFET. Linia jest teraz również napędzana asymetrycznie: rezystor podwyższający może dostarczać tylko niewielki prąd, podczas gdy obniżający FET może szybko doprowadzić linię do uziemienia. Szybkie linie wielopunktowe ograniczają zatem rezystory podciągające. Przykładem jest I2C.
źródło