compact, remove i2c2, ssd1306, update version to 2023-06-20

This commit is contained in:
Yunhorn 2023-06-19 11:05:11 +08:00
parent 15808b358c
commit 995584eff2
7 changed files with 15 additions and 647 deletions

View File

@ -72,7 +72,7 @@ void Error_Handler(void);
/* USER CODE BEGIN EFP */
void SystemClock_Config(void);
void MX_I2C2_Init(void);
//void MX_I2C2_Init(void);
void MX_I2C1_Init(void);
void MX_TIM2_Init(void);
/* USER CODE END EFP */

View File

@ -39,7 +39,7 @@
* MODULE SELECTION
*/
//#define USE_OLED_SSD1306
//#define USE_TOF_VL53LXX
#define USE_MEMS_ADXL345
/* ########################## Product Selection ############################## */
@ -47,94 +47,9 @@
* @brief This is the list of Yunhorn STS products to be used in ALL product config
*/
/** YUNHORN SMARTOILETS OCCUPANCY PRODUCTS **/
/*#define YUNHORN_STS_O1_ENABLED */
/*#define YUNHORN_STS_O2_ENABLED */
/*#define YUNHORN_STS_O3_ENABLED */
/*#define YUNHORN_STS_O4_ENABLED */
/*#define YUNHORN_STS_O5_ENABLED */
/*#define YUNHORN_STS_O6_ENABLED */
/*#define YUNHORN_STS_O7_ENABLED */
/*#define YUNHORN_STS_O8_ENABLED */
/*#define YUNHORN_STS_O9_ENABLED */
/*#define YUNHORN_STS_O10_ENABLED */
/** YUNHORN SMARTOILETS ENVIRONMENT PRODUCTS **/
/*#define YUNHORN_STS_E1_ENABLED */
/*#define YUNHORN_STS_E2_ENABLED */
/*#define YUNHORN_STS_E3_ENABLED */
/*#define YUNHORN_STS_E4_ENABLED */
/*#define YUNHORN_STS_E5_ENABLED */
/*#define YUNHORN_STS_E6_ENABLED */
/** YUNHORN SMARTOILETS PEOPLE COUNTING PRODUCTS **/
/*#define YUNHORN_STS_P1_ENABLED */
/*#define YUNHORN_STS_P2_ENABLED */
/*#define YUNHORN_STS_P3_ENABLED */
/*#define YUNHORN_STS_P4_ENABLED */
/*#define YUNHORN_STS_P5_ENABLED */
/*#define YUNHORN_STS_P6_ENABLED */
/** YUNHORN SMARTOILETS CLEANSING RESOUCES LEVEL PRODUCTS **/
/*#define YUNHORN_STS_R1_ENABLED */
/*#define YUNHORN_STS_R2_ENABLED */
/*#define YUNHORN_STS_R3_ENABLED */
/*#define YUNHORN_STS_R4_ENABLED */
/*#define YUNHORN_STS_R5_ENABLED */
/*#define YUNHORN_STS_R6_ENABLED */
/*#define YUNHORN_STS_R7_ENABLED */
/*#define YUNHORN_STS_R8_ENABLED */
/** YUNHORN SMARTOILETS MECHNICAL REACTURAL PRODUCTS **/
/*#define YUNHORN_STS_M1_ENABLED */
/*#define YUNHORN_STS_M2_ENABLED */
/*#define YUNHORN_STS_M3_ENABLED */
/*#define YUNHORN_STS_M4_ENABLED */
/*#define YUNHORN_STS_M5_ENABLED */
/*#define YUNHORN_STS_M6_ENABLED */
#define YUNHORN_STS_M7_ENABLED
/*#define YUNHORN_STS_M8_ENABLED */
/*#define YUNHORN_STS_M9_ENABLED */
//#define YUNHORN_STS_M10_ENABLED
/** YUNHORN SMARTOILETS DIPLAY AND SMART PANEL PRODUCTS **/
/*#define YUNHORN_STS_D1_ENABLED */
/*#define YUNHORN_STS_D2_ENABLED */
/*#define YUNHORN_STS_D3_ENABLED */
/*#define YUNHORN_STS_D4_ENABLED */
/*#define YUNHORN_STS_D5_ENABLED */
/*#define YUNHORN_STS_D6_ENABLED */
/*#define YUNHORN_STS_D7_ENABLED */
/*#define YUNHORN_STS_D8_ENABLED */
/** YUNHORN SMARTOILETS DIGITAL SIGNAGE PRODUCTS **/
/*#define YUNHORN_STS_F1_ENABLED */
/*#define YUNHORN_STS_F2_ENABLED */
/*#define YUNHORN_STS_F3_ENABLED */
/*#define YUNHORN_STS_F4_ENABLED */
/*#define YUNHORN_STS_F5_ENABLED */
/*#define YUNHORN_STS_F6_ENABLED */
/*#define YUNHORN_STS_F7_ENABLED */
/*#define YUNHORN_STS_F8_ENABLED */
/*#define YUNHORN_STS_F9_ENABLED */
/*#define YUNHORN_STS_F10_ENABLED */
/** YUNHORN SMARTOILETS CONNECTIVITY AND GATEWAY PRODUCTS **/
/*#define YUNHORN_STS_N1_ENABLED */
/*#define YUNHORN_STS_N2_ENABLED */
/*#define YUNHORN_STS_N3_ENABLED */
/*#define YUNHORN_STS_N4_ENABLED */
/*#define YUNHORN_STS_N5_ENABLED */
/*#define YUNHORN_STS_N6_ENABLED */
/*#define YUNHORN_STS_N7_ENABLED */
/*#define YUNHORN_STS_N8_ENABLED */
/** Includes ---------------------------------------------------------
@ -142,78 +57,11 @@
* LORA-WAN MESSAGE UPLINK DATA PORTS AND HEARTBEAT PORTS DEFINATION
*/
//#define YUNHORN_STS_O1_LORA_APP_DATA_PORT 4U
//#define YUNHORN_STS_O1_LORA_APP_HTBT_PORT 5U
//#define YUNHORN_STS_O2_LORA_APP_DATA_PORT 4U
//#define YUNHORN_STS_O2_LORA_APP_HTBT_PORT 5U
//#define YUNHORN_STS_O3_LORA_APP_DATA_PORT 4U
//#define YUNHORN_STS_O3_LORA_APP_HTBT_PORT 5U
//#define YUNHORN_STS_O4_LORA_APP_DATA_PORT 56U
//#define YUNHORN_STS_O4_LORA_APP_HTBT_PORT 57U
//#define YUNHORN_STS_O5_LORA_APP_DATA_PORT 4U
//#define YUNHORN_STS_O5_LORA_APP_HTBT_PORT 5U
//#define YUNHORN_STS_E1_LORA_APP_DATA_PORT 102U
//#define YUNHORN_STS_E1_LORA_APP_HTBT_PORT 103U
//#define YUNHORN_STS_E2_LORA_APP_DATA_PORT 101U
//#define YUNHORN_STS_E2_LORA_APP_HTBT_PORT 108U
//#define YUNHORN_STS_E3_LORA_APP_DATA_PORT 00U
//#define YUNHORN_STS_E3_LORA_APP_HTBT_PORT 00U
//#define YUNHORN_STS_E4_LORA_APP_DATA_PORT 70U
//#define YUNHORN_STS_E4_LORA_APP_HTBT_PORT 71U
//#define YUNHORN_STS_R0_LORA_APP_DATA_PORT 11U
//#define YUNHORN_STS_R0_LORA_APP_HTBT_PORT 11U
//#define YUNHORN_STS_R1_LORA_APP_DATA_PORT 57U
//#define YUNHORN_STS_R1_LORA_APP_HTBT_PORT 57U
//#define YUNHORN_STS_R2_LORA_APP_DATA_PORT 58U
//#define YUNHORN_STS_R2_LORA_APP_HTBT_PORT 58U
//#define YUNHORN_STS_R3_LORA_APP_DATA_PORT 7U
//#define YUNHORN_STS_R3_LORA_APP_HTBT_PORT 8U
//#define YUNHORN_STS_R4_LORA_APP_DATA_PORT 8U
//#define YUNHORN_STS_R4_LORA_APP_HTBT_PORT 8U
//#define YUNHORN_STS_R5_LORA_APP_DATA_PORT 11U
//#define YUNHORN_STS_R5_LORA_APP_HTBT_PORT 11U
//#define YUNHORN_STS_M1_LORA_APP_DATA_PORT 6U
//#define YUNHORN_STS_M1_LORA_APP_HTBT_PORT 6U
//#define YUNHORN_STS_M2_LORA_APP_DATA_PORT 59U
//#define YUNHORN_STS_M2_LORA_APP_HTBT_PORT 219U
//#define YUNHORN_STS_M3_LORA_APP_DATA_PORT 9U
//#define YUNHORN_STS_M3_LORA_APP_HTBT_PORT 9U
//#define YUNHORN_STS_M4_LORA_APP_DATA_PORT 12U
//#define YUNHORN_STS_M4_LORA_APP_HTBT_PORT 12U
//#define YUNHORN_STS_M5_LORA_APP_DATA_PORT 8U
//#define YUNHORN_STS_M5_LORA_APP_HTBT_PORT 8U
//#define YUNHORN_STS_M6_LORA_APP_DATA_PORT 219U
//#define YUNHORN_STS_M6_LORA_APP_HTBT_PORT 219U
//#define YUNHORN_STS_M8_LORA_APP_DATA_PORT 55U
//#define YUNHORN_STS_M8_LORA_APP_HTBT_PORT 55U
//#define YUNHORN_STS_M9_LORA_APP_DATA_PORT 16U
//#define YUNHORN_STS_M9_LORA_APP_HTBT_PORT 16U
//#define YUNHORN_STS_M10_LORA_APP_DATA_PORT 9U
//#define YUNHORN_STS_M10_LORA_APP_HTBT_PORT 9U
#ifdef YUNHORN_STS_E4_ENABLED
//#include "yunhorn_sts_e4_conf.h"
#define senddataport YUNHORN_STS_E4_LORA_APP_DATA_PORT
#define sendhtbtport YUNHORN_STS_E4_LORA_APP_HTBT_PORT
#endif /* YUNHORN_STS_E4_ENABLED */
#ifdef YUNHORN_STS_R0_ENABLED
//#include "yunhorn_sts_e4_conf.h"
#define senddataport YUNHORN_STS_R0_LORA_APP_DATA_PORT
#define sendhtbtport YUNHORN_STS_R0_LORA_APP_HTBT_PORT
#endif /* YUNHORN_STS_R0_ENABLED */
#ifdef YUNHORN_STS_M7_ENABLED
#define MajorVer 23U
#define MinorVer 02U
#define SubMinorVer 23U
#define MinorVer 06U
#define SubMinorVer 20U
#define FirmwareVersion 3U
#define YUNHORN_STS_M7_NVM_CFG_SIZE 3U
#define YUNHORN_STS_M7_CFG_CMD_SIZE 9U
@ -244,17 +92,6 @@
#define MOTION_SENSOR_TIM_HANDLE htim2
#define MOTION_SENSOR_I2C_HANDLE hi2c1
#ifdef USE_OLED_SSD1306
#define SSD1306_I2C_HANDLE hi2c2
#include "ssd1306.h"
#include "ssd1306_tests.h"
#endif
#ifdef USE_TOF_VL53LXX // RETIRED TODO
#define I2C_TIMING_TOF250 0x20303E5D
#define I2C_TIMING 0x20303E5D //DEFAULT FOR I2C TOF
#include "yunhorn_tof.h"
#endif
#ifdef USE_STM32WLE5
#define I2C_TIMING_STANDARD_MODE 0x2000090E //STANDARD MODE 100Khz

View File

@ -53,117 +53,6 @@ enum {
P_MEM_CFG // #3
};
#endif
/*
// LEN= 3
YUNHORN_STS_PRD_BOARD_SOFT_RESET=0, //BOARD LEVEL RE_BOOT, REVIVE, 'YZH' : HARDWARE REBOOT
YUNHORN_STS_PRD_SENSOR_SELF_TEST, //BOARD LEVEL REPORT VERSION, 'YZS' : SELFT TEST
YUNHORN_STS_PRD_LORAWAN_CLASS, //BOARD LEVEL REPORT VERSION, 'YZC' : LORA-WAN CLASS A/B/C
YUNHORN_STS_PRD_VERSION_REPORT, //BOARD LEVEL REPORT VERSION, 'YVH' : VERSION: FW, HW, SW
YUNHORN_STS_PRD_CONFIG_REPORT, //BOARD LEVEL REPORT VERSION, 'YVC' : NVM STORED CONFIG PARAMETER
STS_SENSOR_CMD_MEMS_POWER_ON_OFF, //Num # MEMS LEVEL POWER ENABLE, 'YO#' : #={1}{2,3..9} POWER ON
STS_SENSOR_CMD_MEMS_POWER_ON_OFF, //Num # MEMS LEVEL POWER ENABLE, 'YF#' : #={1}{2,3..9} POWER OFF
STS_SENSOR_CMD_MEMS_SOFT_RESET, //Num # MEMS LEVEL SOFT_RESET, 'YH#' : #={1}{,2,3..9} SOFT-RESET
// LEN = 5
YUNHORN_STS_PRD_PERIODICITY_CHANGE, //BOARD LEVEL PERIODICTY CHANGE, 'YD##@' #={0-9} @={S,M,H}
// LEN >=6
YUNHORN_STS_PRD_PERIODICITY_CHANGE, //BOARD LEVEL PERIODICTY CHANGE, 'YP###@' #={0-9} @={S,M,H}
// Y P # # # @
// # MTM code
// # MTM ver
// # No. of MEMS
// @ Parameter
// MEMS sensor_control_type
*/
//"P 0 0 "+"1 2 3 1 2 3 1 2 3 1 2"
// P
// P 1 SENSOR HEAD 0
// P 1 0 SENSOR HEAD 0, VERSION 0
// P 1 0 1 2 SENSOR HEAD 0, VERSION 0, VALUE 12, 1*10+2
#ifdef YUNHORN_STS_O1_ENABLED
enum {
STS_CTRL_CMD_TYPE_DUTYCYCLE_LEVEL_CHANGE,
STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L0X=0x00,
STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L1X, //0X01
STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L2X, //0X02
STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L3X, //0X03
STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L4X, //0X04
STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L5X, //0X05
STS_CTRL_CMD_MEMS_TUNE_MV_ADXL345, //0X06
STS_CTRL_CMD_MEMS_TUNE_MV_ADXL365, //0X07
STS_CTRL_CMD_MEMS_TUNE_MV_ADXL362, //0X08
STS_CTRL_CMD_MEMS_TUNE_MV_ADXL110X, //0X09
STS_CTRL_CMD_MEMS_TUNE_FMCW_TI16X,
STS_CTRL_CMD_MEMS_TUNE_FMCW_TI68X,
STS_CTRL_CMD_MEMS_TUNE_PCR_A11X,
STS_CTRL_CMD_MEMS_TUNE_PCR_A12X,
STS_CTRL_CMD_PRESENCE_SETTING,
STS_CTRL_CMD_PRESENCE_TUNE_LED_COLOR,
STS_CTRL_CMD_PRESENCE_TUNE_WORK_MODE,
STS_CTRL_CMD_MEMS_TUNE_SMOKING_MUSIC,
STS_CTRL_CMD_MEMS_TUNE_SMOKING_ENABLE,
STS_CTRL_CMD_MEMS_TUNE_WATER_FLOW_DN,
STS_CTRL_CMD_MEMS_TUNE_DIGITAL_RELAY,
STS_CTRL_CMD_MEMS_TUNE_FAN_CONTROL,
STS_CTRL_CMD_MEMS_TUNE_VENTILATION_FAN_SPEED,
STS_CTRL_CMD_MEMS_TUNE_VENTILATION_FAN_SWING,
STS_CTRL_CMD_MEMS_TUNE_DEVICE_COMPONENT
}; // sensor_mems_type
enum {
STS_CTRL_CMD_MEMS_TUNE_TOF_RANGE_START=0,
STS_CTRL_CMD_MEMS_TUNE_TOF_RANGE_END,
STS_CTRL_CMD_MEMS_TUNE_TOF_THRESHOLD,
STS_CTRL_CMD_MEMS_TUNE_TOF_GAIN,
STS_CTRL_CMD_MEMS_TUNE_TOF_MAX_DISTANCE
}; // sensor_mems_tof_tune_type
#endif
#if (defined(YUNHORN_STS_R0_ENABLED) || defined(YUNHORN_STS_R1_ENABLED) || defined(YUNHORN_STS_R2_ENABLED) || defined(YUNHORN_STS_R5_ENABLED))
typedef struct
{
uint16_t distance_mm; /*measured distance in mm, min=0mm, max=2500mm. */
uint16_t battery_mV; /*mV, 1000mv-5000mv, regular 3300mV - 3600mV --4200mV */
uint8_t on_off_event; /* 1: liquid sensed, 0: no liquid sensed */
uint8_t measure_tech; /* 0: capacit, 1:dTof, 2: ultrasonic */
uint8_t distance_mm_h; /*MSB */
uint8_t distance_mm_l; /*LSB max=255 mm for short range measure */
uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */
uint8_t dutycycletimelevel; /* level=0,255 */
} STS_R0_SensorDataTypeDef;
#endif
#if (defined(YUNHORN_STS_O0_ENABLED) || defined(YUNHORN_STS_O1_ENABLED) || defined(YUNHORN_STS_O2_ENABLED) || defined(YUNHORN_STS_O3_ENABLED) || defined(YUNHORN_STS_O4_ENABLED) || defined(YUNHORN_STS_O5_ENABLED)|| defined(YUNHORN_STS_O6_ENABLED))
typedef struct
{
uint8_t color_LED_num; /*measured color ID, 0,1,2,3,4,5,6,7,8,9 */
uint8_t workmode_id; /*work mode, 0,1,2,3,4*/
uint8_t state_sensor1_on_off; /* reedswitch or hall element 0: open, 1: closed */
uint8_t state_sensor2_on_off; /* pcr_sensor_on_off; 1: occupancy, 0: no occupancy */
uint8_t state_sensor3_on_off; /* urinal_sensor_on_off urinal sensor state */
uint8_t state_sensor4_on_off; /* reserved_sensor_on_off sensor state */
uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */
uint8_t dutycycletimelevel; /* level=0,255 */
} STS_O0_SensorDataTypeDef;
#endif
#if (defined(YUNHORN_STS_M0_ENABLED) || defined(YUNHORN_STS_M1_ENABLED) || defined(YUNHORN_STS_M2_ENABLED) || defined(YUNHORN_STS_M5_ENABLED))
@ -214,136 +103,14 @@ typedef struct
uint8_t distance_mm_h; /*MSB */
uint8_t distance_mm_l; /*LSB max=255 mm for short range measure */
uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */
uint8_t dutycycletimelevel; /* level=0,255 */
} STS_M0_SensorDataTypeDef;
#endif
#ifdef YUNHORN_STS_O1_ENABLED
typedef enum
{
REED_SWITCH_PIN_RESET = 0U,
REED_SWITCH_PIN_SET
} REED_SWITCH_State;
typedef enum
{
DOOR_CONTACT_PIN_RESET = 0U,
DOOR_CONTACT_PIN_SET
} DOOR_CONTACT_State;
typedef enum
{
DRY_CONTACT_PIN_RESET = 0U,
DRY_CONTACT_PIN_SET
} DRY_CONTACT_State;
#endif
#ifdef YUNHORN_STS_M1_ENABLED
typedef enum
{
WATER_LEAKAGE_PIN_RESET = 0U,
WATER_LEAKAGE_PIN_SET
} WATER_LEAKAGE_State;
typedef enum
{
HALL_ELEMENT_PIN_RESET = 0U,
HALL_ELEMENT_PIN_SET
} HALL_ELEMENT_State;
#endif
#if (defined(YUNHORN_STS_E0_ENABLED) || defined(YUNHORN_STS_E1_ENABLED) || defined(YUNHORN_STS_E2_ENABLED) || defined(YUNHORN_STS_E3_ENABLED) || defined(YUNHORN_STS_E4_ENABLED) || defined(YUNHORN_STS_E5_ENABLED) || defined(YUNHORN_STS_E6_ENABLED) || defined(YUNHORN_STS_E7_ENABLED))
typedef struct
{
float pressure; /*!< in mbar */
float temperature; /*!< in degC - 40C ~ 125C , 0.05 C */
float humidity; /*!< in % 0-100 RH% */
float distance; /*!< in mm */
int16_t co2_ppm; /*!< 400 - 5200 ppm */
int16_t tvoc_ppb; /*!< 0 - 60000 ppb */
uint32_t latitude; /*!< latitude converted to binary */
uint32_t longitude ; /*!< longitude converted to binary */
uint16_t altitudeGps; /*!< in m */
uint16_t altitudeBar ; /*!< in m * 10 */
float nh3_ppb; /* NH3 */
float h2s_ppb; /* H2S */
float ch2o_ppb; /* CH2O */
float no2_ppb; /* NO2 */
float o3_ugm3; /* O3 ug/m3 */
float battery;
uint16_t co2_ugm3; /* ug/m3 */
uint16_t tvoc_ppb2; /* TVOC */
uint16_t pm_dot5_ugm3;
uint16_t pm_1_ugm3;
uint16_t pm_2dot5_ugm3;
uint16_t pm_10_ugm3;
/* FOR CIGGARATE SMOKING DETECTION */
uint16_t mq2; /* combined smoking sensor */
uint16_t co; /* CO */
uint8_t iaq; /* IAQ index following EPD standards, HKSAR */
uint8_t symbol;
uint8_t temperature1;
uint8_t temperature2;
uint8_t humidity1;
uint8_t humidity2;
uint8_t nh31;
uint8_t nh32;
uint8_t h2s1;
uint8_t h2s2;
uint8_t battery1;
uint8_t battery2;
uint8_t ch2o1;
uint8_t ch2o2;
uint8_t co21;
uint8_t co22;
uint8_t tvoc1;
uint8_t tvoc2;
uint8_t pm251;
uint8_t pm252;
uint8_t pm101;
uint8_t pm102;
uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */
uint8_t dutycycletimelevel; /* level=0,255 */
} STS_E0_SensorDataTypeDef;
#endif
#if (defined(YUNHORN_STS_P0_ENABLED) || defined(YUNHORN_STS_P1_ENABLED) || defined(YUNHORN_STS_P2_ENABLED) || defined(YUNHORN_STS_P3_ENABLED))
typedef struct
{
uint8_t people_count_num; /*measured people number in area, max 30 */
/* bi-direction */
uint16_t people_in_num; /* people in out count in given duration */
uint16_t people_out_num; /* people in out count in given duration */
uint16_t people_in_out_interval; /* people in out count interval level */
/* occupancy */
uint8_t people_in_out_state_; /* people in or leave state 0: leave, 1: stay */
/* queueing */
uint8_t workmode; /* 0-5, 0:tst, 1:sensor reset, 2:power on, 3: power off */
uint8_t tune_param1_left_x_m; /* left range in meter 0.5 - 9.9, 1.5 */
uint8_t tune_param2_right_x_m; /* right range in meter 0.5 - 9.9 , 1.5 */
uint8_t tune_param1_far_y_m; /* far range in meter 2.5 - 9.9, 6.0*/
uint8_t tune_param1_top_z_m; /* top range in meter 0.5 - 9.9, 3.0 */
uint8_t tune_param1_height_m; /* installation height in meter 0.5 - 9.9, 2.0 */
uint8_t tune_param1_tilt_degree; /* tilt up/down in degree 0 - 45, 15 */
uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */
uint8_t dutycycletimelevel; /* level=0,255 */
} STS_P0_SensorDataTypeDef;
#endif
/* USER CODE BEGIN ET */

View File

@ -45,14 +45,14 @@
/* USER CODE BEGIN PV */
volatile uint16_t TIM2_Counter=0;
I2C_HandleTypeDef hi2c2, hi2c1;
I2C_HandleTypeDef hi2c1;
TIM_HandleTypeDef htim2;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
void MX_I2C2_Init(void);
//void MX_I2C2_Init(void);
void MX_I2C1_Init(void);
void MX_TIM2_Init(void);
/* USER CODE END PFP */
@ -212,47 +212,6 @@ void MX_I2C1_Init(void)
* @param None
* @retval None
*/
void MX_I2C2_Init(void)
{
/* USER CODE BEGIN I2C2_Init 0 */
/* USER CODE END I2C2_Init 0 */
/* USER CODE BEGIN I2C2_Init 1 */
/* USER CODE END I2C2_Init 1 */
hi2c2.Instance = I2C2;
hi2c2.Init.Timing = I2C_TIMING_FAST_MODE; //I2C_TIMING;
hi2c2.Init.OwnAddress1 = 0; //I2C_SLAVE_ADDRESS1;
hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_ENABLE;
hi2c2.Init.OwnAddress2 = 0; //I2C_SLAVE_ADDRESS2;
hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c2) != HAL_OK)
{
Error_Handler();
}
/** Configure Analogue filter
*/
if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
{
Error_Handler();
}
/** Configure Digital filter
*/
if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN I2C2_Init 2 */
/* USER CODE END I2C2_Init 2 */
}
/**
* @brief TIM2 Initialization Function

View File

@ -147,59 +147,7 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
HAL_NVIC_EnableIRQ(I2Cx_MASTER_EV_IRQn);
/* USER CODE END I2C1_MspInit 1 */
}
else if(hi2c->Instance==I2C2)
{
/* USER CODE BEGIN I2C2_MspInit 0 */
/* USER CODE END I2C2_MspInit 0 */
/** Initializes the peripherals clocks
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C2;
PeriphClkInitStruct.I2c2ClockSelection = RCC_I2C2CLKSOURCE_PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
__HAL_RCC_GPIOA_CLK_ENABLE();
/**I2C2 GPIO Configuration //STM32WL55
PA12 ------> I2C2_SCL
PA15 ------> I2C2_SDA
*/
#ifdef USE_STM32WL55
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
#endif
/**I2C2 GPIO Configuration //STM32WLE5
PA12 ------> I2C2_SCL
PA11 ------> I2C2_SDA
*/
#ifdef USE_STM32WLE5
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
#endif
/* Peripheral clock enable */
__HAL_RCC_I2C2_CLK_ENABLE();
/* USER CODE BEGIN I2C2_MspInit 1 */
/* NVIC for I2Cx_SLAVE */
HAL_NVIC_SetPriority(I2Cx_SLAVE_ER_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(I2Cx_SLAVE_ER_IRQn);
HAL_NVIC_SetPriority(I2Cx_SLAVE_EV_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(I2Cx_SLAVE_EV_IRQn);
/* USER CODE END I2C2_MspInit 1 */
}
}
@ -243,40 +191,7 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
HAL_NVIC_DisableIRQ(I2Cx_MASTER_EV_IRQn);
/* USER CODE END I2C1_MspDeInit 1 */
}
else if(hi2c->Instance==I2C2)
{
/* USER CODE BEGIN I2C2_MspDeInit 0 */
/* USER CODE END I2C2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_I2C2_CLK_DISABLE();
/**I2C2 GPIO Configuration //STM32WL55
PA12 ------> I2C2_SCL
PA15 ------> I2C2_SDA
*/
#ifdef USE_STM32WL55
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_15);
#endif
/**I2C2 GPIO Configuration //STM32WLE5
PA12 ------> I2C2_SCL
PA11 ------> I2C2_SDA
*/
#ifdef USE_STM32WLE5
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11);
#endif
/* USER CODE BEGIN I2C2_MspDeInit 1 */
HAL_NVIC_DisableIRQ(I2Cx_SLAVE_ER_IRQn);
HAL_NVIC_DisableIRQ(I2Cx_SLAVE_EV_IRQn);
/* USER CODE END I2C2_MspDeInit 1 */
}
}
/**

View File

@ -32,9 +32,6 @@
#include "LmHandler.h"
/* USER CODE BEGIN Includes */
#ifdef USE_OLED_SSD1306
extern I2C_HandleTypeDef SSD1306_I2C_HANDLE;
#endif
#if (defined(YUNHORN_STS_M7_ENABLED) && defined(USE_MEMS_ADXL345))
#include "yunhorn_sts_motion_sensor.h"
#include "yunhorn_sts_motion_adxl345.h"
@ -78,10 +75,7 @@ volatile uint32_t event_start_time, event_stop_time, vibration_duration, sensor_
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN PFP */
#ifdef USE_OLED_SSD1306
void Display_Chart(float *px,float *py, float *pz, SSD1306_COLOR color, char *title);
void STS_M7_SineWaveTest(uint16_t cycles);
#endif
#if (defined(YUNHORN_STS_M7_ENABLED) && defined(USE_MEMS_ADXL345))
extern float acc_x[FFT_LEN*2],acc_y[FFT_LEN*2],acc_z[FFT_LEN*2], fft_x[FFT_LEN], fft_y[FFT_LEN], fft_z[FFT_LEN];
float spectrumPeak_x, spectrumPeak_y, spectrumPeak_z, sp_x,sp_y,sp_z;
@ -300,9 +294,7 @@ void STS_MOTION_SENSOR_Get_Event_Status(STS_MOTION_SENSOR_Event_Status_t *Status
void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t count)
{
#ifdef USE_OLED_SSD1306
char buf_col[30]="_YUNHORN_", buf_xyz[30]="Vibration", buf_level[30]="STS-M7";
#endif
// for wakeup from stop2 mode ##################################################
STS_SENSOR_Power_ON(0);
HAL_Init();
@ -311,37 +303,14 @@ void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t
MX_I2C1_Init();
MX_TIM2_Init();
// for wakeup from stop2 mode ##################################################
#ifdef USE_OLED_SSD1306
//HAL_I2C_Init(&SSD1306_I2C_HANDLE);
if (HAL_I2C_GetState(&SSD1306_I2C_HANDLE) != HAL_I2C_STATE_READY)
{
APP_LOG(TS_ON, VLEVEL_M, "\r\n..OLED I2C INITIALIZING ERROR \r\n");
}
#endif
if (HAL_I2C_GetState(&MOTION_SENSOR_I2C_HANDLE) != HAL_I2C_STATE_READY) {
APP_LOG(TS_ON, VLEVEL_L, "\r\n .... MOTION SENSOR I2C Not Ready .... \r\n");
}
STS_MOTION_SENSOR_Init_Send_Data();
#ifdef USE_OLED_SSD1306
APP_LOG(TS_ON, VLEVEL_M, "\r\n.Start Init SSD1306 ......... \r\n");
ssd1306_Init();
ssd1306_SetCursor(10,0);
ssd1306_WriteString(buf_col, Font_11x18, White);
ssd1306_SetCursor(10,25);
ssd1306_WriteString(buf_xyz, Font_7x10, White);
ssd1306_SetCursor(10,45);
ssd1306_WriteString(buf_level, Font_7x10, White);
ssd1306_UpdateScreen();
Sine_waveGenerate();
Process_FFT_and_Amplitude();
Display_Chart(acc_x, acc_y, acc_z, White, "Sine-");
#endif
ADXL345_Init_Prepare_Measure();
HAL_Delay(50); //wait for sensor ready
@ -360,12 +329,7 @@ void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t
self_test_result[6] += (int16_t)raw_x;
self_test_result[7] += (int16_t)raw_y;
self_test_result[8] += (int16_t)raw_z;
#ifdef USE_OLED_SSD1306
Display_Chart(fft_x, fft_y, fft_z, White, "V.");
#endif
self_test_result[8] += (int16_t)raw_z;
}
self_test_result[0] /= count;
@ -378,12 +342,6 @@ void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t
self_test_result[7] /= count;
self_test_result[8] /= count;
#ifdef USE_OLED_SSD1306
Display_Chart(fft_x, fft_y, fft_z, White, "V.");
ssd1306_SetDisplayOn(0);
#endif
//reset to normal mode
ADXL345_Init_Motion_Detection();
mems_int1_detected=0;
@ -476,70 +434,7 @@ void STS_SENSOR_MEMS_Reset(uint8_t cnt)
}
#ifdef USE_OLED_SSD1306
static void Display_Axis(SSD1306_COLOR color)
{
char dispbuf[128]="";
for (int i=1; i<=4; i++) {
//ssd1306_Line(i*32,0, i*32,SSD1306_HEIGHT,color);
ssd1306_Line(i*32-1,10, i*32-1,SSD1306_HEIGHT/4,color);
ssd1306_SetCursor(i*SSD1306_WIDTH/4-4*6,1);
sprintf(dispbuf,"%4d", (i*Freq_Res_Screen*32));
ssd1306_WriteString(dispbuf, Font_6x8, color);
}
ssd1306_UpdateScreen();
}
void Display_Line_Chart(float *psrc, float ampPeak, uint32_t freqBin, SSD1306_COLOR color, char *title)
{
char dispbuf[128]="";
uint8_t nrf;
float psrcSpectrumPeak = ampPeak;
uint16_t Freq_at_Spectrum_Peak=freqBin;
ssd1306_Fill(Black);
ssd1306_UpdateScreen();
nrf=2; //Freq_Res_Screen; //SAMPLE_NUM/SSD1306_WIDTH;
//nrf=SAMPLE_NUM/SSD1306_WIDTH;
for (uint16_t i=0; i< FFT_LEN; i++) {
ssd1306_Line((uint16_t)(i/nrf),16,(uint16_t)(i/nrf),((uint16_t)(16+(SSD1306_HEIGHT-16)*(psrc[i]/psrcSpectrumPeak))), color);
}
//ssd1306_UpdateScreen();
sprintf(dispbuf,"%s= %3d Hz", title, Freq_at_Spectrum_Peak);
ssd1306_SetCursor(SSD1306_WIDTH/3,SSD1306_HEIGHT-8);
ssd1306_WriteString(dispbuf, Font_6x8, color);
// sprintf(dispbuf,"%s= %.2f", "A. ", psrcSpectrumPeak);
// ssd1306_SetCursor(SSD1306_WIDTH/3,SSD1306_HEIGHT-24);
// ssd1306_WriteString(dispbuf, Font_6x8, color);
Display_Axis(color);
ssd1306_UpdateScreen();
}
void Display_Chart(float *px,float *py, float *pz, SSD1306_COLOR color, char *title)
{
char t[128]="";
ssd1306_SetDisplayOn(1);
sprintf(t,"%s%s",title,"X");
Display_Line_Chart(px, spectrumPeak_x, freq_at_spectrumPeak_x,White,t);
HAL_Delay(500);
sprintf(t,"%s%s",title,"Y");
Display_Line_Chart(py, spectrumPeak_y, freq_at_spectrumPeak_y,White,t);
HAL_Delay(500);
sprintf(t,"%s%s",title,"Z");
Display_Line_Chart(pz, spectrumPeak_z, freq_at_spectrumPeak_z,White,t);
HAL_Delay(500);
//ssd1306_SetDisplayOn(0);
}
#endif
/* USER CODE BEGIN EF */

View File

@ -449,12 +449,7 @@ void LoRaWAN_Init(void)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch (GPIO_Pin)
{
#if defined(USE_STM32WLE5)
case MEMS_EXTI2_Pin:
break;
#endif
{
#if defined(USE_STM32WL55)
HAL_Delay(150); //for de-bouncing eliminate
@ -469,9 +464,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
}
break;
#endif
#if defined(USE_STM32WL55)
case BUT3_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0);
//mems_int1_detected=1;
@ -481,6 +474,8 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
break;
#endif
#if defined(USE_STM32WLE5)
case MEMS_EXTI2_Pin:
break;
case MEMS_EXTI1_Pin:
//APP_LOG(TS_OFF, VLEVEL_L, "\r\n(3) Vibration Sensor EXTI Event BUT3 3 3 3 \r\n"); //YUNHORN_STS_TODO
mems_int1_detected=1;