ARM7 には SPI (Serial Peripheral Interface) にアクセスするためのレジスタがあります。 SPIは、アドレスバスに直接接続されていないデバイスとのデータのやり取りに使用します。 IO命令の代わりのようなものです。 SPIを通してアクセスするデバイス †レジスタ †
SERIAL_CR †
デバイス選択ビット :
※デバイス選択ビットと、クロックレートのビットは同じ値を使います。 チップセレクトホールドビットは、最後のデータユニットを転送する直前に、自動的にクリアされます。 最後のデータユニットの転送後に、WaitByLoop(3) を呼び出すようにしてください。 SERIAL_DATA †
SPIデータを読み込む時には、最初に SERIAL_DATA に ダミー値(0が良いようです)を書き込んでください。 書き込むと同時に、読み込み用データがセットされ、読み込み可能になります。 データが転送されている間、SERIAL_CR のビジーフラグがONになります。 ダミー値を書き込んだ後、ビジーフラグはクリアされ、割り込みが呼び出されるようです。 割り込みを使う場合は、ここで読み込むみたいです。 SERIAL_DATAには8bitモードと16bitモードがありますが、通常8bitモードしか使わないみたいです。 devKitProで使われる定数 †#define SERIAL_CR (*(vuint16*)0x040001C0) #define SERIAL_DATA (*(vuint16*)0x040001C2) #define SPI_ENABLE (1<<15) #define SPI_IRQ (1<<14) #define SPI_BUSY (1<<7) #define SPI_BAUD_4MHZ (0<<0) #define SPI_BAUD_2MHZ (1<<0) #define SPI_BAUD_1MHZ (2<<0) #define SPI_BAUD_512KHZ (3<<0) #define SPI_BYTE_MODE (0<<10) #define SPI_HWORD_MODE (1<<10) #define SPI_NOT_LAST (1 << 11) #define SPI_DEVICE_POWER (0 << 8) #define SPI_DEVICE_FIRMWARE (1 << 8) #define SPI_DEVICE_TOUCH (2 << 8) |