mirror of
https://github.com/EFeru/hoverboard-sideboard-hack-GD.git
synced 2025-08-16 16:46:11 +00:00
Added Platformio support
- firmware can now be built in Platformio too - minor bug fixes - added LED board picture
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#define MPU_ACCEL_FSR 2 // [g] Set Acceleromenter Full Scale Range: 2g, 4g, 8g, 16g. !! DMP sensor fusion works only with 2g !!
|
||||
#define MPU_I2C_SPEED 400000 // [bit/s] Define I2C speed for communicating with the MPU6050
|
||||
#define DELAY_IN_MAIN_LOOP 1 // [ms] Delay in the main loop
|
||||
// #define PRINTF_FLOAT_SUPPORT // [-] Uncomment this for printf to support float on Serial Debug. It will increase code size! Better to avoid it!
|
||||
/* =============================================================================================== */
|
||||
|
||||
|
||||
|
110
Inc/defines.h
110
Inc/defines.h
@@ -26,6 +26,10 @@
|
||||
#include "gd32f1x0.h"
|
||||
#include "config.h"
|
||||
|
||||
#if defined(PRINTF_FLOAT_SUPPORT) && defined(SERIAL_DEBUG) && defined(__GNUC__)
|
||||
asm(".global _printf_float"); // this is the magic trick for printf to support float. Warning: It will increase code considerably! Better to avoid!
|
||||
#endif
|
||||
|
||||
/* =========================== Defines General =========================== */
|
||||
// #define _BV(bit) (1 << (bit))
|
||||
// #define ARRAYNUM(arr_nanme) (uint32_t)(sizeof(arr_nanme) / sizeof(*(arr_nanme)))
|
||||
@@ -38,23 +42,29 @@
|
||||
|
||||
|
||||
/* =========================== Defines LEDs =========================== */
|
||||
#define LED1_GPIO_Port GPIOA
|
||||
#define LED1_Pin GPIO_PIN_0 // RED
|
||||
#define LED2_GPIO_Port GPIOB
|
||||
#define LED2_Pin GPIO_PIN_9 // GREEN
|
||||
#define LED3_GPIO_Port GPIOB
|
||||
#define LED3_Pin GPIO_PIN_8 // YELLOW
|
||||
#define LED4_GPIO_Port GPIOB
|
||||
#define LED4_Pin GPIO_PIN_5 // BLUE1
|
||||
#define LED5_GPIO_Port GPIOB
|
||||
#define LED5_Pin GPIO_PIN_4 // BLUE2
|
||||
#define LED1_GPIO_Port GPIOA
|
||||
#define LED1_Pin GPIO_PIN_0 // RED
|
||||
#define LED2_GPIO_Port GPIOB
|
||||
#define LED2_Pin GPIO_PIN_9 // GREEN
|
||||
#define LED3_GPIO_Port GPIOB
|
||||
#define LED3_Pin GPIO_PIN_8 // YELLOW
|
||||
#define LED4_GPIO_Port GPIOB
|
||||
#define LED4_Pin GPIO_PIN_5 // BLUE1
|
||||
#define LED5_GPIO_Port GPIOB
|
||||
#define LED5_Pin GPIO_PIN_4 // BLUE2
|
||||
|
||||
#define LED1_SET (0x01)
|
||||
#define LED2_SET (0x02)
|
||||
#define LED3_SET (0x04)
|
||||
#define LED4_SET (0x08)
|
||||
#define LED5_SET (0x10)
|
||||
|
||||
|
||||
/* =========================== Defines SENSORS =========================== */
|
||||
#define SENSOR1_GPIO_Port GPIOA
|
||||
#define SENSOR1_Pin GPIO_PIN_4
|
||||
#define SENSOR1_Pin GPIO_PIN_4
|
||||
#define SENSOR2_GPIO_Port GPIOC
|
||||
#define SENSOR2_Pin GPIO_PIN_14
|
||||
#define SENSOR2_Pin GPIO_PIN_14
|
||||
|
||||
|
||||
/* =========================== Defines USART =========================== */
|
||||
@@ -74,66 +84,66 @@
|
||||
|
||||
|
||||
// USART to Mainboard, connected to USART1
|
||||
#define USART_MAIN USART1
|
||||
#define USART_MAIN USART1
|
||||
#define USART_MAIN_CLK RCU_USART1
|
||||
#define USART_MAIN_TX_PIN GPIO_PIN_2
|
||||
#define USART_MAIN_RX_PIN GPIO_PIN_3
|
||||
|
||||
// USART address for DMA defines
|
||||
#define USART0_TDATA_ADDRESS ((uint32_t)0x40013828) // USART0: 0x4001 3800 - 0x4001 3BFF
|
||||
#define USART0_RDATA_ADDRESS ((uint32_t)0x40013824)
|
||||
#define USART1_TDATA_ADDRESS ((uint32_t)0x40004428) // USART1: 0x4000 4400 - 0x4000 47FF
|
||||
#define USART1_RDATA_ADDRESS ((uint32_t)0x40004424)
|
||||
#define USART0_TDATA_ADDRESS ((uint32_t)0x40013828) // USART0: 0x4001 3800 - 0x4001 3BFF
|
||||
#define USART0_RDATA_ADDRESS ((uint32_t)0x40013824)
|
||||
#define USART1_TDATA_ADDRESS ((uint32_t)0x40004428) // USART1: 0x4000 4400 - 0x4000 47FF
|
||||
#define USART1_RDATA_ADDRESS ((uint32_t)0x40004424)
|
||||
|
||||
|
||||
/* =========================== Defines AUX =========================== */
|
||||
#define AUX1_PU_GPIO_Port GPIOC
|
||||
#define AUX1_PU_Pin GPIO_PIN_15
|
||||
#define AUX2_GPIO_Port GPIOA
|
||||
#define AUX2_Pin GPIO_PIN_1
|
||||
#define AUX3_GPIO_Port GPIOB
|
||||
#define AUX3_Pin GPIO_PIN_10
|
||||
#define AUX1_PU_GPIO_Port GPIOC
|
||||
#define AUX1_PU_Pin GPIO_PIN_15
|
||||
#define AUX2_GPIO_Port GPIOA
|
||||
#define AUX2_Pin GPIO_PIN_1
|
||||
#define AUX3_GPIO_Port GPIOB
|
||||
#define AUX3_Pin GPIO_PIN_10
|
||||
#ifdef AUX45_USE_GPIO
|
||||
#define AUX4_GPIO_Port GPIOA
|
||||
#define AUX4_Pin GPIO_PIN_10
|
||||
#define AUX5_GPIO_Port GPIOA
|
||||
#define AUX5_Pin GPIO_PIN_9
|
||||
#define AUX4_GPIO_Port GPIOA
|
||||
#define AUX4_Pin GPIO_PIN_10
|
||||
#define AUX5_GPIO_Port GPIOA
|
||||
#define AUX5_Pin GPIO_PIN_9
|
||||
#endif
|
||||
|
||||
|
||||
/* =========================== Defines I2C =========================== */
|
||||
typedef enum {READ = 0, WRITE = !READ} i2c_cmd;
|
||||
#define MPU_I2C I2C0
|
||||
#define MPU_RCU_I2C RCU_I2C0
|
||||
#define MPU_I2C I2C0
|
||||
#define MPU_RCU_I2C RCU_I2C0
|
||||
#define MPU_SCL_GPIO_Port GPIOB
|
||||
#define MPU_SCL_Pin GPIO_PIN_6
|
||||
#define MPU_SCL_Pin GPIO_PIN_6
|
||||
#define MPU_SDA_GPIO_Port GPIOB
|
||||
#define MPU_SDA_Pin GPIO_PIN_7
|
||||
#define MPU_SDA_Pin GPIO_PIN_7
|
||||
#define I2C_OWN_ADDRESS7 0x24
|
||||
|
||||
#ifdef AUX45_USE_I2C
|
||||
#define AUX_I2C I2C1
|
||||
#define AUX_RCU_I2C RCU_I2C1
|
||||
#define AUX_I2C I2C1
|
||||
#define AUX_RCU_I2C RCU_I2C1
|
||||
#define AUX_SCL_GPIO_Port GPIOA
|
||||
#define AUX_SCL_Pin GPIO_PIN_9
|
||||
#define AUX_SCL_Pin GPIO_PIN_9
|
||||
#define AUX_SDA_GPIO_Port GPIOA
|
||||
#define AUX_SDA_Pin GPIO_PIN_10
|
||||
#define AUX_SDA_Pin GPIO_PIN_10
|
||||
#define AUX_I2C_OWN_ADDRESS7 0x34
|
||||
#endif
|
||||
|
||||
/* =========================== Defines MPU-6050 =========================== */
|
||||
#define log_i printf // redirect the log_i debug function to printf
|
||||
#define RAD2DEG 57.295779513082323 // RAD2DEG = 180/pi. Example: angle[deg] = angle[rad] * RAD2DEG
|
||||
#define ACCEL_ON (0x01)
|
||||
#define GYRO_ON (0x02)
|
||||
#define COMPASS_ON (0x04)
|
||||
#define log_i printf // redirect the log_i debug function to printf
|
||||
#define RAD2DEG 57.295779513082323 // RAD2DEG = 180/pi. Example: angle[deg] = angle[rad] * RAD2DEG
|
||||
#define ACCEL_ON (0x01)
|
||||
#define GYRO_ON (0x02)
|
||||
#define COMPASS_ON (0x04)
|
||||
|
||||
#define PRINT_ACCEL (0x01)
|
||||
#define PRINT_GYRO (0x02)
|
||||
#define PRINT_QUAT (0x04)
|
||||
#define PRINT_EULER (0x08)
|
||||
#define PRINT_TEMP (0x10)
|
||||
#define PRINT_PEDO (0x20)
|
||||
#define PRINT_ACCEL (0x01)
|
||||
#define PRINT_GYRO (0x02)
|
||||
#define PRINT_QUAT (0x04)
|
||||
#define PRINT_EULER (0x08)
|
||||
#define PRINT_TEMP (0x10)
|
||||
#define PRINT_PEDO (0x20)
|
||||
|
||||
typedef struct{
|
||||
int16_t x;
|
||||
@@ -161,11 +171,11 @@ typedef struct{
|
||||
} Euler;
|
||||
|
||||
typedef struct {
|
||||
Gyro gyro;
|
||||
Accel accel;
|
||||
Gyro gyro;
|
||||
Accel accel;
|
||||
Quaternion quat;
|
||||
Euler euler;
|
||||
int16_t temp;
|
||||
Euler euler;
|
||||
int16_t temp;
|
||||
} MPU_Data;
|
||||
|
||||
#endif
|
||||
|
47
Inc/gd32f1x0_libopt.h
Normal file
47
Inc/gd32f1x0_libopt.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*!
|
||||
\file gd32f1x0_libopt.h
|
||||
\brief library optional for gd32f1x0
|
||||
*/
|
||||
|
||||
/*
|
||||
Copyright (C) 2017 GigaDevice
|
||||
|
||||
2014-12-26, V1.0.0, platform GD32F1x0(x=3,5)
|
||||
2016-01-15, V2.0.0, platform GD32F1x0(x=3,5,7,9)
|
||||
2016-04-30, V3.0.0, firmware update for GD32F1x0(x=3,5,7,9)
|
||||
2017-06-19, V3.1.0, firmware update for GD32F1x0(x=3,5,7,9)
|
||||
*/
|
||||
|
||||
#ifndef GD32F1X0_LIBOPT_H
|
||||
#define GD32F1X0_LIBOPT_H
|
||||
|
||||
#include "gd32f1x0_adc.h"
|
||||
#include "gd32f1x0_cec.h"
|
||||
#include "gd32f1x0_crc.h"
|
||||
#include "gd32f1x0_cmp.h"
|
||||
#include "gd32f1x0_dac.h"
|
||||
#include "gd32f1x0_dbg.h"
|
||||
#include "gd32f1x0_dma.h"
|
||||
#include "gd32f1x0_exti.h"
|
||||
#include "gd32f1x0_fmc.h"
|
||||
#include "gd32f1x0_gpio.h"
|
||||
#include "gd32f1x0_syscfg.h"
|
||||
#include "gd32f1x0_i2c.h"
|
||||
#include "gd32f1x0_fwdgt.h"
|
||||
#include "gd32f1x0_pmu.h"
|
||||
#include "gd32f1x0_rcu.h"
|
||||
#include "gd32f1x0_rtc.h"
|
||||
#include "gd32f1x0_spi.h"
|
||||
#include "gd32f1x0_timer.h"
|
||||
#include "gd32f1x0_usart.h"
|
||||
#include "gd32f1x0_wwdgt.h"
|
||||
#include "gd32f1x0_misc.h"
|
||||
#include "gd32f1x0_tsi.h"
|
||||
#ifdef GD32F170_190
|
||||
#include "gd32f1x0_slcd.h"
|
||||
#include "gd32f1x0_opa.h"
|
||||
#include "gd32f1x0_ivref.h"
|
||||
#include "gd32f1x0_can.h"
|
||||
#endif /* GD32F170_190 */
|
||||
|
||||
#endif /* GD32F1X0_LIBOPT_H */
|
37
Inc/util.h
37
Inc/util.h
@@ -26,33 +26,34 @@
|
||||
#include "defines.h"
|
||||
|
||||
|
||||
extern volatile int8_t i2c_status;
|
||||
extern volatile i2c_cmd i2c_ReadWriteCmd;
|
||||
extern volatile uint8_t i2c_slaveAddress;
|
||||
extern volatile uint8_t i2c_regAddress;
|
||||
extern volatile uint8_t* i2c_txbuffer;
|
||||
extern volatile uint8_t* i2c_rxbuffer;
|
||||
extern volatile uint8_t i2c_nDABytes;
|
||||
extern volatile int8_t i2c_nRABytes;
|
||||
extern volatile int8_t i2c_status;
|
||||
extern volatile i2c_cmd i2c_ReadWriteCmd;
|
||||
extern volatile uint8_t i2c_slaveAddress;
|
||||
extern volatile uint8_t i2c_regAddress;
|
||||
extern volatile uint8_t* i2c_txbuffer;
|
||||
extern volatile uint8_t* i2c_rxbuffer;
|
||||
extern volatile uint8_t i2c_nDABytes;
|
||||
extern volatile int8_t i2c_nRABytes;
|
||||
|
||||
#ifdef AUX45_USE_I2C
|
||||
extern volatile int8_t i2c_aux_status;
|
||||
extern volatile i2c_cmd i2c_aux_ReadWriteCmd;
|
||||
extern volatile uint8_t i2c_aux_slaveAddress;
|
||||
extern volatile uint8_t i2c_aux_regAddress;
|
||||
extern volatile uint8_t* i2c_aux_txbuffer;
|
||||
extern volatile uint8_t* i2c_aux_rxbuffer;
|
||||
extern volatile uint8_t i2c_aux_nDABytes;
|
||||
extern volatile int8_t i2c_aux_nRABytes;
|
||||
extern volatile int8_t i2c_aux_status;
|
||||
extern volatile i2c_cmd i2c_aux_ReadWriteCmd;
|
||||
extern volatile uint8_t i2c_aux_slaveAddress;
|
||||
extern volatile uint8_t i2c_aux_regAddress;
|
||||
extern volatile uint8_t* i2c_aux_txbuffer;
|
||||
extern volatile uint8_t* i2c_aux_rxbuffer;
|
||||
extern volatile uint8_t i2c_aux_nDABytes;
|
||||
extern volatile int8_t i2c_aux_nRABytes;
|
||||
#endif
|
||||
|
||||
/* general functions */
|
||||
void consoleLog(char *message);
|
||||
void introDemoLED(uint32_t tDelay);
|
||||
void toggle_led(uint32_t gpio_periph, uint32_t pin);
|
||||
void intro_demo_led(uint32_t tDelay);
|
||||
|
||||
/* i2c write/read functions */
|
||||
int8_t i2c_writeBytes(uint8_t slaveAddr, uint8_t regAddr, uint8_t length, uint8_t *data);
|
||||
int8_t i2c_writeByte (uint8_t slaveAddr, uint8_t regAddr, uint8_t data);
|
||||
int8_t i2c_writeByte (uint8_t slaveAddr, uint8_t regAddr, uint8_t data);
|
||||
int8_t i2c_writeBit (uint8_t slaveAddr, uint8_t regAddr, uint8_t bitNum, uint8_t data);
|
||||
int8_t i2c_readBytes (uint8_t slaveAddr, uint8_t regAddr, uint8_t length, uint8_t *data);
|
||||
int8_t i2c_readByte (uint8_t slaveAddr, uint8_t regAddr, uint8_t *data);
|
||||
|
Reference in New Issue
Block a user