mbedのソースの中までは見ていないが、SPI通信中は値が取得できるまで待ち状態になってそうな気がする。必要な値を毎回MCP23S17にぶら下がっているデバイスに問い合わせているとその間他の処理ができなくなる可能性が高いと思う。
MCP23S17のGPIOを全部読み取りとして使えば定期的にSPI経由でポーリングして2Byte(MCP23S17はGPIOがPortAx8bit、PortBx8bit)を本体のNucleoにバッファリングしてやれば、SPI通信のコストは下げられそうだ。
4×4のキーパッドを使うとGPIOのうち4本は書き込みに使わないといけないので、バッファリングの仕組みが複雑になる。キーパッドはあきらめてタクトスイッチとロータリーエンコーダーだけにしてテストしてみた。
mbed repogitory:
https://developer.mbed.org/users/ryood/code/ExioBufferdController_Test/
SPI通信のようす
PortBにつなげているタクトスイッチx8を適当に押しながら測定
ch1:sck ch2:MISO
拡大
0 件のコメント:
コメントを投稿