やましょうです。
昨日の内容ですが、会場で打ったので、内容がテキストオンリーでした。
ということでブログにまとめておきます。
あと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コマンドは発行される筈であるが、
正常時I2C解析
NG時I2C解析
データ解析すると、
Write関数は呼ばれている。タイムアウトで終了か?Read関数は正常に動作。 ということでなにか?まずいのだと思う。レジスタの叩き方レベルですかね?(謎)
2.STM32 小さい奴をドライブとして見えなくする方法。
STLINK ユーティリティーを起動しFrimware Version upを押す。
Mass Storageをoffにします。
ボタンを上を選択してYes を押せばできがあり。
以上
やましょうでした。