[ART-PI] STM32H750XBH6RT-スレッドライトアップLCD

[ART-PI] STM32H750XBH6-はじめに

[ART-PI] STM32H750XBH6-RT-スレッドの最小限のシステム移行

[ART-PI] STM32H750XB-RTスレッドFreemodbusRS485スレーブ

[ART-PI] STM32H750XBH6-RTスレッドRTCおよびアラームコンポーネントをオンにします

[ART-PI] STM32H750XBH6RT-スレッドライトアップLCD

 

序文

  • ART-Piボードを購入しましたが、遊ぶ時間がありませんでした。今日は時間があり、GUIを実行させる予定です。
  • 今回は、ART-PiスリーピースセットのマルチメディアボードのLCDが点灯します。回路図で見るとSPI画面です。
  • ART-Piを使用しないBSPプロジェクト

 

構成とデバッグ

  • ART-Piの組み込み画面を駆動するには、menuconfigを使用して画面を構成する必要があります

2021-03-28_200602.png

2021-03-28_200731.png

2021-03-28_200806.png

2021-03-28_200849.png

  • menuconfigを使用してオンボードLCDをオフにする必要があります
  • コンパイル、ダウンロード、実行すると、LCDを点灯できず、ブートカードが半分切れており、SPI通信障害[白い画面]が表示されます。

2021-03-28_202125.png

2021-03-28_205515.png

Warning: There is no enough buffer for saving async log, please increase the ULOG_ASYNC_OUTPUT_BUF_SIZE option.
[1322] I/drv.spi: spi transfer error : 1
[1322] I/drv.spi_lcd: lcd_write_cmd error. 0
[2322] I/drv.spi: spi transfer error : 1
[2322] I/drv.spi_lcd: lcd_write_data error. 0
[3322] I/drv.spi: spi transfer error : 1
[3322] I/drv.spi_lcd: lcd_write_data error. 0
[4322] I/drv.spi: spi transfer error : 1
[4322] I/drv.spi_lcd: lcd_write_data error. 0
  • SPIドライバを確認してください。当面は問題ありません。ソフトウェアのデバッグにより、SPIが正常に送信できないことがわかりました。
  • SPIピン構成を確認し、問題を見つけます。SPI2のピンが構成されていません
  • STM32CubeMXを介してSPI2のピンを構成します。更新されます:stm32h7xx_hal_msp.c
  • ART-Pi公式ウェブサイトが提供するルーチンでSPI2のピン構成をコピーできます。
/**
* @brief SPI MSP Initialization
* This function configures the hardware resources used in this example
* @param hspi: SPI handle pointer
* @retval None
*/
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(hspi->Instance==SPI1)
  {
  /* USER CODE BEGIN SPI1_MspInit 0 */

  /* USER CODE END SPI1_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI1_CLK_ENABLE();

    __HAL_RCC_GPIOB_CLK_ENABLE();
    __HAL_RCC_GPIOG_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    /**SPI1 GPIO Configuration
    PB5     ------> SPI1_MOSI
    PG9     ------> SPI1_MISO
    PA5     ------> SPI1_SCK
    */
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
    HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /* USER CODE BEGIN SPI1_MspInit 1 */

  /* USER CODE END SPI1_MspInit 1 */
  }
  else if(hspi->Instance==SPI2) /* ART-Pi SPI LCD的引脚配置 */
  {
  /* USER CODE BEGIN SPI2_MspInit 0 */

  /* USER CODE END SPI2_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI2_CLK_ENABLE();

    __HAL_RCC_GPIOI_CLK_ENABLE();
    /**SPI2 GPIO Configuration
    PI1     ------> SPI2_SCK
    PI2     ------> SPI2_MISO
    PI3     ------> SPI2_MOSI
      */
    GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
    HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);

    /* SPI2 interrupt Init */
    HAL_NVIC_SetPriority(SPI2_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(SPI2_IRQn);
  /* USER CODE BEGIN SPI2_MspInit 1 */

  /* USER CODE END SPI2_MspInit 1 */
  }
  else if(hspi->Instance==SPI4)
  {
  /* USER CODE BEGIN SPI4_MspInit 0 */

  /* USER CODE END SPI4_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI4_CLK_ENABLE();

    __HAL_RCC_GPIOE_CLK_ENABLE();
    /**SPI4 GPIO Configuration
    PE2     ------> SPI4_SCK
    PE5     ------> SPI4_MISO
    PE6     ------> SPI4_MOSI
    */
    GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI4;
    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  /* USER CODE BEGIN SPI4_MspInit 1 */

  /* USER CODE END SPI4_MspInit 1 */
  }
}
  • 再コンパイル、ダウンロード、実行すると、LCDが正常に点灯することがわかりました

2021-03-28_205526.png

  • コードビューを介して、LCDドライバーが実行されています:drv_spi_ili9488.c内部

 

総括する

  • 問題が発生した場合は、最初にソフトウェアをデバッグし、注意深く分析し、比較して要約すると、問題を解決するためのアイデアが得られます。
  • ART-Piはリソースが豊富で、さらなる研究や研究に使用できます

おすすめ

転載: blog.csdn.net/tcjy1000/article/details/115287728