2017-01-14 3 views
0

비글 본 블랙의 P9 GPIO에 관한 일반적인 질문이 있습니다. 예를 들어, R232 통신을 위해 UART1 (RX 및 TX)를 사용하고 Linux에서 실행되는 C 언어 응용 프로그램을 사용하여 센서에 I2C2 (SDA 및 SCL)를 사용하고 싶습니다. 문제는 UART1 (RTS 및 CTS) 신호가 해당 핀에 있으며 이러한 기능을 비활성화 할 수 있습니까 (소프트웨어)? 따라서 UART1과 I2C2를 동시에 사용 하시겠습니까?BeagleBone Black P9 Pinout - I2C2가 SPI1 및 UART1과 충돌합니다.

PIN 19 UART1_rtsn - I2C2_SCL

PIN 20 UART1_Ctsn - I2C2_SDA

다음 질문은, 동일 SPI1 (CS0 및 CS1)에 대한 적용은,이 핀 I2C2에서도 (SDA 및 SCL)이다.

PIN 19 : I2C2_SCL - spi1_cs1

PIN 20 : I2C2_SDA - spi1_cs0

그래서 일반적인 질문 : 수 3 개 단위, UART1-SPI1-I2C2에 아무런 충돌과 동시에 모든 실행 핀은 bbb의 P9 헤더를 사용합니까?

는 답 JH

답변

1

주셔서 대단히 감사합니다 사용자 정의 핀 assignements에 꼴을 시작할 때 모든 것을하고 작업을 진행하는 복잡성을 많이 처리해야하지만, 그것은 기술적으로 feasable입니다. 핀이 무엇을 할 수 있는지에 관해서는 인터넷을 둘러싼 많은 테이블이 있습니다. 지금까지 내가 가장 좋아하는 것은이 두 가지입니다 : http://exploringbeaglebone.com/wp-content/uploads/resources/BBBP8Header.pdf, http://exploringbeaglebone.com/wp-content/uploads/resources/BBBP9Header.pdf

이 글을 읽으면 각 핀이 설정에 따라 여러 가지 기능을 수행 할 수 있음을 알 수 있습니다. 이들은 부팅시 리눅스 커널에 의해 기본값으로 설정되지만 장치 트리 오버레이를 사용하여 기본값을 수정할 수 있습니다. 간단히 말해서 전체 프로세스가 하나의 대답을 위해 조금 복잡해졌습니다. 그러나 요컨대, 원하는 것을하기 위해, 핀 할당을 변경하려는 장치에 대해 커널이로드하는 장치 트리 오버레이를 수정하고 다시 컴파일해야합니다.

예를 들어 일부 제한 사항이 있지만 비글 본 이미지는 모두 케이프 식별에 I2C2를 사용하도록 구성됩니다. 따라서 이론적으로는 핀 지정을 변경할 수 있지만 그럴 때 케이프가 올바르게 식별되고 구성되지 않아야합니다. 위의 예에서 UART1과 I2C2는 기본 구성을 사용하여 충돌없이 작동합니다 (UART1은 기본적으로 Rx & TX 만 있음). SPI1은 조금 더 많은 작업입니다. 기본적으로 ethernet UART1 또는 I2C2와 충돌하지 않지만 사운드 카드 (HDMI)와 함께 기본 구성 공유 핀을 사용하지 않도록 설정해야합니다.

각 핀은 여러 기능을 가질 수 있지만 한 번에 하나씩 만 사용할 수 있습니다. 따라서 특정 모듈을 사용하도록 핀을 설정하면 (예 : UART1) 다른 기능 모드로 해당 핀에서 이론적으로 출력 할 수있는 다른 모듈의 영향을받지 않습니다. 핀을 2 개의 기능에 동시에 사용하려고하면 커널이 불평 할 것입니다. 따라서 오버레이를로드하고 기본적으로 충돌 여부를 확인할 수 있습니다. 기본적으로, 커널이 트리 오버레이를로드하도록 허용하면 일반적으로 이미로드 된 다른 것과 충돌하지 않는다고 가정 할 수 있습니다.

+0

감사합니다. 까다 롭고 어렵지만 가능합니다. 나는이 링크 [링크] (https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/device-tree-overlays)를 사용하여 beaglebone black tree 오버레이를 더 확인합니다. – jonathanH