WioTerminal의 BCM20과 BCM21의 정의가 잘못되었습니다.

어떤 내용입니까?



WioTerminal의 GPIO 정의에 실수가 있다는 것을 깨달은 이야기입니다. (Arduino IDE 환경)
어쩌면 바로 수정된다고 생각합니다만, 만약 같은 빠짐을 만나지 않기 위해 간단하게 정리해 둡니다.
※ BCM20, BCM21의 variant.h의 정의가 잘못되었다고 생각한다.
2020/06/14 본건은 Version 1.7.6에서 수정되었습니다.




※ 이미지는 htps //w w. 그래, ds. 이 m/우우오테 r 모두 lp-4509. HTML

현상



아래와 같은 프로그램을 Arduino IDE로 기술했습니다.
BCM20을 입력 단자로 이용하고 LO 사이는 시리얼로 ON을 출력하는 코드입니다.
void setup() {
  pinMode(BCM20, INPUT_PULLUP);  
  Serial.begin(115200);
}

void loop() {
  if ( 0 == digitalRead(BCM20) )
  {
    Serial.println("on");
  }
}

그리고 GND와 PCM20을 단락하지만 아무것도 출력되지 않습니다!



분석 결과



WioTerminal의 BCM20과 BCM21의 정의가 반대로 보인다.
구체적으로, variant.h에,
variant.h
#define BCM20 (53ul)
#define BCM21 (54ul)

하지만, 같은 단자에 할당된 I2S의 번호 정의는 아래와 같이 정의되어 있으므로 아무래도 BCM20과 BCM21의 번호가 반대인 것 같습니다.
#define I2S_SDOUT (53ul)
#define I2S_SDIN (54ul)

해결 방법



현시점(2020/05/24)에서는, BCM20과 BCM21의 정의는 이용하지 않고, I2S_SDOUT, I2S_SDIN를 이용하고 있는 것이 좋을 것 같습니다.
void setup() {
  pinMode(I2S_SDIN, INPUT_PULLUP);  
  Serial.begin(115200);
}

void loop() {
  if ( 0 == digitalRead(I2S_SDIN) )
  {
    Serial.println("on");
  }
}

기타



단순한 실수이지만 초조했습니다. 기판을 발주한 직후였으므로 수정 의뢰의 메일을 내고, 해석 작업하면 이런 결과였으므로 일단 안심했습니다. 새로운 장난감을 이용할 때는 요주의군요.

좋은 웹페이지 즐겨찾기