Moved baudrates to config

This commit is contained in:
dooku 2021-10-06 18:26:33 +02:00
parent 36e2597539
commit b09de011c1
3 changed files with 36 additions and 7 deletions

View File

@ -107,6 +107,17 @@ config_read(&config);
#define SYSTICK_FREQ_HZ 12000000 #define SYSTICK_FREQ_HZ 12000000
#define EEPROM_TIMEOUT_MAX_MS_INV 200 #define EEPROM_TIMEOUT_MAX_MS_INV 200
/*
* Variables
*/
extern const uint32_t config_baudrates[];
extern const uint8_t config_baudrates_length;
/*
* Type definitions
*/
typedef struct typedef struct
{ {
/* LED CONFIG */ /* LED CONFIG */
@ -124,7 +135,7 @@ typedef struct
uint32_t baudrate_index; uint32_t baudrate_index;
} config_t; } config_t;
/* IMPORTANT: baudrates must be defined in main.c and the default value must be at index 0*/
/* const uint32_t baudrates [] = {19200, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200}; */ /* const uint32_t baudrates [] = {19200, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200}; */
int8_t config_read(config_t *config); int8_t config_read(config_t *config);

View File

@ -7,6 +7,27 @@
#include "config.h" #include "config.h"
/*
* Variables
*/
/* Baudrates - STM32L0xx can do baudrates from 1200 to 115200
* - default value has index 0 */
const uint32_t config_baudrates[] = {
19200, // 0
1200, // 1
2400, // 2
4800, // 3
9600, // 4
14400, // 5
19200, // 6
28800, // 7
38400, // 8
57600, // 9
76800, // 10
115200 // 11
};
const uint8_t config_baudrates_length = 12;
/* Function to lock the EEPROM */ /* Function to lock the EEPROM */
static int8_t eeprom_lock(void); static int8_t eeprom_lock(void);
/* Function to unlock the EEPROM */ /* Function to unlock the EEPROM */

View File

@ -101,9 +101,6 @@ enum
REGISTER_NUM_SERIAL_NUMBER = 30014 REGISTER_NUM_SERIAL_NUMBER = 30014
} identification_registers_numbers; } identification_registers_numbers;
/* Baudrates - STM32L0xx can do baudrates from 1200 to 115200 */
const uint32_t baudrates [] = {19200, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200};
const uint8_t baudrates_length = 12;
/* Variables to store the measured data */ /* Variables to store the measured data */
int CO2, T_SCD4x, RH_SCD4x; int CO2, T_SCD4x, RH_SCD4x;
int T_SHT4x, RH_SHT4x; int T_SHT4x, RH_SHT4x;
@ -490,7 +487,7 @@ static void MX_LPUART1_UART_Init(void)
/* USER CODE BEGIN LPUART1_Init 1 */ /* USER CODE BEGIN LPUART1_Init 1 */
/* USER CODE END LPUART1_Init 1 */ /* USER CODE END LPUART1_Init 1 */
LPUART_InitStruct.BaudRate = baudrates[sensor_config.baudrate_index]; LPUART_InitStruct.BaudRate = config_baudrates[sensor_config.baudrate_index];
LPUART_InitStruct.DataWidth = LL_LPUART_DATAWIDTH_9B; LPUART_InitStruct.DataWidth = LL_LPUART_DATAWIDTH_9B;
LPUART_InitStruct.StopBits = LL_LPUART_STOPBITS_1; LPUART_InitStruct.StopBits = LL_LPUART_STOPBITS_1;
LPUART_InitStruct.Parity = LL_LPUART_PARITY_EVEN; LPUART_InitStruct.Parity = LL_LPUART_PARITY_EVEN;
@ -709,7 +706,7 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction)
sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[0]; sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[0];
break; break;
case REGISTER_NUM_BAUDRATE: case REGISTER_NUM_BAUDRATE:
if (transaction->holding_registers[0] < baudrates_length) if (transaction->holding_registers[0] < config_baudrates_length)
{ {
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[0]); sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[0]);
baudrate_changed = 1; baudrate_changed = 1;
@ -749,7 +746,7 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction)
sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[i]; sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[i];
break; break;
case REGISTER_NUM_BAUDRATE: case REGISTER_NUM_BAUDRATE:
if (transaction->holding_registers[0] < baudrates_length) if (transaction->holding_registers[0] < config_baudrates_length)
{ {
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[i]); sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[i]);
baudrate_changed = 1; baudrate_changed = 1;