Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.
Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.

TivaCでシフトレジスタにシリアルデータを送信する方法

TivaCマイコンは、シフトレジスタを含む周辺機器との通信が必要な組み込みアプリケーションでよく使用されます。この記事では、TivaCを使用して74HC595シフトレジスタにシリアルデータを入力する方法を説明します。

74HC595シフトレジスタは、シリアルデータをパラレルデータに変換できる一般的なICです。 LED、LCD画面、その他の周辺機器などのデバイスを制御するために使用できる8ビットの出力を備えています。シフトレジスタを使用すると、マイコンに必要なI/Oピンの数を減らすことができます。

74HC595にシリアルデータを入力するには、TivaCは3つの信号、つまりシリアルデータ(DS)、クロックパルス(SH_CP)、およびラッチ信号(ST_CP)を生成する必要があります。

シリアルデータは、DSピンに1ビットずつ送信されます。 SH_CPピン上の各クロックパルスは、データをシフトレジスタに1ビットシフトします。 8ビットすべてがシフトされると、ST_CPピン上のパルスがシフトレジスタからストレージレジスタにデータをラッチし、データはパラレル出力ピン(Q0〜Q7)に表示されます。

TivaCで74HC595と通信するためのピンの構成は、初期化セクションで行う必要があります。 DS、SH_CP、およびST_CPに選択された3つのピンは、デジタル出力として構成する必要があります。 たとえば、DSにPA2ピン、SH_CPにPA3ピン、ST_CPにPA4ピンを使用する場合、初期化コードは次のようになります(TivaWareライブラリを使用)。

// ピンの宣言
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4

// GPIOポートAの初期化
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));

// ピンをデジタル出力として構成
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);

ピンを構成したら、各ビットを送信し、対応するクロックパルスを生成するループを使用して、74HC595にデータを送信できます。

たとえば、74HC595に0x55(2進数で01010101)の値を送信するには、次の手順を実行します。

uint8_t data = 0x55;

// ラッチをLOWに設定
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);

// 各ビットを送信
for (int i = 7; i >= 0; i--) {
  // データを設定
  GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);

  // クロックパルスを生成
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}


// 出力を更新するためにラッチをHIGHに設定
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);

上記のコードは、最上位ビット(MSB)から開始して、データの各ビットをループします。 各ビットはDATA_PINに書き込まれ、次にCLOCK_PINにクロックパルスが生成されて、ビットがシフトレジスタにシフトされます。 最後に、LATCH_PINがHIGHに設定され、データがラッチされて74HC595の出力が更新されます。

TivaCで74HC595シフトレジスタを介して周辺機器を制御するには、シフトレジスタの動作とTivaCでのGPIOピンの構成方法を理解する必要があります。 TivaWareライブラリ関数と単純な制御ロジックを使用することにより、さまざまな周辺機器と簡単に通信できます。

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です