sml via uart2 works first time almost properly

This commit is contained in:
Dominik Kuhn 2024-01-04 19:31:20 +01:00
parent d378c05073
commit 41469673b6
3 changed files with 66 additions and 22 deletions

View File

@ -38,12 +38,13 @@ extern "C" {
/* USER CODE BEGIN ET */ /* USER CODE BEGIN ET */
RTC_HandleTypeDef hrtc; RTC_HandleTypeDef hrtc;
TIM_HandleTypeDef htim2;
SPI_HandleTypeDef hspi1; SPI_HandleTypeDef hspi1;
TIM_HandleTypeDef htim2;
UART_HandleTypeDef huart1; UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2; UART_HandleTypeDef huart2;
/* USER CODE END ET */ /* USER CODE END ET */
/* Exported constants --------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/
@ -66,6 +67,10 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/ /* Private defines -----------------------------------------------------------*/
#define LED_Pin GPIO_PIN_1 #define LED_Pin GPIO_PIN_1
#define LED_GPIO_Port GPIOA #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_Pin GPIO_PIN_4
#define NSS_GPIO_Port GPIOA #define NSS_GPIO_Port GPIOA
#define RST_Pin GPIO_PIN_9 #define RST_Pin GPIO_PIN_9
@ -79,6 +84,11 @@ void Error_Handler(void);
#define DIO2_Pin GPIO_PIN_5 #define DIO2_Pin GPIO_PIN_5
#define DIO2_GPIO_Port GPIOB #define DIO2_GPIO_Port GPIOB
#define DIO2_EXTI_IRQn EXTI4_15_IRQn #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 BEGIN Private defines */
/* USER CODE END Private defines */ /* USER CODE END Private defines */

View File

@ -41,7 +41,7 @@
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */ /* USER CODE BEGIN PD */
#define BUFFER_SIZE 2048 #define BUFFER_SIZE 1024
/* USER CODE END PD */ /* USER CODE END PD */
@ -70,6 +70,8 @@ static void MX_RTC_Init(void);
/* Private user code ---------------------------------------------------------*/ /* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */ /* USER CODE BEGIN 0 */
uint8_t sml_frame[BUFFER_SIZE];
double T1Wh = -2, SumWh = -2; double T1Wh = -2, SumWh = -2;
typedef struct { 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 readsensor(){
u2_t value = 0xDF; /// read from evrything ...make your own sensor 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; return value;
} }
@ -269,7 +263,7 @@ static void reportfunc (osjob_t* j) {
// read sensor // read sensor
u2_t val = readsensor(); u2_t val = readsensor();
// debug_int( os_getTime() ); // debug_int( os_getTime() );
debug_val(": val = ", val); debug_val("val = ", val);
// prepare and schedule data for transmission // prepare and schedule data for transmission
LMIC.frame[0] = val << 8; LMIC.frame[0] = val << 8;
LMIC.frame[1] = val; LMIC.frame[1] = val;
@ -278,6 +272,30 @@ static void reportfunc (osjob_t* j) {
// os_setTimedCallback(j, os_getTime()+sec2osticks(300), reportfunc); // 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 // LMIC EVENT CALLBACK
////////////////////////////////////////////////// //////////////////////////////////////////////////
@ -415,7 +433,7 @@ int main(void)
// setup initial job // setup initial job
os_setCallback(&initjob, initfunc); os_setCallback(&initjob, initfunc);
// execute scheduled jobs and events // 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_setTimedCallback(&reportjob, os_getTime()+sec2osticks(300), reportfunc);
os_runloop(); os_runloop();
// (not reached) // (not reached)
@ -717,7 +735,9 @@ static void MX_USART2_UART_Init(void)
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16; huart2.Init.OverSampling = UART_OVERSAMPLING_16;
huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; 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) if (HAL_UART_Init(&huart2) != HAL_OK)
{ {
Error_Handler(); Error_Handler();

View File

@ -273,12 +273,19 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
PB6 ------> USART1_TX PB6 ------> USART1_TX
PB7 ------> USART1_RX 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.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; 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; 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 */ /* USER CODE BEGIN USART1_MspInit 1 */
@ -297,12 +304,19 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
PA2 ------> USART2_TX PA2 ------> USART2_TX
PA3 ------> USART2_RX 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.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; 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; 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 */ /* USER CODE BEGIN USART2_MspInit 1 */
@ -331,7 +345,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
PB6 ------> USART1_TX PB6 ------> USART1_TX
PB7 ------> USART1_RX 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 */ /* USER CODE BEGIN USART1_MspDeInit 1 */
@ -349,7 +363,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
PA2 ------> USART2_TX PA2 ------> USART2_TX
PA3 ------> USART2_RX 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 */ /* USER CODE BEGIN USART2_MspDeInit 1 */