2019年1月20日日曜日

MSP23S09をOpenwrtで使う(再)



半年前の記憶がもう怪しい・・・。
MSP23S09の使い方を思い出す。
https://continue-to-challenge.blogspot.com/2018/06/mcp23s09fon2405eledeopenwrt.html
のままだけど。

SPIを使うための準備

ハードの準備

前回は、ユニバーサル基板で実験したけど、今回は切削で基板を作ってみた。
FlashROMと、CS切り替え用のロジックとLEDx4とUARTが乗っている。
GPIOをCS1に割り当てるのだけど、もともとのCS0と確実に分けるために、not CS0を条件にしたロジックにしている。ものすごく割り切る場合には、CS1 = not CS0で良いんじゃないかと思う。
Deep MMC Old


ソフトの準備

spidevドライバを組み込むようにカーネルを再構築する。
http://continue-to-challenge.blogspot.com/2018/02/fon2405eledeopenwrtspi.html

簡易的な動作確認

/dev/spidev0.1ができているので
echo -en "\x40\x00\x00" > /dev/spidev0.1
で、MSP23S09を出力設定にする。
OPCODEが0x40、コマンドが0x00、入出力設定が0x00という具合
例えば、3を表示させる場合は
echo -en "\x40\x0A\xB0" > /dev/spidev0.1
ロジック・アナライザで出力を見てみると
https://www.saleae.com/ja/downloads/


※この時は試行錯誤していて0x41-0x0A-0x01になってるOrz

自作ドライバでの動作確認

クロスコンパイル環境とドライバ作成を思い出すぞ!
https://continue-to-challenge.blogspot.com/2018/01/fon2405eledeopenwrteclipse.html

クロスコンパイル環境

こんな感じ
Prefix「mipsel-openwrt-linux-musl-」
path「staging_dir/target-mipsel_24kc_musl/bin」
あとは前にやったのと変わりなし。
makeしてできたmcp23s09_7seg.koをscpでボードに転送する

動作確認

indmod mcp23s09_7seg.ko
echo -n 1 > /dev/mcp7dDriver0
で1が7セグに表示される。
段々と思い出してきた。

で、何やりたいかは忘れたOrz.

0 件のコメント:

コメントを投稿