diff --git a/include/main.h b/include/main.h index c93e5f4..864f8bc 100644 --- a/include/main.h +++ b/include/main.h @@ -38,12 +38,13 @@ extern "C" { /* USER CODE BEGIN ET */ RTC_HandleTypeDef hrtc; -TIM_HandleTypeDef htim2; - SPI_HandleTypeDef hspi1; +TIM_HandleTypeDef htim2; + UART_HandleTypeDef huart1; UART_HandleTypeDef huart2; + /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ @@ -66,6 +67,10 @@ void Error_Handler(void); /* Private defines -----------------------------------------------------------*/ #define LED_Pin GPIO_PIN_1 #define LED_GPIO_Port GPIOA +#define USART2_TX_Pin GPIO_PIN_2 +#define USART2_TX_GPIO_Port GPIOA +#define USART2_RX_Pin GPIO_PIN_3 +#define USART2_RX_GPIO_Port GPIOA #define NSS_Pin GPIO_PIN_4 #define NSS_GPIO_Port GPIOA #define RST_Pin GPIO_PIN_9 @@ -79,6 +84,11 @@ void Error_Handler(void); #define DIO2_Pin GPIO_PIN_5 #define DIO2_GPIO_Port GPIOB #define DIO2_EXTI_IRQn EXTI4_15_IRQn +#define USART1_TX_Pin GPIO_PIN_6 +#define USART1_TX_GPIO_Port GPIOB +#define USART1_RX_Pin GPIO_PIN_7 +#define USART1_RX_GPIO_Port GPIOB + /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ diff --git a/src/main.c b/src/main.c index 547dcf1..3cf5b62 100644 --- a/src/main.c +++ b/src/main.c @@ -41,7 +41,7 @@ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ -#define BUFFER_SIZE 2048 +#define BUFFER_SIZE 1024 /* USER CODE END PD */ @@ -70,6 +70,8 @@ static void MX_RTC_Init(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +uint8_t sml_frame[BUFFER_SIZE]; + double T1Wh = -2, SumWh = -2; typedef struct { @@ -247,18 +249,10 @@ void initfunc (osjob_t* j) { } -const uint8_t sml_frame[BUFFER_SIZE] = {"Hallo Welt !!\n"}; u2_t readsensor(){ u2_t value = 0xDF; /// read from evrything ...make your own sensor - HAL_UART_Transmit( &huart2, (uint8_t *)sml_frame, 8, HAL_MAX_DELAY ); - // if( HAL_UART_Receive( &huart2, sml_frame, 8, 15 ) == (HAL_OK || HAL_TIMEOUT)){ - // for(int i = 0; i < BUFFER_SIZE; i++){ - // readByte( &sml_frame[i] ); - // }; - // } - return value; } @@ -269,7 +263,7 @@ static void reportfunc (osjob_t* j) { // read sensor u2_t val = readsensor(); // debug_int( os_getTime() ); - debug_val(": val = ", val); + debug_val("val = ", val); // prepare and schedule data for transmission LMIC.frame[0] = val << 8; LMIC.frame[1] = val; @@ -278,6 +272,30 @@ static void reportfunc (osjob_t* j) { // os_setTimedCallback(j, os_getTime()+sec2osticks(300), reportfunc); } +static osjob_t testjob; + +static void testfunc( osjob_t *j){ + // uint32_t ticks; + // ticks = HAL_GetTick(); + // debug_str( (const char*)sml_frame ); + // debug_val("Ticks: ", ticks ); + for( int i = 0; i < sizeof(sml_frame); i++ ){ + sml_frame[i] = 0u; + }; + HAL_UART_Receive( &huart2, sml_frame, 512, 2000 ); + // HAL_UART_Transmit( &huart1, sml_frame, 512, HAL_MAX_DELAY ); + for(int i = 0; i < 512; i++){ + readByte( &sml_frame[i] ); + }; + // debug_str( "\r\n" ); + + os_setTimedCallback(j, os_getTime()+sec2osticks(10), testfunc); + +} + + + + ////////////////////////////////////////////////// // LMIC EVENT CALLBACK ////////////////////////////////////////////////// @@ -415,7 +433,7 @@ int main(void) // setup initial job os_setCallback(&initjob, initfunc); // execute scheduled jobs and events - // os_setTimedCallback(&testjob, os_getTime()+sec2osticks(1), testfunc); + os_setTimedCallback(&testjob, os_getTime()+sec2osticks(10), testfunc); // os_setTimedCallback(&reportjob, os_getTime()+sec2osticks(300), reportfunc); os_runloop(); // (not reached) @@ -717,7 +735,9 @@ static void MX_USART2_UART_Init(void) huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; + huart2.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; + huart2.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; if (HAL_UART_Init(&huart2) != HAL_OK) { Error_Handler(); diff --git a/src/stm32l0xx_hal_msp.c b/src/stm32l0xx_hal_msp.c index 328baf2..4a47677 100644 --- a/src/stm32l0xx_hal_msp.c +++ b/src/stm32l0xx_hal_msp.c @@ -273,12 +273,19 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) PB6 ------> USART1_TX PB7 ------> USART1_RX */ - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Pin = USART1_TX_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF0_USART1; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + HAL_GPIO_Init(USART1_TX_GPIO_Port, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = USART1_RX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF0_USART1; + HAL_GPIO_Init(USART1_RX_GPIO_Port, &GPIO_InitStruct); /* USER CODE BEGIN USART1_MspInit 1 */ @@ -297,12 +304,19 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) PA2 ------> USART2_TX PA3 ------> USART2_RX */ - GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3; + GPIO_InitStruct.Pin = USART2_TX_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF4_USART2; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + HAL_GPIO_Init(USART2_TX_GPIO_Port, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = USART2_RX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF4_USART2; + HAL_GPIO_Init(USART2_RX_GPIO_Port, &GPIO_InitStruct); /* USER CODE BEGIN USART2_MspInit 1 */ @@ -331,7 +345,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) PB6 ------> USART1_TX PB7 ------> USART1_RX */ - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7); + HAL_GPIO_DeInit(GPIOB, USART1_TX_Pin|USART1_RX_Pin); /* USER CODE BEGIN USART1_MspDeInit 1 */ @@ -349,7 +363,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) PA2 ------> USART2_TX PA3 ------> USART2_RX */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3); + HAL_GPIO_DeInit(GPIOA, USART2_TX_Pin|USART2_RX_Pin); /* USER CODE BEGIN USART2_MspDeInit 1 */