diff --git a/ips/Makefile b/ips/Makefile index 2f79eeb2ac781e8d55e2f09088a15b65e4f8502b..7dade512d39d630854f64a14b7881a7224e15be9 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 eb7bf1d7cf8b8aabf119ef8b26f7898d2c58871e..caa46ddd9b19f60ad6b87dbdb44bb10ab1994b0a 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 6c3d94cb4b520f4e77a725d429733554f15421cd..919e1e63c923aab44253b701fc7b4bd843882a7d 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 0000000000000000000000000000000000000000..e68e23910e0705d8270a8c5f83788206567ed061 --- /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 0000000000000000000000000000000000000000..e4244b58a672eed1706ea4c81e4e268fee4147b8 --- /dev/null +++ b/lib/gfx/display.h @@ -0,0 +1,5 @@ +#ifndef DISPLAY_H + +void display_init(void); + +#endif