aboutsummaryrefslogtreecommitdiff
path: root/stm32f091
diff options
context:
space:
mode:
Diffstat (limited to 'stm32f091')
m---------stm32f091/lib/Si7021_driver_STM320
-rw-r--r--stm32f091/main.c9
-rw-r--r--stm32f091/main.h4
-rw-r--r--stm32f091/makefile2
-rw-r--r--stm32f091/sensor.c20
-rw-r--r--stm32f091/setup.c24
-rw-r--r--stm32f091/stm32f0xx_hal_msp.c24
7 files changed, 59 insertions, 24 deletions
diff --git a/stm32f091/lib/Si7021_driver_STM32 b/stm32f091/lib/Si7021_driver_STM32
deleted file mode 160000
-Subproject cae65b26c416b7ebe870d0b16886e74b3a652af
diff --git a/stm32f091/main.c b/stm32f091/main.c
index 68e8dd4..61608a8 100644
--- a/stm32f091/main.c
+++ b/stm32f091/main.c
@@ -1,12 +1,14 @@
#include <FreeRTOS.h>
#include <task.h>
#include <stm32f0xx_hal.h>
+#include <stm32f0xx_hal_msp.h>
#include "main.h"
#include "setup.h"
#include "sensor.h"
+#include "backlog.h"
-I2C_HandleTypeDef hi2c2;
+I2C_HandleTypeDef hi2c1;
UART_HandleTypeDef huart2;
int main() {
@@ -17,6 +19,11 @@ int main() {
MX_USART2_UART_Init();
MX_I2C2_Init();
+ HAL_I2C_MspInit(&hi2c1);
+
+ ws_backlog_alloc(24 * 60);
+ ws_sensor_read();
+
xTaskCreate(ws_sensor_read_task, "sensor", 128, NULL, 1, NULL);
vTaskStartScheduler();
}
diff --git a/stm32f091/main.h b/stm32f091/main.h
index 7c13733..b8a1db5 100644
--- a/stm32f091/main.h
+++ b/stm32f091/main.h
@@ -3,9 +3,7 @@
#include <stm32f0xx_hal_i2c.h>
#include <stm32f0xx_hal_uart.h>
-#define hi2c1 hi2c2
-
-extern I2C_HandleTypeDef hi2c2;
+extern I2C_HandleTypeDef hi2c1;
extern UART_HandleTypeDef huart2;
void task_1();
diff --git a/stm32f091/makefile b/stm32f091/makefile
index ffcb109..5a185de 100644
--- a/stm32f091/makefile
+++ b/stm32f091/makefile
@@ -19,7 +19,6 @@ SHARED_FLAGS += -I./lib/STM32-base-STM32Cube/CMSIS/STM32F0xx/inc
SHARED_FLAGS += -I./lib/STM32-base/startup
SHARED_FLAGS += -I./lib/FreeRTOS-Kernel/include
SHARED_FLAGS += -I./lib/FreeRTOS-Kernel/portable/GCC/ARM_CM0/
-SHARED_FLAGS += -I./lib/Si7021_driver_STM32/driver/inc/
SHARED_FLAGS += -I.
SHARED_FLAGS += -O1
SHARED_FLAGS += -ffunction-sections
@@ -66,7 +65,6 @@ OBJS += lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_rcc.o \
lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_tim_ex.o \
lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_uart.o \
lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_uart_ex.o
-OBJS += lib/Si7021_driver_STM32/driver/src/Si7021_driver.o
.PHONY: flash clean
diff --git a/stm32f091/sensor.c b/stm32f091/sensor.c
index f2e9e29..fc2fe2a 100644
--- a/stm32f091/sensor.c
+++ b/stm32f091/sensor.c
@@ -1,14 +1,26 @@
#include <FreeRTOS.h>
#include <task.h>
-#include <Si7021_driver.h>
+#include <stm32f0xx_hal.h>
+#include "main.h"
#include "sensor.h"
#include "backlog.h"
+#define SI7021_ADDRESS ((uint16_t)(0x40) << 1)
+#define REG_TEMP ((uint8_t)(0xE3))
+#define REG_HUM ((uint8_t)(0xF5))
+
uint8_t ws_sensor_temperature() {
- float temp = 0.f;
- r_single_Si7021(&temp, Temperature);
- return (uint8_t) temp; //TODO: convert with range -> util.h
+ uint8_t buf[12];
+ int16_t val;
+ float temp_c;
+ buf[0] = REG_TEMP;
+ HAL_I2C_Master_Transmit(&hi2c1, SI7021_ADDRESS, buf, 1, HAL_MAX_DELAY);
+ HAL_I2C_Master_Receive(&hi2c1, SI7021_ADDRESS, buf, 2, HAL_MAX_DELAY);
+ val = ((int16_t)buf[0]<< 8 ) | (buf[1]);
+ temp_c= ((175.72*val)/65536) - 46.85;
+
+ return (uint8_t) temp_c; //TODO: convert with range -> util.h
}
uint8_t ws_sensor_humidity() {
diff --git a/stm32f091/setup.c b/stm32f091/setup.c
index 42f54b3..d10393c 100644
--- a/stm32f091/setup.c
+++ b/stm32f091/setup.c
@@ -49,18 +49,18 @@ void SystemClock_Config() {
}
void MX_I2C2_Init() {
- hi2c2.Instance = I2C2;
- hi2c2.Init.Timing = 0x20303E5D;
- hi2c2.Init.OwnAddress1 = 0;
- hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
- hi2c2.Init.OwnAddress2 = 0;
- 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) return Error_Handler();
- if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK) return Error_Handler();
- if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK) return Error_Handler();
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.Timing = 0x2000090E;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK) return Error_Handler();
+ if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) return Error_Handler();
+ if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) return Error_Handler();
}
void MX_USART2_UART_Init() {
diff --git a/stm32f091/stm32f0xx_hal_msp.c b/stm32f091/stm32f0xx_hal_msp.c
index 8fd7330..d99b334 100644
--- a/stm32f091/stm32f0xx_hal_msp.c
+++ b/stm32f091/stm32f0xx_hal_msp.c
@@ -1,10 +1,11 @@
+#include <stm32f0xx_hal.h>
+
+#include "main.h"
#include "stm32f0xx_hal_msp.h"
void HAL_MspInit(void) {
- return;
__HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
- HAL_NVIC_SetPriority(PendSV_IRQn, 3, 0);
}
void HAL_UART_MspInit(UART_HandleTypeDef* huart) {
@@ -30,3 +31,22 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) {
}
}
+void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) {
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if (hi2c->Instance==I2C1) {
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**
+ * I2C1 GPIO Configuration
+ * PB8 ------> I2C1_SCL
+ * PB9 ------> I2C1_SDA
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF1_I2C1;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+ __HAL_RCC_I2C1_CLK_ENABLE();
+ }
+}
+