commit 7958154a958799fd3a9b44b1cae99ea260276b57
parent 2b0c170e9c9ead6241e2a039bf2d195f5cfb2b7b
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Fri, 27 Mar 2026 19:10:14 -0300
Eliminar controlador de display por interfaz paralela
Diffstat:
2 files changed, 0 insertions(+), 387 deletions(-)
diff --git a/firmware/app/inc/display.h b/firmware/app/inc/display.h
@@ -1,28 +0,0 @@
-#ifndef _DISPLAY_H_
-#define _DISPLAY_H_
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- DISPLAY_CONNECTION_GPIO_4BITS,
- DISPLAY_CONNECTION_GPIO_8BITS,
-} display_connection_t;
-
-typedef struct {
- display_connection_t connection;
-} display_t;
-
-void display_init(display_connection_t connection);
-void display_set_cursor_pos(uint8_t x, uint8_t y);
-void display_write_string(const char * str);
-void display_clear(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _DISPLAY_H_ */
diff --git a/firmware/app/src/display.c b/firmware/app/src/display.c
@@ -1,359 +0,0 @@
-#include "display.h"
-#include "main.h"
-#include <stdbool.h>
-
-// Demo includes
-#include "logger.h"
-#include "dwt.h"
-#include "systick.h"
-
-// Functional states
-#ifndef OFF
-#define OFF 0
-#endif
-#ifndef ON
-#define ON (!OFF)
-#endif
-
-// Electrical states
-#ifndef LOW
-#define LOW 0
-#endif
-#ifndef HIGH
-#define HIGH (!LOW)
-#endif
-
-#define DISPLAY_IR_CLEAR_DISPLAY 0b00000001
-#define DISPLAY_IR_SET_CURSOR_HOME 0b00000010
-#define DISPLAY_IR_ENTRY_MODE_SET 0b00000100
-#define DISPLAY_IR_DISPLAY_CONTROL 0b00001000
-#define DISPLAY_IR_FUNCTION_SET 0b00100000
-#define DISPLAY_IR_SET_DDRAM_ADDR 0b10000000
-
-#define DISPLAY_IR_ENTRY_MODE_SET_INCREMENT 0b00000010
-#define DISPLAY_IR_ENTRY_MODE_SET_DECREMENT 0b00000000
-#define DISPLAY_IR_ENTRY_MODE_SET_SHIFT 0b00000001
-#define DISPLAY_IR_ENTRY_MODE_SET_NO_SHIFT 0b00000000
-
-#define DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_ON 0b00000100
-#define DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_OFF 0b00000000
-#define DISPLAY_IR_DISPLAY_CONTROL_CURSOR_ON 0b00000010
-#define DISPLAY_IR_DISPLAY_CONTROL_CURSOR_OFF 0b00000000
-#define DISPLAY_IR_DISPLAY_CONTROL_BLINK_ON 0b00000001
-#define DISPLAY_IR_DISPLAY_CONTROL_BLINK_OFF 0b00000000
-
-#define DISPLAY_IR_FUNCTION_SET_8BITS 0b00010000
-#define DISPLAY_IR_FUNCTION_SET_4BITS 0b00000000
-#define DISPLAY_IR_FUNCTION_SET_2LINES 0b00001000
-#define DISPLAY_IR_FUNCTION_SET_1LINE 0b00000000
-#define DISPLAY_IR_FUNCTION_SET_5x10DOTS 0b00000100
-#define DISPLAY_IR_FUNCTION_SET_5x8DOTS 0b00000000
-
-#define DISPLAY_20x4_LINE1_FIRST_CHARACTER_ADDRESS 0
-#define DISPLAY_20x4_LINE2_FIRST_CHARACTER_ADDRESS 64
-#define DISPLAY_20x4_LINE3_FIRST_CHARACTER_ADDRESS 20
-#define DISPLAY_20x4_LINE4_FIRST_CHARACTER_ADDRESS 84
-
-#define DISPLAY_RS_INSTRUCTION 0
-#define DISPLAY_RS_DATA 1
-
-#define DISPLAY_RW_WRITE 0
-#define DISPLAY_RW_READ 1
-
-#define DISPLAY_PIN_RS 4
-#define DISPLAY_PIN_RW 5
-#define DISPLAY_PIN_EN 6
-#define DISPLAY_PIN_D0 7
-#define DISPLAY_PIN_D1 8
-#define DISPLAY_PIN_D2 9
-#define DISPLAY_PIN_D3 10
-#define DISPLAY_PIN_D4 11
-#define DISPLAY_PIN_D5 12
-#define DISPLAY_PIN_D6 13
-#define DISPLAY_PIN_D7 14
-
-#define DISPLAY_PIN_D4_PORT 0
-#define DISPLAY_PIN_D4_PIN 0
-#define DISPLAY_PIN_D5_PORT 0
-#define DISPLAY_PIN_D5_PIN 0
-#define DISPLAY_PIN_D6_PORT 0
-#define DISPLAY_PIN_D6_PIN 0
-#define DISPLAY_PIN_D7_PORT 0
-#define DISPLAY_PIN_D7_PIN 0
-#define DISPLAY_PIN_EN_PORT 0
-#define DISPLAY_PIN_EN_PIN 0
-#define DISPLAY_PIN_RS_PORT 0
-#define DISPLAY_PIN_RS_PIN 0
-
-#define DISPLAY_DEL_37US 37ul
-#define DISPLAY_DEL_US 5ul
-
-static display_t display;
-static bool initial_comm_completed;
-
-// Private functions declaration
-static void display_pin_write(uint8_t pin_name, int value);
-static void display_data_bus_write(uint8_t byte);
-static void display_code_write(bool type, uint8_t data_bus);
-
-// Public functions definition
-void display_init(display_connection_t connection)
-{
- display.connection = connection;
-
- initial_comm_completed = false;
-
- HAL_Delay(50);
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_FUNCTION_SET |
- DISPLAY_IR_FUNCTION_SET_8BITS);
- HAL_Delay(5);
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_FUNCTION_SET |
- DISPLAY_IR_FUNCTION_SET_8BITS);
- HAL_Delay(1);
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_FUNCTION_SET |
- DISPLAY_IR_FUNCTION_SET_8BITS);
- HAL_Delay(1);
-
- switch(display.connection) {
- case DISPLAY_CONNECTION_GPIO_8BITS:
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_FUNCTION_SET |
- DISPLAY_IR_FUNCTION_SET_8BITS |
- DISPLAY_IR_FUNCTION_SET_2LINES |
- DISPLAY_IR_FUNCTION_SET_5x8DOTS);
- HAL_Delay(1);
- break;
-
- case DISPLAY_CONNECTION_GPIO_4BITS:
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_FUNCTION_SET |
- DISPLAY_IR_FUNCTION_SET_4BITS);
- HAL_Delay(1);
-
- initial_comm_completed = true;
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_FUNCTION_SET |
- DISPLAY_IR_FUNCTION_SET_4BITS |
- DISPLAY_IR_FUNCTION_SET_2LINES |
- DISPLAY_IR_FUNCTION_SET_5x8DOTS);
- HAL_Delay(1);
- break;
- }
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_DISPLAY_CONTROL |
- DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_OFF |
- DISPLAY_IR_DISPLAY_CONTROL_CURSOR_OFF |
- DISPLAY_IR_DISPLAY_CONTROL_BLINK_OFF);
- HAL_Delay(1);
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_CLEAR_DISPLAY);
- HAL_Delay(1);
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_ENTRY_MODE_SET |
- DISPLAY_IR_ENTRY_MODE_SET_INCREMENT |
- DISPLAY_IR_ENTRY_MODE_SET_NO_SHIFT);
- HAL_Delay(1);
-
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_DISPLAY_CONTROL |
- DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_ON |
- DISPLAY_IR_DISPLAY_CONTROL_CURSOR_OFF |
- DISPLAY_IR_DISPLAY_CONTROL_BLINK_OFF);
- HAL_Delay(1);
-}
-
-void display_clear(void)
-{
- display_code_write(DISPLAY_RS_INSTRUCTION, DISPLAY_IR_CLEAR_DISPLAY);
-
- HAL_Delay(1);
-}
-
-void display_set_cursor_pos(uint8_t x, uint8_t y)
-{
- switch(y) {
- case 0:
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_SET_DDRAM_ADDR |
- (DISPLAY_20x4_LINE1_FIRST_CHARACTER_ADDRESS + x));
- //HAL_Delay(1);
- break;
-
- case 1:
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_SET_DDRAM_ADDR |
- (DISPLAY_20x4_LINE2_FIRST_CHARACTER_ADDRESS + x));
- //HAL_Delay(1);
- break;
-
- case 2:
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_SET_DDRAM_ADDR |
- (DISPLAY_20x4_LINE3_FIRST_CHARACTER_ADDRESS + x));
- //HAL_Delay(1);
- break;
-
- case 3:
- display_code_write(DISPLAY_RS_INSTRUCTION,
- DISPLAY_IR_SET_DDRAM_ADDR |
- (DISPLAY_20x4_LINE4_FIRST_CHARACTER_ADDRESS + x));
- //HAL_Delay(1);
- break;
- }
-}
-
-void display_write_string(const char *str)
-{
- while (*str) {
- display_code_write(DISPLAY_RS_DATA, *str++);
- }
-}
-
-// Private functions definitions
-static void display_code_write( bool type, uint8_t data_bus )
-{
- if (type == DISPLAY_RS_INSTRUCTION)
- {
- display_pin_write(DISPLAY_PIN_RS, DISPLAY_RS_INSTRUCTION);
- }
- else
- {
- display_pin_write(DISPLAY_PIN_RS, DISPLAY_RS_DATA);
- }
-
- display_pin_write(DISPLAY_PIN_RW, DISPLAY_RW_WRITE);
- display_data_bus_write(data_bus);
- systick_delay_us(DISPLAY_DEL_37US);
-}
-
-static void display_pin_write(uint8_t pin_name, int value)
-{
- switch(display.connection)
- {
- /*
- case DISPLAY_CONNECTION_GPIO_8BITS:
- switch(pin_name)
- {
- case DISPLAY_PIN_D0:
- HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin, value);
- break;
- case DISPLAY_PIN_D1:
- HAL_GPIO_WritePin(D1_GPIO_Port, D1_Pin, value);
- break;
- case DISPLAY_PIN_D2:
- HAL_GPIO_WritePin(D2_GPIO_Port, D2_Pin, value);
- break;
- case DISPLAY_PIN_D3:
- HAL_GPIO_WritePin(D3_GPIO_Port, D3_Pin, value);
- break;
- case DISPLAY_PIN_D4:
- HAL_GPIO_WritePin(D4_GPIO_Port, D4_Pin, value);
- break;
- case DISPLAY_PIN_D5:
- HAL_GPIO_WritePin(D5_GPIO_Port, D5_Pin, value);
- break;
- case DISPLAY_PIN_D6:
- HAL_GPIO_WritePin(D6_GPIO_Port, D6_Pin, value);
- break;
- case DISPLAY_PIN_D7:
- HAL_GPIO_WritePin(D7_GPIO_Port, D7_Pin, value);
- break;
- case DISPLAY_PIN_RS:
- HAL_GPIO_WritePin(D8_GPIO_Port, D8_Pin, value);
- break;
- case DISPLAY_PIN_EN:
- HAL_GPIO_WritePin(D9_GPIO_Port, D9_Pin, value);
- break;
- case DISPLAY_PIN_RW:
- default:
- break;
- }
- break;
- */
-
- case DISPLAY_CONNECTION_GPIO_4BITS:
- switch(pin_name)
- {
- case DISPLAY_PIN_D4:
- HAL_GPIO_WritePin(DISPLAY_PIN_D4_PORT, DISPLAY_PIN_D4_PIN, value);
- break;
- case DISPLAY_PIN_D5:
- HAL_GPIO_WritePin(DISPLAY_PIN_D5_PORT, DISPLAY_PIN_D5_PIN, value);
- break;
- case DISPLAY_PIN_D6:
- HAL_GPIO_WritePin(DISPLAY_PIN_D6_PORT, DISPLAY_PIN_D6_PIN, value);
- break;
- case DISPLAY_PIN_D7:
- HAL_GPIO_WritePin(DISPLAY_PIN_D7_PORT, DISPLAY_PIN_D7_PIN, value);
- break;
- case DISPLAY_PIN_RS:
- HAL_GPIO_WritePin(DISPLAY_PIN_RS_PORT, DISPLAY_PIN_RS_PIN, value);
- break;
- case DISPLAY_PIN_EN:
- HAL_GPIO_WritePin(DISPLAY_PIN_EN_PORT, DISPLAY_PIN_EN_PIN, value);
- break;
-
- case DISPLAY_PIN_RW:
- default:
- break;
- }
- default:
- break;
- }
-}
-
-static void display_data_bus_write(uint8_t data_bus)
-{
- display_pin_write(DISPLAY_PIN_EN, OFF);
- display_pin_write(DISPLAY_PIN_D7, data_bus & 0b10000000);
- display_pin_write(DISPLAY_PIN_D6, data_bus & 0b01000000);
- display_pin_write(DISPLAY_PIN_D5, data_bus & 0b00100000);
- display_pin_write(DISPLAY_PIN_D4, data_bus & 0b00010000);
-
- switch(display.connection)
- {
- case DISPLAY_CONNECTION_GPIO_8BITS:
- display_pin_write(DISPLAY_PIN_D3, data_bus & 0b00001000);
- display_pin_write(DISPLAY_PIN_D2, data_bus & 0b00000100);
- display_pin_write(DISPLAY_PIN_D1, data_bus & 0b00000010);
- display_pin_write(DISPLAY_PIN_D0, data_bus & 0b00000001);
- break;
-
- case DISPLAY_CONNECTION_GPIO_4BITS:
- if (true == initial_comm_completed)
- {
- display_pin_write(DISPLAY_PIN_EN, ON);
- //HAL_Delay(1);
- systick_delay_us(DISPLAY_DEL_US);
-
- display_pin_write(DISPLAY_PIN_EN, OFF);
- //HAL_Delay(1);
- systick_delay_us(DISPLAY_DEL_US);
-
- display_pin_write(DISPLAY_PIN_D7, data_bus & 0b00001000);
- display_pin_write(DISPLAY_PIN_D6, data_bus & 0b00000100);
- display_pin_write(DISPLAY_PIN_D5, data_bus & 0b00000010);
- display_pin_write(DISPLAY_PIN_D4, data_bus & 0b00000001);
- }
- default:
- break;
- }
-
- display_pin_write(DISPLAY_PIN_EN, ON);
- //HAL_Delay(1);
- systick_delay_us(DISPLAY_DEL_US);
-
- display_pin_write(DISPLAY_PIN_EN, OFF);
- //HAL_Delay(1);
- systick_delay_us(DISPLAY_DEL_US);
-}