From 61c4faab66dc125d83847d01e87f443f9d6e4ccf Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Sat, 18 May 2019 22:37:49 +0200 Subject: [PATCH] refact(display): Factor out display code --- ips/Makefile | 16 ++-- ips/main.c | 91 ----------------------- lib/card10/card10.c | 12 ++- {ips => lib/gfx}/Fonts/Release_Notes.html | 0 {ips => lib/gfx}/Fonts/font12.c | 0 {ips => lib/gfx}/Fonts/font12CN.c | 0 {ips => lib/gfx}/Fonts/font16.c | 0 {ips => lib/gfx}/Fonts/font20.c | 0 {ips => lib/gfx}/Fonts/font24.c | 0 {ips => lib/gfx}/Fonts/font24CN.c | 0 {ips => lib/gfx}/Fonts/font8.c | 0 {ips => lib/gfx}/Fonts/fonts.h | 0 {ips => lib/gfx}/GUI_DEV/DEV_Config.c | 0 {ips => lib/gfx}/GUI_DEV/DEV_Config.h | 0 {ips => lib/gfx}/GUI_DEV/GUI_Paint.c | 0 {ips => lib/gfx}/GUI_DEV/GUI_Paint.h | 0 {ips => lib/gfx}/LCD/LCD_Driver.c | 0 {ips => lib/gfx}/LCD/LCD_Driver.h | 0 lib/gfx/display.c | 89 ++++++++++++++++++++++ lib/gfx/display.h | 5 ++ 20 files changed, 114 insertions(+), 99 deletions(-) rename {ips => lib/gfx}/Fonts/Release_Notes.html (100%) rename {ips => lib/gfx}/Fonts/font12.c (100%) rename {ips => lib/gfx}/Fonts/font12CN.c (100%) rename {ips => lib/gfx}/Fonts/font16.c (100%) rename {ips => lib/gfx}/Fonts/font20.c (100%) rename {ips => lib/gfx}/Fonts/font24.c (100%) rename {ips => lib/gfx}/Fonts/font24CN.c (100%) rename {ips => lib/gfx}/Fonts/font8.c (100%) rename {ips => lib/gfx}/Fonts/fonts.h (100%) rename {ips => lib/gfx}/GUI_DEV/DEV_Config.c (100%) rename {ips => lib/gfx}/GUI_DEV/DEV_Config.h (100%) rename {ips => lib/gfx}/GUI_DEV/GUI_Paint.c (100%) rename {ips => lib/gfx}/GUI_DEV/GUI_Paint.h (100%) rename {ips => lib/gfx}/LCD/LCD_Driver.c (100%) rename {ips => lib/gfx}/LCD/LCD_Driver.h (100%) create mode 100644 lib/gfx/display.c create mode 100644 lib/gfx/display.h diff --git a/ips/Makefile b/ips/Makefile index 2f79eeb2..7dade512 100644 --- a/ips/Makefile +++ b/ips/Makefile @@ -81,6 +81,7 @@ SRCS += font24CN.c SRCS += image.c SRCS += image2.c SRCS += card10.c +SRCS += display.c # Where to find source files for this test @@ -105,13 +106,16 @@ VPATH += ../lib/bosch/BME680_driver IPATH += ../lib/bosch/BMA400-API VPATH += ../lib/bosch/BMA400-API -IPATH += LCD -IPATH += GUI_DEV -IPATH += Fonts +IPATH += ../lib/gfx +IPATH += ../lib/gfx/LCD +IPATH += ../lib/gfx/GUI_DEV +IPATH += ../lib/gfx/Fonts + +VPATH += ../lib/gfx +VPATH += ../lib/gfx/LCD +VPATH += ../lib/gfx/GUI_DEV +VPATH += ../lib/gfx/Fonts -VPATH += LCD -VPATH += GUI_DEV -VPATH += Fonts VPATH += image # Enable assertion checking for development diff --git a/ips/main.c b/ips/main.c index eb7bf1d7..caa46ddd 100644 --- a/ips/main.c +++ b/ips/main.c @@ -41,15 +41,8 @@ */ /***** Includes *****/ -#include "mxc_config.h" -#include "led.h" -#include "board.h" #include "tmr_utils.h" -#include "i2c.h" -#include "rtc.h" -#include "spi.h" #include "gpio.h" -#include "LCD/LCD_Driver.h" #include "GUI_DEV/GUI_Paint.h" #include "Fonts/fonts.h" #include "image/image.h" @@ -61,78 +54,6 @@ #include <stdint.h> #include <string.h> -// Parameters for PWM output -#define PORT_PWM PORT_0 // port -#define PIN_PWM PIN_28 // pin -#define FREQ 200 // (Hz) -//#define DUTY_CYCLE 75 // (%) -#define DUTY_CYCLE 20 // (%) -#define PWM_TIMER MXC_TMR4 // must change PORT_PWM and PIN_PWM if changed - - -/***** Definitions *****/ - -#define I2C_DEVICE MXC_I2C0_BUS0 - -#define SPI SPI2 -#define SPI_SPEED 1000000 // Bit Rate - -/***** Globals *****/ -static const gpio_cfg_t motor_pin = {PORT_0, PIN_8, GPIO_FUNC_OUT, GPIO_PAD_NONE}; -//const gpio_cfg_t DEV_RST_PIN = {PORT_0, PIN_28, GPIO_FUNC_OUT, GPIO_PAD_NONE}; -const gpio_cfg_t DEV_DC_PIN = {PORT_1, PIN_6, GPIO_FUNC_OUT, GPIO_PAD_NONE}; - -/***** Functions *****/ -void PWM_Output() -{ - // Declare variables - gpio_cfg_t gpio_pwm; // to configure GPIO - tmr_cfg_t tmr; // to congigure timer - tmr_pwm_cfg_t tmr_pwm; // for configure PWM - unsigned int period_ticks = PeripheralClock / FREQ; - unsigned int duty_ticks = period_ticks * DUTY_CYCLE / 100; - - // Congfigure GPIO port and pin for PWM - gpio_pwm.func = GPIO_FUNC_ALT4; - gpio_pwm.port = PORT_PWM; - gpio_pwm.mask = PIN_PWM; - gpio_pwm.pad = GPIO_PAD_PULL_DOWN; - - if (GPIO_Config(&gpio_pwm) != E_NO_ERROR) { - printf("Failed GPIO_Config for pwm.\n"); - } - - /* - Steps for configuring a timer for PWM mode: - 1. Disable the timer - 2. Set the prescale value - 3. Configure the timer for PWM mode - 4. Set polarity, pwm parameters - 5. Enable Timer - */ - - TMR_Disable(PWM_TIMER); - - TMR_Init(PWM_TIMER, TMR_PRES_1, 0); - - tmr.mode = TMR_MODE_PWM; - tmr.cmp_cnt = period_ticks; - tmr.pol = 0; - TMR_Config(PWM_TIMER, &tmr); - - tmr_pwm.pol = 1; - tmr_pwm.per_cnt = period_ticks; - tmr_pwm.duty_cnt = duty_ticks; - - if (TMR_PWMConfig(PWM_TIMER, &tmr_pwm) != E_NO_ERROR) { - printf("Failed TMR_PWMConfig.\n"); - } - - TMR_Enable(PWM_TIMER); - - printf("PWM started.\n"); -} - // ***************************************************************************** int main(void) @@ -142,18 +63,6 @@ int main(void) card10_init(); card10_diag(); - //GPIO_Config(&DEV_RST_PIN); - GPIO_Config(&DEV_DC_PIN); - - PWM_Output(); - LCD_SetBacklight(500); - LCD_Init(); - LCD_Clear(BLACK); - - Paint_NewImage(LCD_WIDTH, LCD_HEIGHT,0,WHITE); - - Paint_Clear(BLACK); - Paint_SetRotate(180); Paint_DrawString_EN(0, 0, "123", &Font24, 0x000f, 0xfff0); Paint_DrawString_EN(0, 23, "ABC", &Font24, BLUE, CYAN); Paint_DrawString_CN(20,42, "΢ѩµç×Ó", &Font24CN, WHITE, RED); diff --git a/lib/card10/card10.c b/lib/card10/card10.c index 6c3d94cb..919e1e63 100644 --- a/lib/card10/card10.c +++ b/lib/card10/card10.c @@ -1,5 +1,6 @@ #include "pmic.h" #include "bosch.h" +#include "display.h" #include "bhy_uc_driver.h" #include "Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h" @@ -21,7 +22,6 @@ #include <stdint.h> #include <string.h> -#define SPI SPI0 #define SPI_SPEED 1000000 // Bit Rate void card10_init(void) @@ -52,14 +52,22 @@ void card10_init(void) spi17y_master_cfg.ss1 = Disable; spi17y_master_cfg.ss2 = Disable; - if (SPI_Init(SPI, 0, SPI_SPEED, spi17y_master_cfg) != 0) { + if (SPI_Init(SPI0, 0, SPI_SPEED, spi17y_master_cfg) != 0) { printf("Error configuring SPI\n"); while (1); } + if (SPI_Init(SPI2, 0, SPI_SPEED, spi17y_master_cfg) != 0) { + printf("Error configuring SPI\n"); + while (1); + } + + if(bhy_driver_init(bhy1_fw)) { printf("Failed to init bhy\n"); } + + display_init(); } static uint32_t ecg_read_reg(uint8_t reg) diff --git a/ips/Fonts/Release_Notes.html b/lib/gfx/Fonts/Release_Notes.html similarity index 100% rename from ips/Fonts/Release_Notes.html rename to lib/gfx/Fonts/Release_Notes.html diff --git a/ips/Fonts/font12.c b/lib/gfx/Fonts/font12.c similarity index 100% rename from ips/Fonts/font12.c rename to lib/gfx/Fonts/font12.c diff --git a/ips/Fonts/font12CN.c b/lib/gfx/Fonts/font12CN.c similarity index 100% rename from ips/Fonts/font12CN.c rename to lib/gfx/Fonts/font12CN.c diff --git a/ips/Fonts/font16.c b/lib/gfx/Fonts/font16.c similarity index 100% rename from ips/Fonts/font16.c rename to lib/gfx/Fonts/font16.c diff --git a/ips/Fonts/font20.c b/lib/gfx/Fonts/font20.c similarity index 100% rename from ips/Fonts/font20.c rename to lib/gfx/Fonts/font20.c diff --git a/ips/Fonts/font24.c b/lib/gfx/Fonts/font24.c similarity index 100% rename from ips/Fonts/font24.c rename to lib/gfx/Fonts/font24.c diff --git a/ips/Fonts/font24CN.c b/lib/gfx/Fonts/font24CN.c similarity index 100% rename from ips/Fonts/font24CN.c rename to lib/gfx/Fonts/font24CN.c diff --git a/ips/Fonts/font8.c b/lib/gfx/Fonts/font8.c similarity index 100% rename from ips/Fonts/font8.c rename to lib/gfx/Fonts/font8.c diff --git a/ips/Fonts/fonts.h b/lib/gfx/Fonts/fonts.h similarity index 100% rename from ips/Fonts/fonts.h rename to lib/gfx/Fonts/fonts.h diff --git a/ips/GUI_DEV/DEV_Config.c b/lib/gfx/GUI_DEV/DEV_Config.c similarity index 100% rename from ips/GUI_DEV/DEV_Config.c rename to lib/gfx/GUI_DEV/DEV_Config.c diff --git a/ips/GUI_DEV/DEV_Config.h b/lib/gfx/GUI_DEV/DEV_Config.h similarity index 100% rename from ips/GUI_DEV/DEV_Config.h rename to lib/gfx/GUI_DEV/DEV_Config.h diff --git a/ips/GUI_DEV/GUI_Paint.c b/lib/gfx/GUI_DEV/GUI_Paint.c similarity index 100% rename from ips/GUI_DEV/GUI_Paint.c rename to lib/gfx/GUI_DEV/GUI_Paint.c diff --git a/ips/GUI_DEV/GUI_Paint.h b/lib/gfx/GUI_DEV/GUI_Paint.h similarity index 100% rename from ips/GUI_DEV/GUI_Paint.h rename to lib/gfx/GUI_DEV/GUI_Paint.h diff --git a/ips/LCD/LCD_Driver.c b/lib/gfx/LCD/LCD_Driver.c similarity index 100% rename from ips/LCD/LCD_Driver.c rename to lib/gfx/LCD/LCD_Driver.c diff --git a/ips/LCD/LCD_Driver.h b/lib/gfx/LCD/LCD_Driver.h similarity index 100% rename from ips/LCD/LCD_Driver.h rename to lib/gfx/LCD/LCD_Driver.h diff --git a/lib/gfx/display.c b/lib/gfx/display.c new file mode 100644 index 00000000..e68e2391 --- /dev/null +++ b/lib/gfx/display.c @@ -0,0 +1,89 @@ +#include "LCD/LCD_Driver.h" +#include "GUI_DEV/GUI_Paint.h" + +#include "gpio.h" +#include "tmr.h" + +#include <stdint.h> +#include <stdio.h> +/***** Globals *****/ +static const gpio_cfg_t motor_pin = {PORT_0, PIN_8, GPIO_FUNC_OUT, GPIO_PAD_NONE}; +//const gpio_cfg_t DEV_RST_PIN = {PORT_0, PIN_28, GPIO_FUNC_OUT, GPIO_PAD_NONE}; +const gpio_cfg_t DEV_DC_PIN = {PORT_1, PIN_6, GPIO_FUNC_OUT, GPIO_PAD_NONE}; + +// Parameters for PWM output +#define PORT_PWM PORT_0 // port +#define PIN_PWM PIN_28 // pin +#define FREQ 200 // (Hz) +//#define DUTY_CYCLE 75 // (%) +#define DUTY_CYCLE 20 // (%) +#define PWM_TIMER MXC_TMR4 // must change PORT_PWM and PIN_PWM if changed + + +/***** Functions *****/ +void PWM_Output(void) +{ + // Declare variables + gpio_cfg_t gpio_pwm; // to configure GPIO + tmr_cfg_t tmr; // to congigure timer + tmr_pwm_cfg_t tmr_pwm; // for configure PWM + unsigned int period_ticks = PeripheralClock / FREQ; + unsigned int duty_ticks = period_ticks * DUTY_CYCLE / 100; + + // Congfigure GPIO port and pin for PWM + gpio_pwm.func = GPIO_FUNC_ALT4; + gpio_pwm.port = PORT_PWM; + gpio_pwm.mask = PIN_PWM; + gpio_pwm.pad = GPIO_PAD_PULL_DOWN; + + if (GPIO_Config(&gpio_pwm) != E_NO_ERROR) { + printf("Failed GPIO_Config for pwm.\n"); + } + + /* + Steps for configuring a timer for PWM mode: + 1. Disable the timer + 2. Set the prescale value + 3. Configure the timer for PWM mode + 4. Set polarity, pwm parameters + 5. Enable Timer + */ + + TMR_Disable(PWM_TIMER); + + TMR_Init(PWM_TIMER, TMR_PRES_1, 0); + + tmr.mode = TMR_MODE_PWM; + tmr.cmp_cnt = period_ticks; + tmr.pol = 0; + TMR_Config(PWM_TIMER, &tmr); + + tmr_pwm.pol = 1; + tmr_pwm.per_cnt = period_ticks; + tmr_pwm.duty_cnt = duty_ticks; + + if (TMR_PWMConfig(PWM_TIMER, &tmr_pwm) != E_NO_ERROR) { + printf("Failed TMR_PWMConfig.\n"); + } + + TMR_Enable(PWM_TIMER); + + printf("PWM started.\n"); +} + + +void display_init(void) +{ + //GPIO_Config(&DEV_RST_PIN); + GPIO_Config(&DEV_DC_PIN); + + PWM_Output(); + LCD_SetBacklight(500); + LCD_Init(); + LCD_Clear(BLACK); + + Paint_NewImage(LCD_WIDTH, LCD_HEIGHT,0,WHITE); + + Paint_Clear(BLACK); + Paint_SetRotate(180); +} diff --git a/lib/gfx/display.h b/lib/gfx/display.h new file mode 100644 index 00000000..e4244b58 --- /dev/null +++ b/lib/gfx/display.h @@ -0,0 +1,5 @@ +#ifndef DISPLAY_H + +void display_init(void); + +#endif -- GitLab