学習日記--SPIプロトコルドライバLCD画面(2020年2月10日)

SPIの理論的基礎

SPI•(シリアル・ペリフェラル・インタフェース):
•シリアル・ペリフェラル・インタフェース、モトローラは、同期式シリアルインタフェース技術を導入していているが、高速、全二重、同期通信バスです。
•SPI主に四線式:
•SS(スレーブセレクト):デバイスからのイネーブル信号は、マスタ装置によって制御されます。;
•SCK(シリアルクロック):クロック信号線、マスタデバイスによって発行された。
•MOSI(マスター出力スレーブ入力):マスター出力/スレーブデバイスの入力ピン;
•MISO(マスタスレーブ出力入力):マスター入力/からデバイスの出力ピン。

SPIの長所と短所

1、SPIの利点は
、全二重通信支援1)
2)簡易通信
3)高速データ転送速度
2は、欠点
1)制御は、受信したデータかどうかを確認するために、肯定応答が割り当てられていないていないフロー
)2、いくつかの欠点の信頼性を有しています。
図3に示すように、特性
1)高速、同期、全二重、非差動、バス
2)マスタ-スレーブ通信モード

通信のSPIモード

•通信モードは、次の通り:
•モード0:CPOL = 0、CPHA = 0
•モード1:CPOL = 0、CPHA = 1。
•モード2:CPOL = 1、CPHA = 0。
•モード3:CPOL = 1、CPHA = 1つの
•クロック電極電気のCPOLは、有効な状態のための状態またはレベルは、クロック位相CPHAアイドル状態である構成のSCLKに使用される
•構成データが最初のいくつかのサンプルで使用されるエッジれる:
•CPOL = 0は、場合SCLK = 0を示していますアイドル状態、アクティブ状態SCLKがハイレベルである間
•CPOL = 1は、示す場合SCLK = 1、SCLKがローレベルでアクティブ状態、アイドル状態
•CPHA = 0は、データサンプルが最初に示されています第二エッジの間に送信リム、データ
•CPHA = 1、第二エッジでデータをサンプリング示し、エッジに送信される最初のデータ

LCD開発ボードを探します

図6は、240×240の解像度を有するLCDパネルの開発であります
ここに画像を挿入説明

LCDピン

1)PC3はSPI2_MOSIマスタアウト/スレーブピン;
PB13はSPI2_SCKクロックピンであるとして2)、
3)PC6のLCD_WR_RSチップセレクトピンの;
4)LCD_RESETリセットピンPC7がある
。5)LCD_POWER PB15電源端子です。
6)PA9 UART1ピンを送信している;
7)UART1あるピンP10を受信する;
8)PC 13 LED端子です。
延伸後、原理に従ってLCDピンを見つけることができるピンを見つけるために、STM32CubeMXにコンフィギュレーション・ピン

ピン配置

ここに画像を挿入説明

システムクロックを設定します

80MHzの最大内部クロック(デフォルト)システムクロックを使用します
ここに画像を挿入説明

LCDの設定パラメータ

ここに画像を挿入説明

LCD生産プロジェクト

1、カスタムプロジェクト名。
2.英語のパスが、それ以外の場合は、ブートファイルを手動で起動ファイルを追加する必要性によってコンパイルすることはできません失うことになります:startup_stm32l431xx.s
3、MDK-ARM V5開発ソフトウェア、すなわちKEIL5ソフトウェアを選択します。

コードの書かれた説明書

図1に示すように、初期化パラメータSPIハードウェアおよび通信プロトコル。
図2は、一方向のみSPI、すなわちのみ、3本のピンを使用し、すなわち、マスタアウト/スレーブクロック、チップセレクト;
; 3、および移植LCDドライバインタフェース機能
、英語文字列(LCDディスプレイインタフェース機能を4また、)文字を表示することができ、
図5に示すように、LCDディスプレイを使用して、機能インタフェース異なるフォントサイズの文字列を、
図6に示すように、LCDインタフェース機能サークル。
コール機能
1、HAL_SPI_Transmit(uint8_t SPI_HandleTypeDef * HSPI、。pDataを、uint16_tサイズ、タイムアウトのuint32_t);
2、HAL_GPIO_WritePin(GPIO_TypeDef
GPIO_Pin uint16_t GPIOX); LEDの点灯//主な機能
3、(遅延のuint32_t)空隙HAL_Delay;ヤン。ときに、関数

LCDドライバインタフェース機能と移植

ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

達成するためのコーディング

LCD_Init();//初始化LCD,该函数中调用的硬件初始化已经屏蔽吊,本教程使用的是CubeMX生成的硬件初始化 
while (1) 
{ 
LCD_Clear(BLACK);//清屏为黑色 
LCD_ShowString(5, 10, 240, 32, 32, "BearPi LCDTest");//显示字符串,字体大小32*32 LCD_ShowString(10, 50, 240, 16, 16, "Welcome to IoT CluB!");//显示字符串,字体大小16*16 
LCD_ShowString(10, 50+24, 240, 24, 24, "to IoT CluB!");//显示字符串,字体大小24*24 LCD_ShowString(10, 50+24+32, 240, 32, 32, "IoT CluB!");//显示字符串,字体大小32*32 
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);//点亮LED灯 HAL_Delay(1000);//延时1秒 LCD_Clear(BLUE);//清屏为蓝色 
LCD_Draw_Circle(120, 120, 100);//画圆 半径r=100 
LCD_Draw_Circle(120, 120, 80);//画圆 半径r=80 
LCD_Draw_Circle(120, 120, 60);//画圆 半径r=60 
LCD_Draw_Circle(120, 120, 40);//画圆 半径r=40 
LCD_Draw_Circle(120, 120, 20);//画圆 半径r=20 
LCD_Draw_Circle(120, 120, 1);//画圆 半径r=1 HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);//熄灭LED灯 HAL_Delay(1000);//延时1秒 
}

結果は

ここに画像を挿入説明

実験結果

ここに画像を挿入説明
ここに画像を挿入説明

リリース9件のオリジナルの記事 ウォンの賞賛0 ビュー272

おすすめ

転載: blog.csdn.net/quanqueen/article/details/104331248