Commit 61c4faab authored by schneider's avatar schneider
Browse files

refact(display): Factor out display code

parent 33bf745e
......@@ -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
......
......@@ -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);
......
#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)
......
#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);
}
#ifndef DISPLAY_H
void display_init(void);
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment