MSP430G2553 - I2C
概要
I2C通信を行う場合、各レジスタを適切に設定して、必要に応じて割り込み処理を実装することにより、MSP430G2553マイコンでI2C通信を行うことができる。
各レジスタの設定は、通信モード、クロック周波数、スレーブアドレス等、アプリケーションの要件に応じて行う。
UCB0CTL1レジスタ
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
UCSYNC : 同期モード有効ビット (I2Cモードの選択)
- 0
- 非同期モード (UART通信)
 
 - 1
- 同期モード (I2C、SPI通信)
 
 
UCMODE : モード選択ビット (I2Cモードの選択)
- 00
- 3線式SPI (UCxSIMO、UCxSOMI、UCxCLK)
 
 - 01
- 4線式SPI (UCxSIMO、UCxSOMI、UCxCLK、UCxSTE)
 
 - 10
- I2Cモード
 
 - 11
- 予約済み
 
 
UCMST : マスター / スレーブモード選択ビット
- 0
- スレーブモード
 
 - 1
- マスターモード
 
 
UCTR : 送信 / 受信モード選択ビット (I2Cモードでのみ使用)
応答確認の有効化を行うビットである。
- 0
- 受信モード
 
 - 1
- 送信モード
 
 
UCB0BR0, UCB0BR1 : USCI_B0ボーレートレジスタ
UCB0CLKレジスタ、UCB0BR0レジスタ、UCB0BR1の3つのレジスタを組み合わせて、I2Cの通信速度を設定する。
UCB0I2CSA : USCI_B0 I2Cスレーブアドレスレジスタ
スレーブモードでは、自身のスレーブアドレスを設定する。
マスターモードでは、通信するスレーブデバイスのアドレスを設定する。
UCB0TXBUF : USCI_B0送信バッファレジスタ
送信するデータを書き込むレジスタである。
このレジスタにデータを書き込むと、自動的に送信が開始される。
UCB0RXBUF : USCI_B0受信バッファレジスタ
受信したデータを読み出すレジスタである。
新しいデータを受信すると、UCB0RXIFGフラグがセットされる。
E2 : 割り込み有効化レジスタ2
UCB0TXIE : USCI_B0送信割り込み有効ビット
- 0
- 割り込み無効
 
 - 1
- 割り込み有効
 
 
UCB0RXIE : USCI_B0受信割り込み有効ビット
- 0
- 割り込み無効
 
 - 1
- 割り込み有効
 
 
IFG2 : 割り込みフラグレジスタ2
UCB0TXIFG : USCI_B0送信割り込みフラグ
- 0
- 割り込みなし
 
 - 1
- 送信バッファが空になり、新しいデータを書き込み可能
 
 
UCB0RXIFG : USCI_B0受信割り込みフラグ
- 0
- 割り込みなし
 
 - 1
- 新しいデータが受信バッファに到着
 
 
UCB0BR0、UCB0BR1 : USCI_B0ボーレートレジスタ
- I2Cの通信速度(クロック周波数)を設定
 
UCB0I2CSA : USCI_B0 I2Cスレーブアドレスレジスタ
- スレーブモードで使用するデバイスの自身のアドレスを設定
 - マスターモードでは、通信先のスレーブデバイスのアドレスを設定
 
UCB0TXBUF : USCI_B0送信バッファレジスタ
- 送信するデータを書き込む
 
UCB0RXBUF : USCI_B0受信バッファレジスタ
- 受信したデータを読み出す
 
IE2 : 割り込み有効化レジスタ2
- UCB0TXIEビット
- 送信割り込みの有効化
 
 - UCB0RXIEビット
- 受信割り込みの有効化
 
 
IFG2 : 割り込みフラグレジスタ2
- UCB0TXIFGビット
- 送信割り込みフラグ
 
 - UCB0RXIFGビット
- 受信割り込みフラグ