タッチディスプレイ gen4-uLCD-35DT > raw formatted uSDの画像をディスプレイに表示する (Diablo16 Serial Command資料の間違いで時間を溶かした)
動作環境
Ubuntu 18.04 LTS
display module: gen4-uLCD-35DT
Workshop 4 IDE v4.5.0.17 (on Windows 10 Pro)
MCU: STM32F446 Nuclero-64
STM32CubeIDE v1.0.1 (on Ubuntu 18.04 LTS)
概要
- microSDにraw formatted 画像イメージがある
- Graphics Composerにてraw uSDとして画像を用意する
- オフセット0とした
- Graphics Composerにてraw uSDとして画像を用意する
- microSDの画像をディスプレイに表示する
実装
手順の主なものは下記を参照。
3つの実装を追加した。
- A. Media Init
- B. Set Address Byte
- C. Display Image (RAW)
下記は追加分だけ記載。
disp_mediaSetByteAddress()については引数を使った実装にはまだなっていない。
STM32_serial.h
void disp_mediaInit(UART_HandleTypeDef *huartPtr);
void disp_mediaSetByteAddress(int Hi, int Low, UART_HandleTypeDef *huartPtr);
void disp_mediaDisplayImage(UART_HandleTypeDef *huartPtr);
STM32_serial.c
void disp_mediaInit(UART_HandleTypeDef *huartPtr)
{
char txbuf[20] = {0};
char rxbuf[20] = {0};
int pos=0;
txbuf[pos++] = 0xFF; // cmd
txbuf[pos++] = 0x25;
HAL_UART_Transmit(huartPtr, (uint8_t *)txbuf, pos, 300);
// Note: Diablo16 Serial Commands Reference Manualには
// 0x06しか返されないと記載があるが、0x06 0x00 0x01が返されるため3にしている
HAL_UART_Receive(huartPtr, (uint8_t *)rxbuf, 3, 500);
}
void disp_mediaSetByteAddress(int Hi, int Low, UART_HandleTypeDef *huartPtr)
{
char txbuf[20] = {0};
char rxbuf[20] = {0};
int pos=0;
txbuf[pos++] = 0xFF; // cmd
txbuf[pos++] = 0x2F;
txbuf[pos++] = 0x00; // HIword(MSB)
txbuf[pos++] = 0x00; // HIword(LSB)
txbuf[pos++] = 0x00; // LOword(MSB)
txbuf[pos++] = 0x00; // LOword(LSB)
HAL_UART_Transmit(huartPtr, (uint8_t *)txbuf, pos, 300);
HAL_UART_Receive(huartPtr, (uint8_t *)rxbuf, 1, 500);
}
void disp_mediaDisplayImage(UART_HandleTypeDef *huartPtr)
{
char txbuf[20] = {0};
char rxbuf[20] = {0};
int pos=0;
txbuf[pos++] = 0xFF; // cmd
txbuf[pos++] = 0x27; //
txbuf[pos++] = 0x00; // x(MSB)
txbuf[pos++] = 0x00; // x(LSB)
txbuf[pos++] = 0x00; // y(MSB)
txbuf[pos++] = 0x00; // y(LSB)
HAL_UART_Transmit(huartPtr, (uint8_t *)txbuf, pos, 300);
HAL_UART_Receive(huartPtr, (uint8_t *)rxbuf, 1, 500);
}
使用は順番に実行するだけ。
下記はSTM32でUART1にて使用する場合。
main.c
disp_mediaInit(&huart1);
disp_mediaSetByteAddress(0, 0, &huart1);
disp_mediaDisplayImage(&huart1);
実行例
補足
Media Initの応答に関する資料が間違ったいたため、時間を溶かした。
Workshop 4 IDEにてSerial Command Toolを使って応答を確認して気づいた。
Author And Source
この問題について(タッチディスプレイ gen4-uLCD-35DT > raw formatted uSDの画像をディスプレイに表示する (Diablo16 Serial Command資料の間違いで時間を溶かした)), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/3b135892db408a4dd2f4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .