2017/01/09

[rpi]Raspberry PiでFeliCa Linkを動かす (2)

前回の続き。

FeliCa Linkの搬送波検知は使わず(LEDが自動で点灯)、IRQ立ち下がりでI2Cアクセスするだけの予定だ。
Read without Encryptionは実装しよう。
Write without Encryptionがあると、メモリアドレスをレジスタのように使ってR/Wから要求を出すことができるのだけど、無理はすまい。

前回はmbed用に作ったライブラリ(C++)からCに移植しようと考えていたのだが、そういえばnRF51用に書いたものがあった。
そちらを使おう。

https://github.com/hirokuma/nrf51822_felicalink_v810/tree/master/felica


そういえば、スタートコンディションやストップコンディションの制御はどうやって行うのだろう?
writeの場合は書込むだけだからよいのだが、readはレジスタを指定した後に読込むので、ストップコンディションを発行しないwriteをしたいのだ。

 

これだ、というのは見つからんのだが、i2c_smbus_read_block_data()なんかでできるのか?
https://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/include/linux/i2c-dev.h

でも、これはこれで、readしたデータの先頭がデータ長になっている前提のようにも見える。
そもそも、引数に読みたいデータ長を指定するようになっていないので、これはこれで困る。。。

 

Raspberry Pi で I2C の Repeated Start Condition を有効化 - Rabbit Note
これだ。
Repeated Start Conditionっていうんだ。
「ストップコンディションを自分で制御する」ではなく、「続けてスタートコンディションを発行する」という見方になるのか。
ストップコンディションは一連の処理が終わるまでやらないものかと思っていたが、そうじゃないデバイスもあるんだな。

sysfsに書込めば動的にも設定できるそうだ。
I2C Repeated Start

sudo sh -c '/bin/echo Y > /sys/module/i2c_bcm2708/parameters/combined'


あとは、ファイルをRaspberry Piに送る方法が必要だった。
これは、WinSCPを使ってSFTPでやればよいだろう。

。。。と思ったら、SSH自体が使えなかった。
SSH (Secure Shell) - Raspberry Pi Documentation

$ sudo raspi-config

ここで「5 Interfacing Options」を選び、次の画面で「P2 SSH」を選択。
Enableにするか聞かれるので、Yes。

これだけで、TeraTermからSSHすることができた。
WinSCPもOK。

 

SSHの有効化は、以前はraspi-configのAdvanced Optionsにあったようだが、少なくとも今(2017/01/09)はInterfacing Optionsのようだ。


まずは、GPIOの割込みだけ確認しよう。
GPIO7が立ち下がったらコールバックされるというだけのしくみ。

https://github.com/hirokuma/rpi_rcs730/tree/08faec97ee7fea61dd3a5844ff28c48afbd755e1

WFIみたいなもので待たせたい気もするのだが、サンプルもぐるぐる回しているようなので、まあよしとしよう。

Drogon Projects | Git - wiringPi/blob - examples/isr.c

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。