Raspberry Pi 2 Model B (以下RPi)
Raspbian Jessie
Python 2.7.9
I2C通信の実装をしようとしている。
その前段階として、SCLのクロック出力を行ってみる。
code v0.4
処理概要
- GPIO26に対してクロックを出力する
- 5クロック
- およそ200usec
- 最初: 260usec
- 以降: 160usec
- GPIO05の値を読取る
-
gpio readall
コマンドでHレベルを確認
-
ファイル構成
- RPi_i2c_comm_180227.c
- メインプログラム
- wait_msec_nsec_180301.cと.h
- 待ち処理のための関数
RPi_i2c_comm_180227.cのmain()
RPi_i2c_comm_180227.c
...
int main(){
int loop;
int pinlvl; // pin level
// 1. output clock at [GPIO_SCL]
gpio_setExport(GPIO_SCL, /* bfOn=*/true);
gpio_setDirection(GPIO_SCL, /* bfOut=*/true);
for(loop=0; loop<5; loop++) {
gpio_setLevel(GPIO_SCL, GPIO_HIGH);
Wait_about200usec();
gpio_setLevel(GPIO_SCL, GPIO_LOW);
Wait_about200usec();
}
gpio_setExport(GPIO_SDA, /* bfOn=*/false);
// 2. read at [GPIO05]
gpio_setExport(5, /* bfOn=*/true);
pinlvl = gpio_getLevel(5);
printf("SDA:%d\n", pinlvl);
gpio_setExport(5, /* bfOn=*/false);
return 0;
}
$ gcc RPi_i2c_comm_180227.c wait_msec_nsec_180301.c
$ ./a.out
SDA:1
関連
- [Resolved] Raspberry Pi > GPIO > GPIO26の出力設定(Hレベル)でssh接続が切れる > link: Why are some GPIO pins not available? | Revisionにより使えるポートはさらに変わる
- Raspberry Pi > GPIO > C > i2c_send_command_180227.c > v0.1, v0.2 > GPIO24をHレベルで出力する
- Raspberry Pi > C > ミリ秒待つ処理 > test_delay_180301.c | wait_msec_nsec_180301.cと.h > 3.8kHz (260usec)