Raspberry Pi3, Pi3B +, PiZeroW에서 직렬 작업을 수행하는 방법


답변:


65

이 답변은 여전히 정확하고,보다 상세하게 변화의 본질을 설명하지만, 단지 실행해야 현재 Raspbian의 대부분의 사용자 sudo raspi-config선택은 Interfacing Options / Serial당신이 원하는하지 않는 경우 다음을 지정 시리얼 콘솔 (아마 더)를 당신이 원하는 경우 다음 직렬 포트 하드웨어를 사용할 수 아마 ( 예). 그런 다음 /dev/serial0직렬 포트에 액세스하는 코드를 사용 하십시오.

Raspberry Pi3, Pi3B +, PiZeroW의 BCM2837에는 2 개의 UART가 있지만 (이전 버전과 동일) Bluetooth 기능을 지원하기 위해 완전한 기능을 갖춘 PL011 UART가 헤더 핀에서 Bluetooth 칩으로 이동하고 미니 UART가 헤더 핀에서 사용 가능하게되었습니다. 8 & 10.

이것은 직렬 인터페이스 사용자에게 많은 영향을 미칩니다.

/dev/ttyAMA0이전에 UART 이제 블루투스 연결 액세스하는 데 사용됩니다.
miniUART는 현재에서 제공됩니다 /dev/ttyS0.
최신 운영 시스템 소프트웨어에서는이 /dev/serial0당신이 교체 할 수 있도록 적절한 장치를 선택하는 /dev/ttyAMA0/dev/serial0와 PI3 및 이전 모델에 동일한 소프트웨어를 사용합니다.

불행히도 여러 가지 다른 결과가 있습니다.

The mini UART is a secondary low throughput UART  
  intended to be used as a console.
The mini Uart has the following features:
• 7 or 8 bit operation.
• 1 start and 1 stop bit.
• No parities.
• Break generation.
• 8 symbols deep FIFOs for receive and transmit.
• SW controlled RTS, SW readable CTS.
• Auto flow control with programmable FIFO level.
• 16550 like registers.
• Baudrate derived from system clock.

패리티에 대한 지원이없고 처리량이 제한되지만 후자는 대부분의 사용에 영향을 미치지 않습니다.

시스템 클럭 감소 또는 저전력 모드 등의 경우이 클럭이 동적으로 변경 될 수 있으므로 miniUART를 쓸모 없게 만드는 킬러 기능 "시스템 클럭에서 파생 된 보레이트"가 있습니다.

/boot/config.txt제거를 수정하면 끝에 다음 줄을 추가하여이 종속성을 제거합니다.

core_freq=250

이것은 문제를 해결하고 거의 영향을 미치지 않는 것으로 보입니다. SPI clock frequency하고 ARM Timer또한 시스템 클럭에 따라 달라집니다.

기괴한 이유로 최신 4.4.9 커널을 사용하는 Pi3의 기본값은 UART 비활성화입니다. 을 활성화하려면 변경할 필요 enable_uart=1/boot/config.txt. (이것은 또한 core_freq더 이상 필요하지 않도록 수정합니다 .)

마지막으로 Bluetooth를 사용하지 않거나 불필요하게 사용하는 경우 장치 트리에서 포트를 다시 교환 할 수 있습니다. 가 pi3-miniuart-btpi3-disable-bt에 설명되어 있습니다 모듈 /boot/overlays/README.


훌륭한 설명을 위해 @Milliways에게 감사드립니다. 내가 가지 않은 것 ... UART를 사용하여 라즈베리에 연결하는 라디오 모듈이 있으며 전송 속도를 선호합니다 9600. core_freq=250ma python 스크립트에서 보드 속도를 설정 한 다음 구성 하면 작동 합니까? 또한 raspberrypi.stackexchange.com/questions/47379/…를 볼 수 있다면 좋을 것입니다. 감사합니다!
Georg

raspberry pi 2와 작동하는 데 사용되는 wirePi 코드와 함께 /boot/config.txt에서 / dev / serial0 및 enable_uart = 1을 시도했지만 여전히 직렬 통신을 시작하지 못합니다 (반환 조건은 -1 임). 또한 / dev / S0를 사용해 보았습니다. 무엇을 놓칠 수 있습니까? (또한 raspi-config에서 직렬 포트를 해제했습니다). (라즈 비아를 포함한 모든 것은 최신입니다)
ozgeneral

1
@ OE1 질문이 있으면 의견이 아닌 새로운 질문으로 질문하십시오.
Milliways

나는 약간 혼란 스럽다. 그것이 패리티를 지원하지 않는다는 것을 어떻게 의미합니까? 내 pi3와 대화하는 장치가 있고 EVEN 패리티가 있어야합니다. 그렇지 않으면 시스템이 대화하지 않습니다. 귀하의 답변과 naseer 답변을 따른 후, 나는 pi3가 EVEN 패리티로 설정된이 장치와 성공적으로 프로그램 대화를 실행하도록 할 수있었습니다.
ThN

1
USB to UART 변환기가 3.3V와 호환되고 5V와 호환되지 않아야 함을 추가 할 수 있습니까?
MaNyYaCk

20

마침내 이것은 내 pi3에 대한 작업을 얻었습니다 (OS : 데비안 제시)

6 단계를 주의해서 따르십시오 .

1 단계-Raspbian Jessie를 SD 카드에 설치하고 네트워크에 연결되면 Pi를 부팅합니다. 터미널 또는 데스크탑 및 쉘을 통해 로그인합니다.

sudo raspi-config

파일 시스템을 확장하고 고급 페이지에서 직렬을 활성화 한 후 종료 및 재부팅하십시오.

2 단계-jessie 새 릴리스가있는 경우 필요하지 않습니다.

sudo apt-get update

sudo apt-get upgrade

3 단계-다음과 같은 장치 트리 설정

Raspberry Pi 3 블루투스를 비활성화하려면 /boot/config.txt 에 장치 트리를 추가하십시오 .

sudo nano /boot/config.txt

파일 끝에 추가

* blutooth를 miniuart 포트로 변경하려면 (나쁜)

dtoverlay=pi3-miniuart-bt

* blutooth를 비활성화하려면 (좋은)

dtoverlay=pi3-disable-bt

변경 사항을 저장하고 편집기를 종료하십시오.

4 단계-파이 재부팅

sudo reboot

5 단계-

a) 시리얼 콘솔을 비활성화하려면 다음을 사용하여 파일을 편집하십시오.

sudo nano /boot/cmdline.txt

단어 " console=serial0,115200"또는 " console=ttyAMA0,115200"제거

종료하고 변경 사항을 저장하십시오

b) 시리얼 콘솔을 활성화하려면 다음을 사용하여 파일을 편집하십시오.

sudo nano /boot/cmdline.txt

파일을 다음과 같이 변경하십시오.

dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

종료하고 변경 사항을 저장하십시오

6 단계-파이 재부팅

sudo reboot

------------------ 그게 다야 , 재미있게 ---------------------------- ---


rpi2에서 작동하며 블루투스 릴레이 보드에 연결하고 AT 명령을 통해 메시지를 보냅니다. 그러나 이런 식으로 arduino에서 데이터를받을 수 있습니까?
marciokoko 2016 년

10

Naseer의 대답은 정확하지만 최신 rasbian을 방금 비추었다면 약간 정교합니다. 내가해야 할 일은 config.txt에 다음 줄을 추가하는 것입니다 (예 : fat32 파티션의 SD 카드를 연결하는 창에서).

dtoverlay=pi3-disable-bt

그런 다음 플러그를 꽂으면 파이가 콘솔 핀에 직접 인쇄합니다.


어떻게 작동합니까? Bluetooth UART는 GPIO 핀에도 연결되어 있지 않습니다!
Dmitry Grigoryev

4
@DmitryGrigoryev PI 3에서 작동합니다.
ThN

2
이것은 나에게도 효과적이었다. 나는이 스레드가 몇 가지 작은 문제를 명확히하는 데 도움이된다는 것을 발견했다 : raspberrypi.org/forums/…
Chris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.