LPC11U35の通信機能
最近いじりはじめたマイコンであるLPC11U35には、他のデバイスとの通信機能としてはI2CとSPIとUARTが搭載されている。 これらの機能についてプログラムを書いてみたので、そのことについて説明する。
SPIやUARTはマイコン自体が小さなバッファを持っているので、自前でバッファを作らずに簡単にプログラムを書くことができた。 ただし、SPIはMSB firstに固定だったので、LSB firstのときには、bitの順番を入れ替える処理を加える必要があった。 一方I2Cでは、状態を表すレジスタの値から、次に行う動作を判定して行くという仕様で設計されているようで、なかなかうまく通信出来ずに苦労した。 writeまたはreadだけの場合には、startしてからwriteまたはreadしてstopするという単純な作業だが、特にwriteしてからreadする場合との共存が面倒だった。 その場合には、start,write,restart,read,stopとすることになるが、startとrestartはしなければいけない操作が微妙に異なり、(re)startするときに、startなのかrestartなのかを区別しなければならない。 バスに送るデータはstartとrestartで同じなのだが、マイコンでの処理のプロセスが微妙に違うのである。
まだ完全では無いかもしれないが、これらの三つの通信機能のプログラムができて来たので、次はUSBかな。 デバイスでは無くてPCとのだけど、これも通信機能だった。