MDBT42Q (nRF52832)에서 I2C를 사용하는 방법

4564 단어 MDBT42QI2CnRF52832

BLE 모듈 MDBT42Q



대만 Raytac의 BLE 모듈 MDBT42Q에는 nRF52832가 장착되어 있으며 노라 배지 초호기에서 채택되었습니다.
노라 배지 이호기 개발에 I2C 연결 지원이 필요합니다.

I2C 대응



8x8 LED Matrix의 소형화(피치폭:3mm→1.9mm, 사이즈:32mm→20mm)에 맞추어 제어 드라이버 IC를 MAX7219에서 HT16K33으로 변경한다.
MAX7219는 8x8 LED Matrix 1개를 5선(VCC, GND, CLK, DIN, CS)으로 제어하지만 HT16K33은 8x8 LED Matrix 2개를 4선(VCC, GND, SDA, SCL)으로 제어할 수 있다. .

개발 환경



개발 환경의 구축은 이하의 페이지를 참고로 해, 평상시 익숙한 Arduino 개발 환경을 선택했습니다.
htps : // 이 m / 난부 wks / ms / d26447c0b 28b1d05df

내 개발 환경의 변경 부분은 다음과 같습니다.

쓰기 장치



J-Link를 사용했습니다.
(J-Link와 노라 배지 초호기와의 접속)


Arduino IDE 설정



"도구"-"보드:"→ "Generic nRF52"
「도구」-「Softdevice:」→「S132」
"도구"- "Low Frequency Clock:"→ "RC Oscillator"
「도구」-「기입 장치:」→「J-Link」

I2C 핀 번호를 지정할 수 없음



Arduino, ESP8266, ESP32와 마찬가지로 Wire.begin() 함수에서 핀 번호를 지정할 수 없습니다.
(핀 번호를 지정하지 않으면 문제 없습니다.)

MDBT42Q_I2C_00.ino
#include <Wire.h>

void setup() {
  Wire.begin(4, 5);  // 4:SDA 5:SCL
}

void loop() {
}

오류 내용


Arduino:1.8.9 (Mac OS X), ボード:"Generic nRF52, S132, RC Oscillator"

/Users/kitazaki/Documents/Arduino/MDBT42Q_I2C_00/MDBT42Q_I2C_00.ino: In function 'void setup()':
MDBT42Q_I2C_00:4:17: error: no matching function for call to 'TwoWire::begin(int, int)'
   Wire.begin(4,5);
                 ^
In file included from /Users/kitazaki/Documents/Arduino/MDBT42Q_I2C_00/MDBT42Q_I2C_00.ino:1:0:
/Users/kitazaki/Documents/Arduino/hardware/sandeepmistry/nRF5/libraries/Wire/Wire.h:45:10: note: candidate: void TwoWire::begin()
     void begin();
          ^
/Users/kitazaki/Documents/Arduino/hardware/sandeepmistry/nRF5/libraries/Wire/Wire.h:45:10: note:   candidate expects 0 arguments, 2 provided
/Users/kitazaki/Documents/Arduino/hardware/sandeepmistry/nRF5/libraries/Wire/Wire.h:47:10: note: candidate: void TwoWire::begin(uint8_t)
     void begin(uint8_t);
          ^
/Users/kitazaki/Documents/Arduino/hardware/sandeepmistry/nRF5/libraries/Wire/Wire.h:47:10: note:   candidate expects 1 argument, 2 provided
exit status 1
no matching function for call to 'TwoWire::begin(int, int)'

해결 방법



소스 코드를 읽고 Wire.setPins() 함수로 핀 번호를 지정할 수 있는 것을 알았습니다.
(리포지토리)
htps : // 기주 b. 코 m / 씨데에 p 미 스트리 / 아 r 즈이의 RF 5 / ぃ b 라 리 s / 으레 /
(로컬 환경의 경우)
/Users/[사용자 이름]/Arduino/hardware/sandeepmistry/nRF5/libraries/Wire/
(소스 코드)
Wire.h
Wire_nRF52.cpp

MDBT42Q_I2C_01.ino
#include <Wire.h>

void setup() {
  Wire.setPins(4, 5);  // 4:SDA 5:SCL
  Wire.begin();
}

이것으로 개발이 한 걸음 전진할 수 있어서 좋았습니다.

좋은 웹페이지 즐겨찾기