GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
GR For IDEでGR-PEACH-Fullを使用した際にSPI通信がうまくいきません.
Arduino UNO R3では同じプログラムで同じ機器(ArduCAM mini 5MP)と通信できているのですが...
オシロスコープで観察すると,Arduino UNO R3とMOSIの挙動が異なることがわかりました.
PEACH:平常時LOW,信号送出時1=HIGH,0=LOW
Arduino:平常時HIGH,信号送出時1=LOW,0=HIGH
SPIモード設定や周波数,SSピン設定などを全て合わせていますが,解決できません.
過去にGR-SAKURAにてMISOがハードウェア的に受信できない作りになっていると拝見しましたが,こちらも何か関係しているのでしょうか?
以上,何かわかることがあれば教えていただけると幸いです.
よろしくお願いします.
がじぇるね岡宮です。
e2studioでライブラリをコピーしてビルドしてみました。結構アーキ依存の箇所があったため、UNO(Atmega)の通りに動くかは微妙ですね。まずはビルドを通す上で実施したことを書きたいと思います。なお、私はArduCAMを持っていないので、シリアル出力は「ACK CMD SPI interface Error! END」が出ます。
Arduino UNOとGR-PEACHのSPIの対抗テストですが、5V系と3.3V系の違いはあるため、正常に動くかはちょっと分かりません。
●memorysaver.hで以下を有効化
#define OV5642_MINI_5MP
●ArduCAM.h
「CS」が参照エラーになるため、おそらく動くであろうESP32の記述をもってきました。
#if defined (GRPEACH) #define cbi(reg, bitmask) digitalWrite(bitmask, LOW) #define sbi(reg, bitmask) digitalWrite(bitmask, HIGH) #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); #define cport(port, data) port &= data #define sport(port, data) port |= data #define swap(type, i, j) {type t = i; i = j; j = t;} #define fontbyte(x) cfont.font[x] #define regtype volatile uint32_t #define regsize uint32_t#endif
●ArduCAM.cpp
ArduCAM::ArduCAM(byte model ,int CS)の部分の以下に、defined(GRPEACH)を追加しました。
#if (defined(ESP8266)||defined(ESP32)||defined(TEENSYDUINO) ||defined(NRF52840_XXAA) ||defined(GRPEACH))
もし、上記でも動かない場合
setup内にあるSPI.begin()を以下のようにbeginTransactionで明示的に周波数、SPIモードの指定を試していただいてもいいですか。
SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0));