161 lines
5.1 KiB
C
161 lines
5.1 KiB
C
/********************************MODBUS*************************************
|
|
Данный файл содержит объявления базовых функции и дефайны для реализации
|
|
MODBUS.
|
|
Данный файл необходимо подключить в rs_message.h. После подключать rs_message.h
|
|
к основному проекту.
|
|
***************************************************************************/
|
|
#ifndef __PROJ_SETTINGS_H_
|
|
#define __PROJ_SETTINGS_H_
|
|
|
|
#include "stm32f4xx_hal.h"
|
|
//--------DEFINES FOR SETTING OF SETTINGS-----------
|
|
#define SETTINGS_FLASH_ADDRESS_SHIFT (0x10000)
|
|
#define SETTINGS_FLASH_ADDRESS (FLASH_BASE + SETTINGS_FLASH_ADDRESS_SHIFT)
|
|
|
|
#define EEPROM_BASE
|
|
#define SETTINGS_EEPROM_ADDRESS_SHIFT
|
|
#define SETTINGS_EEPROM_ADDRESS (EEPROM_BASE + SETTINGS_EEPROM_ADDRESS_SHIFT)
|
|
|
|
#ifdef USE_EEPROM
|
|
#define SETTINGS_ADDRESS SETTINGS_EEPROM_ADDRESS
|
|
#else // USE_EEPROM
|
|
#define SETTINGS_ADDRESS SETTINGS_FLASH_ADDRESS
|
|
#endif // USE_EEPROM
|
|
//--------------------------------------------------
|
|
//------------DEFINES FOR PWM SETTING---------------
|
|
// settings defines
|
|
#define HZ_TIMER_CTRL 400
|
|
#define HZ_TIMER_PWM 1000
|
|
#define PWM_RAMP_SPEED 20
|
|
|
|
|
|
// TIM PWM1 SETTINGS
|
|
#define PWM_MASTER_TIM_NUMB 4
|
|
#define TIMER_PWM_TICKBASE TIM_TickBase_1US
|
|
#define TIMER_PWM_AHB_FREQ 84
|
|
|
|
#define TIMER_PWM1_INSTANCE TIM4
|
|
#define TIMER_PWM1_TIM_CHANNEL1 TIM_CHANNEL_1
|
|
#define TIMER_PWM1_TIM_CHANNEL2 TIM_CHANNEL_2
|
|
#define TIMER_PWM1_GPIOx GPIOD
|
|
#define TIMER_PWM1_GPIO_PIN_X1 GPIO_PIN_12
|
|
#define TIMER_PWM1_GPIO_PIN_X2 GPIO_PIN_13
|
|
|
|
|
|
|
|
// TIM PWM2 SETTINGS
|
|
#define TIMER_PWM2_INSTANCE TIM3
|
|
#define TIMER_PWM2_TIM_CHANNEL1 TIM_CHANNEL_3
|
|
#define TIMER_PWM2_TIM_CHANNEL2 TIM_CHANNEL_4
|
|
#define TIMER_PWM2_GPIOx GPIOB
|
|
#define TIMER_PWM2_GPIO_PIN_X1 GPIO_PIN_0
|
|
#define TIMER_PWM2_GPIO_PIN_X2 GPIO_PIN_1
|
|
|
|
|
|
|
|
// TIM PWM3 SETTINGS
|
|
#define TIMER_PWM3_INSTANCE TIM1
|
|
#define TIMER_PWM3_TIM_CHANNEL1 TIM_CHANNEL_1
|
|
#define TIMER_PWM3_TIM_CHANNEL2 TIM_CHANNEL_2
|
|
#define TIMER_PWM3_GPIOx GPIOE
|
|
#define TIMER_PWM3_GPIO_PIN_X1 GPIO_PIN_9
|
|
#define TIMER_PWM3_GPIO_PIN_X2 GPIO_PIN_11
|
|
|
|
// TIM CTRL SETTINGS
|
|
#define TIMER_CTRL_INSTANCE TIM13
|
|
#define TIMER_CTRL_TICKBASE TIM_TickBase_1US
|
|
#define TIMER_CTRL_AHB_FREQ 84
|
|
|
|
// TIM ENCODER SETTINGS
|
|
#define TIMER_ENCODER_INSTANCE TIM5
|
|
#define TIMER_ENCODER_TICKBASE (TIM_TickBase_1US)
|
|
#define TIMER_ENCODER_AHB_FREQ 84
|
|
#define TIMER_ENCODER_PORT GPIOA
|
|
#define TIMER_ENCODER_PIN1 GPIO_PIN_0
|
|
#define TIMER_ENCODER_PIN2 GPIO_PIN_1
|
|
#define TIMER_ENCODER_PIN_SW GPIO_PIN_2
|
|
|
|
// PWM SETTINGS
|
|
#define SIN_TABLE_ORIGIN sin_table
|
|
#define SIN_TABLE_SIZE_MAX 1000
|
|
//--------------------------------------------------
|
|
|
|
//----------DEFINES FOR MODBUS SETTING--------------
|
|
#define MODBUS_UART_NUMB 3 // number of used uart
|
|
#define MODBUS_SPEED 115200
|
|
#define MODBUS_GPIOX GPIOB
|
|
#define MODBUS_GPIO_PIN_RX GPIO_PIN_11
|
|
#define MODBUS_GPIO_PIN_TX GPIO_PIN_10
|
|
/* accord to this define sets define USED_MB_UART = USARTx */
|
|
#define MODBUS_TIM_NUMB 7 // number of used uart
|
|
#define MODBUS_TIM_AHB_FREQ 84
|
|
/* accord to this define sets define USED_MB_TIM = TIMx */
|
|
|
|
/* defines for modbus behaviour */
|
|
#define MODBUS_DEVICE_ID 1 // number of used uart
|
|
#define MODBUS_MAX_TIMEOUT 5000 // is ms
|
|
// custom define for size of receive message
|
|
//--------------------------------------------------
|
|
|
|
typedef struct
|
|
{
|
|
// ctrl periph settings
|
|
uint32_t TIM_CTRL_TICKBASE;
|
|
uint32_t TIM_CTRL_AHB_FREQ;
|
|
// pwm peripth settings
|
|
uint32_t TIM_PWM_TICKBASE;
|
|
uint32_t TIM_PWM_AHB_FREQ;
|
|
|
|
// uint32_t TIM_PWM1_INSTANCE;
|
|
uint32_t TIM_PWM1_TIM_CHANNEL1;
|
|
uint32_t TIM_PWM1_TIM_CHANNEL2;
|
|
uint32_t TIM_PWM1_GPIOx;
|
|
uint32_t TIM_PWM1_GPIO_PIN_X1;
|
|
uint32_t TIM_PWM1_GPIO_PIN_X2;
|
|
|
|
uint32_t TIM_PWM2_INSTANCE;
|
|
uint32_t TIM_PWM2_TIM_CHANNEL1;
|
|
uint32_t TIM_PWM2_TIM_CHANNEL2;
|
|
uint32_t TIM_PWM2_GPIOx;
|
|
uint32_t TIM_PWM2_GPIO_PIN_X1;
|
|
uint32_t TIM_PWM2_GPIO_PIN_X2;
|
|
|
|
uint32_t TIM_PWM3_INSTANCE;
|
|
uint32_t TIM_PWM3_TIM_CHANNEL1;
|
|
uint32_t TIM_PWM3_TIM_CHANNEL2;
|
|
uint32_t TIM_PWM3_GPIOx;
|
|
uint32_t TIM_PWM3_GPIO_PIN_X1;
|
|
uint32_t TIM_PWM3_GPIO_PIN_X2;
|
|
|
|
|
|
// modbus peripth settings
|
|
uint32_t MB_DEVICE_ID;
|
|
uint32_t MB_SPEED;
|
|
uint32_t MB_GPIOX;
|
|
uint32_t MB_GPIO_PIN_RX;
|
|
uint32_t MB_GPIO_PIN_TX;
|
|
uint32_t MB_MAX_TIMEOUT;
|
|
uint32_t MB_TIM_AHB_FREQ;
|
|
|
|
// uint32_t MB_UART_NUMB;
|
|
// uint32_t MB_TIM_NUMB;
|
|
}ProjectSettings_TypeDef;
|
|
extern ProjectSettings_TypeDef PROJSET;
|
|
|
|
#define PROJSET_MEM ((ProjectSettings_TypeDef *)SETTINGS_ADDRESS)
|
|
|
|
|
|
//#define HAL_FLASH_GET_TYPEPROGRAM(_val_) (sizeof(PROJSET_MEM->MB_DEVICE_ID)/2 - 1)
|
|
#define HAL_FLASH_GET_TYPEPROGRAM(_val_) FLASH_TYPEPROGRAM_WORD
|
|
#define FLASH_WRITE_SETTING(_setting_, _val_) HAL_FLASH_Program(HAL_FLASH_GET_TYPEPROGRAM(_setting_), (uint32_t)(&_setting_), (uint32_t)_val_);
|
|
|
|
|
|
void SetFlagUpdateSettingsInMem(void);
|
|
void UpdateSettingsInMem(void);
|
|
void WriteSettingsToMem(void);
|
|
void FillSettingsWithDefines(void);
|
|
void CheckSettingsInFLASH(void);
|
|
int CheckIsSettingsValid(ProjectSettings_TypeDef *set_struct);
|
|
|
|
#endif // __PROJ_SETTINGS_H_
|