HW 결선을 먼저 해준다.
이런 선이고 usb는 컴퓨터에 gpio 핀은 라즈베리파이의 gpio핀에 꽂아주면됨.
USB 케이블 흰색선(RXD)-> 라즈베리파이 TXD(GPIO 14)
USB 케이블 초록색선(TXD)-> 라즈베리파이 RXD(GPIO 15)
USB 케이블 흑색선(GND)-> 라즈베리파이 GND
윈도우 장치관리자의 포트 봐보면
드라이버 설치 전에는 이렇게 뜬다.
마우스 오른쪽 클릭으로 디바이스 제거
재부팅하면 뜨죠?
putty 설정 변경
serial로 선택하고 이름 쓰고 저장
다시 load하고 좌측의 serial 들어가서 flow control none 으로 변경!!
이제는 라즈베리파이 설정해야됨
sudo vi /boot/config.txt
enable_uart=1
추가해주고
sudo vi /boot/cmdline.txt
yy, 커서가 위치한 줄 복사 p 커서 다음에 붙여넣기 해서 원본 내용 아래에 남겨주고 #으로 주석처리
이제 원본을 바꿔보면 기존 tty1을 ttyS0로 바꿔주고, rootwait 이후 내용은 전부 삭제
명령모드에서 커서이동하고 shift d 누르면 커서 이후로 해당 줄 내용 다 삭제됨
이렇게 저장해주고
putty serial로 되어있는거 연결 열어주고 라즈베리파이 재부팅해주면 시리얼통신 터미널에 부팅 메시지가
쭈루룩 뜨고
그 후에 로그인까지 잘 되면 굿..!인거임.
만약에 로그인이 안된다? 그러면 usb의 tx라인과 라즈베리파이의 rx라인의 결선이 정상인가? 를 다시 봐야함.
UART 관련 지식을 잠시 정리하자면
디지털 비트가 PC Tx -> Target Rx로 1로 가다가 0을 주면 그게 uart의 start bit
그 후에 8bit data를 보냄. MCU에 따라 5~9비트까지 한번에 전송 가능(보통 8비트로 많이 보냄.)
그 뒤에 데이터 에러 여부 확인을 위해 pariry bit를 붙여줌.
짝수 패리티 비트를 쓰면 1의 갯수가 홀수면 1을 붙여서 짝수를 맞춰주고, 1의 갯수가 짝수면 0을 붙여서 짝수를 맞춰주고
홀수 패리티 비트라면 1의갯수가 홀수가 되도록 패리티 비트를 부여해줌
데이터를 다 보냈다면 stop bit를 보내야 하는데
서로 동일한 기종일 때라면 상관이 없음.
그러나 이기종 간의 시리얼 통신은 115200으로 딱 안맞음. main cpu clock을 가지고 sampling clock을 만드는데 아주 작은 시간만큼 오차가 생기기 마련임. 보통 5~10%정도의 오차를 가지고 있음.
그 오차의 마진에 걸려서 데이터가 씹히는 경우가 있음.
AVR->ARM간의 uart 통신이 제대로 안되는 경우에는 stop bit를 1bit or 2bit를 부여해가면서 바꿔봐야됨.
stop bit가 1bit로도 잘되면 그대로 하면되고 잘 안된다? 그러면 stop bit가 2bit로 늘려서 clock이 밀리더라도 잘 정지가 되도록 해주면됨.
putty에서 serial configuration 하는 부분이 그런 부분인거임.
'RaspberryPi' 카테고리의 다른 글
[RaspberryPi4 Kernel] Ubuntu에서 BCM2711 커널 빌드해서 올리기 (0) | 2024.02.15 |
---|---|
[Raspberry Pi] 작업한 이미지 복제하기 (2) | 2024.02.02 |
[Raspberry Pi] tag 사용해보기 (0) | 2024.02.01 |
[Raspberry Pi] Raspberry Pi 4B wiring pi를 통한 GPIO 제어 (0) | 2024.02.01 |
[Raspberry Pi] Raspberry Pi 4B GPIO 제어 (0) | 2024.02.01 |