STM32F412應用開發筆記之八:迪文串口屏顯示驅動


迪文的顯示屏使用起來比較方便,其使用串口通訊,即可支持RS232,又可以支持TTL電平。在NUCLEO-F412ZG實驗板上,USART2已經引到了CN9上,我們就利用USART2來實現與迪文串口屏的通訊試驗。USART2硬件接口如下圖紅框所示:

我們在STM32CubeMX中配置USART2,打開“USART2 Configuration”界面,打開“GPIO Settings”標簽:

 

配置完成后,我們生成項目源碼,USART2的配置如下:

/* USART2 init function */

static void MX_USART2_UART_Init(void)

{

 

  huart2.Instance = USART2;

  huart2.Init.BaudRate = 115200;

  huart2.Init.WordLength = UART_WORDLENGTH_8B;

  huart2.Init.StopBits = UART_STOPBITS_1;

  huart2.Init.Parity = UART_PARITY_NONE;

  huart2.Init.Mode = UART_MODE_TX_RX;

  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;

  huart2.Init.OverSampling = UART_OVERSAMPLING_16;

  if (HAL_UART_Init(&huart2) != HAL_OK)

  {

    Error_Handler();

  }

}

在上述配置函數中,調用了HAL_UART_Init函數來初始化USART2,同時調用HAL_UART_MspInit函數來初始化硬件配置,HAL_UART_MspInit函數需要我們編寫供系統回調。

接下來我們編寫向屏寫數據的源碼,我們向屏寫氧氣百分比、氫氣百分比、甲烷百分比、乙炔百分比、乙烯百分比和丙烷百分比等數據。

//向屏寫數據,用於數據顯示

void SetDataToLCD(void)

{

  uint16_t length=SetVarDataLength;

  uint8_t txData[SetVarDataLength];

  uint16_t startAddress=0x0000;

 

  //對往下寫的數據作格式化轉換

  SendDataProcess(txData);

 

  //發送數據

  WriteDataToLCD(startAddress,txData,length);

}

其中SendDataProcess函數是對要寫的數據進行格式化,因為屏幕只能接受符合其要求格式的數據。WriteDataToLCD是我們封裝的向屏發送數據的函數:

//寫數據變量存儲器

void WriteDataToLCD(uint16_t startAddress,uint8_t txData[],uint16_t length)

{

  /*命令的長度由幀頭(2個字節)+數據長度(1個字節)+指令(1個字節)+起始地址(2個字節)+數據(長度為length)*/

  uint16_t cmd_Length=length+6;

  uint8_t cmd_VAR_Write[WriteDataCommandLength];

  cmd_VAR_Write[0]=0x5A;

  cmd_VAR_Write[1]=0xA5;

  cmd_VAR_Write[2]=(uint8_t)(length+3);

  cmd_VAR_Write[3]= FC_VAR_Write;

  cmd_VAR_Write[4]=(uint8_t)(startAddress>>8);//起始地址

  cmd_VAR_Write[5]=(uint8_t)startAddress;//起始地址

  for(int dataIndex=0;dataIndex<length;dataIndex++)

  {

    cmd_VAR_Write[dataIndex+6]=txData[dataIndex];

  }

 

  SendData(cmd_VAR_Write,cmd_Length);

}

編寫完成后我們運行調試:

 

調試無誤后,我們在IO終端中查看數據顯示結果,證明運行數據是沒有問題的。

 

接下來我們在先視頻上查看數據,與在IO終端中一致,就是說屏顯示的數據就是MCU發送給它的數據:

 

再來看看對傳感器做一下擾動時(用配氣儀和小型氣泵向傳感器管道送不同的氣)數據的變化,傳感器檢測對象變化是屏幕顯示也變化。

 

再來改變一下氣體成分和氣泵的轉速看看數據的變化:

 

經過以上實驗,NUCLEO-F412ZG通過串口與迪文串口屏通訊完全可行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM