Introducción al desarrollo K210-bare metal (7) Pantalla 1.14TFT de pantalla LCD

Placa de desarrollo: K210 AIRV R3 versión widora

Entorno de desarrollo: kendryte IDE official

Documentos de referencia necesarios: Guía de programación del SDK independiente v0.5.0 y esquema de Widora

(1) Cree una nueva carpeta 07my_code_114tft

Earth + Gift No se encuentra ninguna pantalla tft o OLED, pruebe esta pantalla para ver si se puede manejar

Dependencias de instalación

Limpiar + construir

Listo para el medio ambiente

(2) Modificación de código

1.14 Diagrama del principio de la pantalla TFT

RESETN está conectado al botón de reinicio, no te preocupes

LCD_DC -> IO38

SPI0_D0 -> SPI0_D0

LCD_WR -> IO39

LCD_CS2-> IO37

Si se usa SPI0_D0 -> SPI0_D0, cámbielo primero a 0 (esto es incorrecto y el error se descubrió más tarde. Busqué el problema durante mucho tiempo)

Mira lcd_init ();

Mira qué calabaza hay en tft_hard_init ()

init_dcx ()

Ver que el puerto IO llamado DCX esté configurado con un valor de 2

Ver si hay alguna configuración

LCD_DC -> IO38

Mira cuales

RESETN está conectado al botón de reinicio, no te preocupes

LCD_DC -> IO38

SPI0_D0 -> SPI0_D0

LCD_WR -> IO39

LCD_CS2-> IO37

LCD_WR corresponde a SCL, LCD_CS2 corresponde a CS

Seleccionar en SPI0, guardar

Primero compile y descargue para ver si se muestra

Sin lana, sigue cambiando

SYSCTL_POWER_BANK1 改为 SYSCTL_POWER_BANK6

Intenta quemar de nuevo

Aún así la lana no respondió, sigue cambiando

Cambiar de 8 cables a 3 cables estándar

Otras cosas deberían cambiarse 

Descargando y grabando, todavía no hay respuesta

 

(6) Sigue buscando problemas

Esto se cambia a 1, lo cual es incorrecto antes, 0 está deshabilitado, 1 es habilitado, es necesario iniciar spi0

Quemar finalmente demuestra que es realmente difícil

 

PD 

Modificando esto, ajusta la dirección del lienzo

 

Lo ajusté normalmente aquí, puedes consultar directamente mi código y aprender a modificar

La cámara está expuesta y la cámara también está expuesta.

1.14 La pantalla LCD terminó de aprender, nos vemos la próxima vez

Dog B CSDN no tiene función de archivo adjunto de carga

Enlace: https://pan.baidu.com/s/1jyM48Jd1bFQWudVBybI97w 
Código de extracción: nynu

 

código main.c

#include <fpioa.h>
#include <lcd.h>
#include <sleep.h>
#include <stdio.h>
#include <sysctl.h>

#include "icon_generate.h"

uint32_t g_lcd_gram[LCD_X_MAX * LCD_Y_MAX / 2] __attribute__((aligned(128)));

static void io_set_power(void) {
  sysctl_set_power_mode(SYSCTL_POWER_BANK6, SYSCTL_POWER_V18);
}

static void io_mux_init(void) { sysctl_set_spi0_dvp_data(1); }

int main(void) {
  printf("lcd test\n");

  io_mux_init();
  io_set_power();

  lcd_init();
  lcd_clear(RED);
  msleep(500);
  lcd_clear(GREEN);
  msleep(500);
  lcd_clear(BLUE);
  msleep(500);
  lcd_clear(WHITE);

  lcd_set_direction(DIR_XY_RLUD);
  lcd_draw_picture(0, 0, 240, 160, g_lcd_gram);
  lcd_draw_string(120, 40, "Canaan", CYAN);
  lcd_draw_picture((240 - IMAGE_HEIGHT) / 2, (320 - IMAGE_WIDTH) / 2,
                   IMAGE_HEIGHT, IMAGE_WIDTH, rgb_image);

  lcd_set_direction(DIR_XY_RLUD);
  lcd_draw_string(60, 240, "Kendryte K210", ORANGE);
  lcd_draw_string(100, 100, "A", ORANGE);
  lcd_draw_string(100, 90, "B", ORANGE);
  lcd_draw_string(90, 100, "C", ORANGE);
  lcd_draw_string(90, 90, "D", ORANGE);

  while (1)
    ;
}

 

Supongo que te gusta

Origin blog.csdn.net/jwdeng1995/article/details/108036166
Recomendado
Clasificación