12,796
回編集
73行目: | 73行目: | ||
# 必要に応じて、割り込みを設定する。 | # 必要に応じて、割り込みを設定する。 | ||
# マスターの場合は、CSピンを制御する。 | # マスターの場合は、CSピンを制御する。 | ||
<br> | |||
==== サンプルコード ==== | |||
以下の例では、MSP430G2553がマスターとしてSPI通信を行い、スレーブデバイスにデータ (0x55) を繰り返し送信している。<br> | |||
以下に示す手順により、SPI通信を行っている。<br> | |||
<br> | |||
# まず、spi_init関数でSPIの初期化を行う。 | |||
#: spi_init関数では、SPIに使用するピンの機能選択、クロック源の選択、ボーレートの設定、SPIモードの設定等を行う。 | |||
# メインループ内で、以下の処理を繰り返す。 | |||
## CSピンをLowにしてスレーブを選択する。 | |||
## spi_send_byte関数を実行して、データ (例: 0x55) をスレーブに送信する。 | |||
##: spi_send_byte関数では、送信バッファが空になるまで待機して、データを送信バッファに書き込む。 | |||
## CSピンをHighにしてスレーブを解放する。 | |||
## 100[ms]の遅延を入れる。 | |||
<br> | |||
スレーブデバイスの種類や接続方法に応じて、サンプルコードを適宜変更すること。<br> | |||
<br> | |||
<syntaxhighlight lang="c"> | |||
#include <msp430.h> | |||
#define SPI_SCLK_PIN BIT5 // P1.5 (UCB0CLK) | |||
#define SPI_MOSI_PIN BIT7 // P1.7 (UCB0SIMO) | |||
#define SPI_MISO_PIN BIT6 // P1.6 (UCB0SOMI) | |||
#define SPI_CS_PIN BIT4 // P1.4 (CS) | |||
void spi_init(void); | |||
void spi_send_byte(unsigned char data); | |||
int main(void) | |||
{ | |||
WDTCTL = WDTPW | WDTHOLD; // ウォッチドッグタイマを停止 | |||
spi_init(); // SPIの初期化 | |||
while (1) { | |||
P1OUT &= ~SPI_CS_PIN; // CSをLowにしてスレーブを選択 | |||
spi_send_byte(0x55); // データ (例: 0x55) を送信 | |||
P1OUT |= SPI_CS_PIN; // CSをHighにしてスレーブを解放 | |||
__delay_cycles(100000); // 100[ms]の遅延 | |||
} | |||
} | |||
void spi_init(void) | |||
{ | |||
P1SEL |= SPI_SCLK_PIN | SPI_MOSI_PIN | SPI_MISO_PIN; // SPI用のピンを選択 | |||
P1SEL2 |= SPI_SCLK_PIN | SPI_MOSI_PIN | SPI_MISO_PIN; | |||
P1DIR |= SPI_CS_PIN; // CSピンを出力に設定 | |||
P1OUT |= SPI_CS_PIN; // CSをHighに設定 | |||
UCB0CTL1 |= UCSWRST; // UCB0をリセット | |||
UCB0CTL0 |= UCCKPH | UCMSB | UCMST | UCSYNC; // MSBファースト, マスターモード, 同期モード | |||
UCB0CTL1 |= UCSSEL_2; // SMCLK | |||
UCB0BR0 = 0x02; // ボーレートを設定 (SMCLK / 2) | |||
UCB0BR1 = 0; | |||
UCB0CTL1 &= ~UCSWRST; // UCB0をリセット解除 | |||
} | |||
void spi_send_byte(unsigned char data) | |||
{ | |||
while (!(IFG2 & UCB0TXIFG)); // 送信バッファが空になるまで待機 | |||
UCB0TXBUF = data; // データを送信バッファに書き込む | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||