MDBT42Q (nRF52832)에서 I2C를 사용하는 방법
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();
}
이것으로 개발이 한 걸음 전진할 수 있어서 좋았습니다.
Reference
이 문제에 관하여(MDBT42Q (nRF52832)에서 I2C를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kitazaki/items/f748ba7c0739ec22e182텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)