「MSP430G2553 - I2C」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == I2C通信を行う場合、各レジスタを適切に設定して、必要に応じて割り込み処理を実装することにより、MSP430G2553マイコンでI2C通信を行うことができる。<br> <br> 各レジスタの設定は、通信モード、クロック周波数、スレーブアドレス等、アプリケーションの要件に応じて行う。<br> <br><br> == UCB0CTL1レジスタ == USCI_B0 (Universal Serial Communication Interf…」)
 
73行目: 73行目:


== UCB0CTL0 : USCI_B0制御レジスタ0 ==
== UCB0CTL0 : USCI_B0制御レジスタ0 ==
* I2Cモードの選択(UCSYNC、UCMODE)
==== UCSYNC : 同期モード有効ビット (I2Cモードの選択) ====
* マスター/スレーブモードの選択(UCMST)
* 0
* 応答確認の有効化(UCTR)
*: 非同期モード (UART通信)
* 1
*: 同期モード (I2C、SPI通信)
<br>
==== UCMODE : モード選択ビット (I2Cモードの選択) ====
* 00
*: 3線式SPI (UCxSIMO、UCxSOMI、UCxCLK)
* 01
*: 4線式SPI (UCxSIMO、UCxSOMI、UCxCLK、UCxSTE)
* 10
*: I2Cモード
* 11
*: 予約済み
<br>
==== UCMST : マスター / スレーブモード選択ビット ====
* 0
*: スレーブモード
* 1
*: マスターモード
<br>
==== UCTR : 送信 / 受信モード選択ビット (I2Cモードでのみ使用) ====
応答確認の有効化を行うビットである。<br>
* 0
*: 受信モード
* 1
*: 送信モード
<br><br>
 
== UCB0BR0, UCB0BR1 : USCI_B0ボーレートレジスタ ==
<code>UCB0CLK</code>レジスタ、<code>UCB0BR0</code>レジスタ、<code>UCB0BR1</code>の3つのレジスタを組み合わせて、I2Cの通信速度を設定する。<br>
<math>\mbox{ 通 信 速 度 } = \dfrac{\mbox{UCB0CLK}}{(\mbox{UCB0BR0} + \mbox{UCB0BR1} \times 256)}</math><br>
<br><br>
 
== UCB0I2CSA : USCI_B0 I2Cスレーブアドレスレジスタ ==
スレーブモードでは、自身のスレーブアドレスを設定する。<br>
マスターモードでは、通信するスレーブデバイスのアドレスを設定する。<br>
<br><br>
 
== UCB0TXBUF : USCI_B0送信バッファレジスタ ==
送信するデータを書き込むレジスタである。<br>
<br>
このレジスタにデータを書き込むと、自動的に送信が開始される。<br>
<br><br>
 
== UCB0RXBUF : USCI_B0受信バッファレジスタ ==
受信したデータを読み出すレジスタである。<br>
<br>
新しいデータを受信すると、<code>UCB0RXIFG</code>フラグがセットされる。<br>
<br><br>
 
== E2 : 割り込み有効化レジスタ2 ==
==== UCB0TXIE : USCI_B0送信割り込み有効ビット ====
* 0
*: 割り込み無効
* 1
*: 割り込み有効
<br>
==== UCB0RXIE : USCI_B0受信割り込み有効ビット ====
* 0
*: 割り込み無効
* 1
*: 割り込み有効
<br><br>
 
== IFG2 : 割り込みフラグレジスタ2 ==
==== UCB0TXIFG : USCI_B0送信割り込みフラグ ====
* 0
*: 割り込みなし
* 1
*: 送信バッファが空になり、新しいデータを書き込み可能
<br>
==== UCB0RXIFG : USCI_B0受信割り込みフラグ ====
* 0
*: 割り込みなし
* 1
*: 新しいデータが受信バッファに到着
<br><br>
<br><br>



2024年6月3日 (月) 03:38時点における版

概要

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

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ビット
    受信割り込みフラグ