2019年12月22日日曜日

2019/12/21 mbed 祭りの内容詳細

昨日はお疲れ様でした。
やましょうです。

昨日の内容ですが、会場で打ったので、内容がテキストオンリーでした。
ということでブログにまとめておきます。
あとpdfがなぜかmbedのページから読めん。
pdfはこちら、https://www.dropbox.com/s/encriv7cgo5s2r9/201912mbed.pdf?dl=0

(対策方法はなんかちょっとコード変更すると直るのでたまたま直ったきがしています。)

1.mbed LPC1768 OS2で1発目のI2Cの波形がでない問題。
12/22日に再調査したところ出たりでなかったりもする模様。
まずコード。

#include "mbed.h"

///DigitalInOut SDA(p9, PIN_OUTPUT, OpenDrain, 1);
I2C i2c(p9, p10);        // sda, scl
DigitalOut oPow(p8);
DigitalOut oOK(p18);
Serial pc(USBTX, USBRX); // tx, rx


int main() {
  char cmd[10];
          oPow = 0;
 
        pc.baud(115200);
        pc.printf("Program Start\n");

   while(true)
  {
       wait_ms(100);
        oPow = 1;
       wait_ms(100);
  
///I2C i2c(p9, p10);        // sda, scl
//i2c.frequency(50*1000);
  

        wait_ms(700);
 
        cmd[0] = 0x00;
        cmd[1] = 0x1C;
        oOK = 1;
        if(i2c.write(0x0a0, cmd, 2,true))
        {
             pc.printf("A0 Error \n");
        }
        oOK = 0;
    
        if(i2c.read(0x0a1, cmd, 10))
        {
             pc.printf("A1 Error \n");
        }
        continue;  
    }


これを動作させるとoOKがHIGH=1の間にI2CのWriteコマンドは発行される筈であるが、
NG波形全体
なにも波形がでていない。


正常時I2C解析

 

ちゃんと出る場合もある。

NG時I2C解析 

  

データ解析すると、
Write関数は呼ばれている。タイムアウトで終了か?Read関数は正常に動作。
ということでなにか?まずいのだと思う。レジスタの叩き方レベルですかね?(謎)




2.STM32 小さい奴をドライブとして見えなくする方法。
STLINK ユーティリティーを起動しFrimware Version upを押す。


Mass Storageをoffにします。
 
ボタンを上を選択してYes を押せばできがあり。



以上
やましょうでした。