티스토리 뷰

안녕하세요 :) 



저번 포스팅에서는 ATMega328P에 내장된 부트로더(Bootloader)에 대해 이야기하였습니다.


밑의 주황색 글씨로 쓰여진 것이 부트로더 포스팅으로 가는 링크입니다 ↓

http://mosesnah.tistory.com/4




오늘은 아두이노의 USB-to-Serial 통신에 대해 이야기하는 시간을 가져보도록 하겠습니다.






USB선을 통해 손쉽게 스케치 파일을 ATMega328P에 업로딩 할 수 있는 아두이노의 인터페이스는


아두이노를 DIY(Do It Yourself)계의 대표 개발 보드로 자리 잡게 해 준 것은 물론


공대생들의 불편함을 크게 덜어준 혁신적인 제품(과장 추가)이라 부르게 만들어주었습니다.



그렇다면 이 손쉽게 사용 가능한 아두이노의 인터페이스를 좀 더 자세히 들여다봅시다.


컴퓨터의 아두이노 IDE에서 스케치 업로드를 클릭하면


 스케치 파일은 USB선을 통해 아두이노로 전달되는 것은 자명한 사실로 보입니다.



그렇다면 컴퓨터가 전송한 이 USB 데이터들이 ATMega328P에 직접적으로 전달되어


바로 ATMega328P를 프로그래밍하는 것일까요?




아닙니다 :)


이러고 보니 질문의 정답은 항상 같았던 것 같네요.





USB로 전송되는 데이터, 즉 컴퓨터에서 전송된 데이터들은 ATMega328P에 직접 전달되지 않습니다.


USB 데이터는 Serial 통신 데이터로 변환되어


ATMega328P에 전달됩니다.





이게 무슨 뜻인지, 인간의 언어를 비유로 들어보겠습니다.


한국어만 할 줄 아는 한국인과, 일본어만 할 줄 아는 일본인이 서로 만났다고 생각합시다.


이렇게 사용할 줄 아는 언어가 다른 두 분은 언어를 통한 정보 교환이 사실상 불가능합니다.


두 분의 뇌 속에 있는 언어 체계, 즉 정보를 이해하는 회로가 다르게 되어 있기 때문이죠.


서로가 체득한 언어가 다르니, 서로가 하는 말을 이해할 수 없습니다.



사실 요즘 글로벌 시대라


안녕~과 こんにちは(곤니찌와~) 정도는 들으면 이해할 수 있죠 :)


허나 서로 간에 진정한 의사소통, 심도 있는 정보 교환은 불가능하죠.


언어를 두 개 이상 유창하게 할 줄 아는 사람들이 아니라면


둘 간에는 인사말 그 이상의 정보 교환은 힘듭니다.



인간은 언어를 통해 정보를 활발하게 주고받는 것이 특징인 동물이기 때문이죠.





전자회로의 세계도 마찬가지입니다.


사실 전자칩 간에 주고받는 것도 인간의 언어와 같은 정보(Information)입니다.


전자칩도 결국 서로 간에 주고받는 정보가 잘 전달되냐 마냐


전자칩에게 들어오는 정보를 전자칩이 이해하냐 마냐가 핵심이라 생각합니다.


ATMega328P는 시리얼 통신 (Serial Communication)을 통해서만 스케치 파일의 정보를 이해할 수 있습니다.



하지만 USB 통신과 시리얼 통신은 서로 언어가 다르기에


ATMega328P는 USB 데이터를 이해하지 못합니다.

위 사진은 USB 데이터 전송 방식입니다.


USB는 D+와 D-핀의 전압 변화로 데이터를 전달하는 반면 


시리얼 통신은 Rx와 Tx핀을 통해 정보를 전달합니다.




위 사진으로 볼 수 있는 것은 Serial 통신에 사용되는 Rx, 또는 Tx핀의 전압값 모습입니다.


데이터 전달을 담당하는 핀 이름이 다른 것은 물론 


전압 그래프의 개형도 USB의 경우와 다른 것을 확인할 수 있죠?




따라서 ATMega328PUSB가 전송하는 데이터를 이해하지 못합니다.


즉 직접적으로 USB 데이터를 받아봤자, 이해를 못한다는 것이죠.




그럼 다시 인간의 비유로 돌아가 봅시다.



서로 간의 언어가 달라 정보 교환이 불가능하다면


둘 간의 정보 교환을 어떻게 가능하게 만들 수 있을까요?





통역/번역을 하면 됩니다.






ATMega328PUSB 데이터를 이해하지 못하면?


USB 데이터시리얼 통신(Serial Communication)으로 변환시켜주는 


통역사를 추가하면 되는 것입니다.




그 녀석이 바로, ATMega328P의 통역사


아두이노 우노 R3의 ATMega16U2입니다.






ATMega16U2USB 데이터시리얼 데이터의 형태로 변환시켜주는 역할을 수행합니다.


USB-시리얼 변환(USB-to-Serial Converter)의 역할이지요.








사실 아두이노 우노의 복잡한 회로도에서


이 USB-to-Serial변환을 위한 회로도가 큰 부분을 차지합니다.



위 회로도는 USB-to-Serial 변환에 기여하는 


ATMega16U2와 그 이외의 부속품들을 보여줍니다.


USB를 시리얼(Serial)로 바꿔주는 과정에서 굉장히 많은 녀석들이 기여를 하고 있죠?




다시 강조하자면


USB로 들어오는 데이터는, ATMega16U2에서 시리얼(Serial) 형식으로 변환되어


ATMega328P에 전달됩니다.





회로도를 좀더 자세히 들여다 볼까요?





ATMega328P와 USB사이를 중재해주는 ATMega16U2


D-와 D+의 핀을 통해 USB와 정보를 주고받습니다.



 D-와 D+핀을 통해 USB로부터 정보를 받은 ATMega16U2는 


내부적으로 정보를 처리하여 USB로부터 들어온 정보를 시리얼 형태로 변환합니다.


변환된 시리얼 데이터들은 Rx와 Tx핀을 통해 ATMega328P에 정보를 전달합니다.


Rx는 Receive Pin, Tx는 Transmit Pin의 약자입니다.




ATMega16U2ATMega328P에게 정보를 주는 경우


ATMega16U2는 ATMega16U2 Tx핀을 통해 ATMega328PRx핀으로 정보를 쏘고


반대로 ATMega328P가 ATMega16U2에게 정보를 주는 경우


ATMega328P는 ATMega328P Tx핀을 통해 ATMega16U2Rx핀으로 정보를 쏩니다.






마치 Tx핀은 언어(정보)를 말하는 인간의 입이고, Rx핀은 언어(정보)를 듣는 인간의 귀와도 같습니다.


이렇게 칩의 Rx, 그리고 Tx 핀을 통해 다른 칩과 정보를 주고 받는 것이 시리얼 통신입니다.





최종 정리를 하면 다음 사진들과 같이


칩들 간에 서로 연결되어 있으며


아두이노 우노 R3에서 배선된 모습입니다.




시리얼 통신 말고도, SPI, I2C와 같이 


ATMega328P가 이해하는 다양한 통신 체계, 또는 언어들이 있습니다.


이에 대해서는 추후 포스팅에서 더 자세히 다루겠습니다.



쓸데없이 설명이 길었나요?


긴 글 읽어주셔서 감사합니다


다음에 또 뵈어요  :)





[출처]

[1] https://rheingoldheavy.com/arduino-from-scratch-part-10-atmega328p-subsystem/

[2] https://learn.sparkfun.com/tutorials/serial-communication

[3] https://www.allaboutcircuits.com/technical-articles/understanding-arduino-uno-hardware-design/


[그림 출처]

[1] https://pixabay.com/ko/arduino

[2] https://pixabay.com

[3] http://moving-vision.tistory.com/entry/

[4] https://electronics.stackexchange.com/questions/73295/in-a-usb-cable-is-it-ok-to-swap-the-d-and-d-wires

[5] https://learn.sparkfun.com/tutorials/serial-communication

[7] https://store.arduino.cc/usa/arduino-uno-rev3, Schematics File in pdf.

[9] https://store.arduino.cc/usa/arduino-uno-rev3, Eagle File in Zip.


* 그림들이 나온 순서대로 번호를 매겨, 출처를 기입하였습니다. 따로 명시가 되어있지 않은 이미지들은 오픈 소스 그림들을 통해 글쓴이가 직접 그린 이미지들입니다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함