obniz勉強日記(2022/12/11):SPI通信
下記サイトを参考にobnizでSPI通信を行おうとした。
やりたいこと
LPS25HBでSPI通信を行い、このデバイスのIDを取得する。
obnizのSPI通信設定について
その他参考:
作成プログラム
main.js(javascript)プログラム
code:javascript
///javascriptプログラム
///ファイル名:main.js
/*
機能:
obniz動作
ボタンのクリック動作
・気圧取得
使用ピン:
・pin0:mosi
・pin1:miso
・pin2:clk
・pin3:LED_GND :SPI通信用
・pin4:LED_OUT :SPI通信用
通信速度:10MHz
*/
//obniz ID入力
var obniz = new Obniz("21532033");
///obniz動作処理
obniz.onconnect = async function(){
//デバック確認:開始
console.log("obniz開始");
//SPI通信用:デバイス確認
//デバイス取得コマンド作成
console.log(data_send);
//SPI通信用GPIO設定
var spiout = obniz.wired("Solenoid",{gnd:3,signal:4});
//起動時動作処理
spiout.on(); //SPI通信停止
//SPI通信設定
var spi = obniz.getFreeSpi();
//pin0:mosi,pin1:miso,クロック周波数:10MHz
obniz.spi0.start({mode:"master",mosi:0,miso:1,clk:2,frequency:10000000});
//ボタン1クリック処理
$("#button1").click(function(){
spiout.off(); //SPI通信開始 (CS ON)
let ret = spi.writeWait(data_send); //SPIデータ送受信
spiout.on(); //SPI通信停止(CS OFF)
//受け取った値確認
console.log(ret);
console.log(data_send.length); //=> 3
console.log(ret.length); //=> 3
console.log("data_send:"+data_send);
console.log("received:"+ret);
});
//ボタン2クリック処理
$("#button2").click(function(){
});
}
結果として、これではSPI通信でIDの取得が出来なかった。
他の人のプログラム確認
code:c
// -- Read WHO AM I
uint8_t deviceID = readLPS(0x0F) ;
Serial.print("Device ID = ") ;
Serial.println(deviceID,HEX) ;
// Register読み取り
uint8_t readLPS(uint8_t addr) {
uint8_t readData ;
digitalWrite(SS, HIGH);
digitalWrite(SS, LOW); //通信開始
SPI.transfer(addr|0x80);
readData = SPI.transfer(0x00);
digitalWrite(SS, HIGH); //通信終了
return readData ;
}
というのがあったので、
0x8Fを送信
0x00で送受信する
形に変更して確認
これでも、変化無し。
色々やったが、割と手詰まりになっている。
出来ない理由として考えられるのが。
コマンド送受信方法が間違っている。
送信しているコマンドが違う
そもそも、対応していない。
配線が間違っている。
元々STM32マイコンでの取得が主目的で、そちらで出来ないため、obnizなら簡単に出来るのではないかということで確認したが。obnizでも上手く出来ない。
現在、上記理由に対して、取れる手立てが無い状態だ。
闇雲に色々やってみる事は出来るが、時間的に勿体ない。
データシートの再確認をしても、特に何も無い。
そもそも、他のものでもSPI通信自体が出来るか怪しい状態なので、絞り込むにも絞り込めない。
なので、一旦obnizのSPI通信も辞めて。
mbed(nucleo f401)でmbedプログラムでやっている人がいないか。ライブラリが無いかを確認する。
それか、ID確認せず、圧値の取得を書いてみるとか?
SPIに関しては、一旦ここまでとする。
想定より、SPIの通信に苦戦している。
他の機能などの確認も必要だから、一旦別の学習に移るかどうか・・・
ソレコン関連もやる必要がある。
優先順位:
1.仕事関連(STM32学習とか・・・)
2.ソレコン
ケース加工
ソフトNFT確認
音源作成?確認
3.obnizその他ものづくり。
4.ジャンプ漫画原作とか