MSP430G2553 - I2C
概要
I2C通信を行う場合、各レジスタを適切に設定して、必要に応じて割り込み処理を実装することにより、MSP430G2553マイコンでI2C通信を行うことができる。
各レジスタの設定は、通信モード、クロック周波数、スレーブアドレス等、アプリケーションの要件に応じて行う。
UCB0CTL1レジスタ
USCI_B0 (Universal Serial Communication Interface, module B0) モジュールの制御レジスタの1つである。
このレジスタは、I2C通信やSPI通信等のシリアル通信プロトコルの設定や動作を制御するために使用される。
主な機能と設定は以下の通りである。
- クロック源の選択 (UCSSEL)
UCSSELビットを使用して、USCI_B0モジュールのクロック源を選択する。- ACLK、SMCLK、または外部クロックから選択可能です。
- 同期モード選択 (UCMODE)
UCMODEビットを使用して、同期式通信プロトコル (I2C、SPI) を選択する。- マスター / スレーブモード選択 (UCMST)
UCMSTビットを使用して、USCI_B0モジュールをマスターまたはスレーブとして設定する。
- データビット数の設定 (UC7BIT)
UC7BITビットを使用して、データ長を7ビットまたは8ビットに設定する。
- クロック位相とポラリティの設定 (UCCKPH, UCCKPL)
UCCKPHビットとUCCKPLビットを使用して、SPIモードでのクロック位相とポラリティを設定する。
- ソフトウェアリセット (UCSWRST)
UCSWRSTビットを使用して、USCI_B0モジュールをリセットする。
これらの設定を適切に行うことにより、目的のシリアル通信プロトコルを実装して、他のデバイスとの通信を確立することができる。
UCB0CTL1レジスタは、USCI_B0モジュールの動作を細かく制御するための重要なレジスタの1つである。
UCB0CTL1レジスタは、I2C通信だけでなく、SPI通信でも使用される。
USCI_B0モジュールは、I2C通信とSPI通信の両方の通信プロトコルをサポートしているため、UCB0CTL1レジスタには両方のプロトコルに関連する設定が含まれている。
I2C通信に関連するビットは以下の通りである。
- UCTR
- UCTXSTT
- UCTXSTP
UCB0CTL1レジスタのビット
UCB0CTL1レジスタには、I2C通信モードで使用される3つの重要なビットがある。
以下に示すビットは、I2C通信におけるデータの送受信や、スタート・ストップコンディションの制御に使用される。
マスターモードでは、UCTXSTPビット、および、UCTXSTTビットを適切に設定することにより、I2C通信のタイミングを制御できる。
スレーブモードでは、UCTRビットを設定することにより、データの送信または受信を指定できる。
UCTR (Transmit / Receive Mode)
このビットは、I2Cスレーブモードでのデータの送受信方向を制御する。
- 0
- 受信モード (スレーブはマスターからデータを受信)
- 1
- 送信モード (スレーブはマスターにデータを送信)
UCTXSTT (Transmit START Condition)
このビットを1に設定する場合と、マスターモードでI2Cバスにスタートコンディションを送信する。
スタートコンディションは、データ転送の開始を示すために使用する。
- 0
- 影響なし
- 1
- I2Cバスにスタートコンディションを送信
UCTXSTP (Transmit STOP Condition)
このビットを1に設定する場合、マスターモードでI2Cバスにストップコンディションを送信する。
ストップコンディションは、データ転送の終了を示すために使用する。
- 0
- 影響なし
- 1
- I2Cバスにストップコンディションを送信
UCB0CTL0 : USCI_B0制御レジスタ0
- I2Cモードの選択(UCSYNC、UCMODE)
- マスター/スレーブモードの選択(UCMST)
- 応答確認の有効化(UCTR)
UCB0BR0、UCB0BR1 : USCI_B0ボーレートレジスタ
- I2Cの通信速度(クロック周波数)を設定
UCB0I2CSA : USCI_B0 I2Cスレーブアドレスレジスタ
- スレーブモードで使用するデバイスの自身のアドレスを設定
- マスターモードでは、通信先のスレーブデバイスのアドレスを設定
UCB0TXBUF : USCI_B0送信バッファレジスタ
- 送信するデータを書き込む
UCB0RXBUF : USCI_B0受信バッファレジスタ
- 受信したデータを読み出す
IE2 : 割り込み有効化レジスタ2
- UCB0TXIEビット
- 送信割り込みの有効化
- UCB0RXIEビット
- 受信割り込みの有効化
IFG2 : 割り込みフラグレジスタ2
- UCB0TXIFGビット
- 送信割り込みフラグ
- UCB0RXIFGビット
- 受信割り込みフラグ