STM32F70V8T6 Usart3 Auto Baud Rate Problemi

Başlatan kimlenbu, 02 Haziran 2021, 15:22:30

kimlenbu

02 Haziran 2021, 15:22:30 Son düzenlenme: 02 Haziran 2021, 15:23:41 kimlenbu
Selamlar,

STM32F730V8T6 MCU'da Usart2 ile autobaudrate kullanabiliyorum. DMA ve Usart Idle ile boyutu belli olmayan veri alıyorum, sıkıntı yok.

Usart3 ile autobaudrate çalışmıyor. Eğer baudrate'i kendim ayarlarsam gene DMA ve Usart idle ile veriyi düzgünce alabiliyorum. Varsayılan pinleri cubemx'in ayarladığı pinler yerine usart3 için ayrılmış olan PB10 ve PB11 pinlerine atadım, bundan kaynaklı olabilir mi ? Daha önce deneyen oldu mu ?

(OnStartBit, OnFallingEdge seçeneklerinin ikisini de denedim. Veri gönderen cihaz benden bağımsız olduğu için 0x7F ve 0x55 frame seçeneklerini kullanamıyorum.)

static void MX_USART2_UART_Init(void)
{

  
/* USER CODE BEGIN USART2_Init 0 */

  /* USER CODE END USART2_Init 0 */

  /* USER CODE BEGIN USART2_Init 1 */

  /* USER CODE END USART2_Init 1 */
  
huart2.Instance USART2;
  
huart2.Init.BaudRate 115200;
  
huart2.Init.WordLength UART_WORDLENGTH_8B;
  
huart2.Init.StopBits UART_STOPBITS_1;
  
huart2.Init.Parity UART_PARITY_NONE;
  
huart2.Init.Mode UART_MODE_TX_RX;
  
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_AUTOBAUDRATE_INIT;
  
huart2.AdvancedInit.AutoBaudRateEnable UART_ADVFEATURE_AUTOBAUDRATE_ENABLE;
  
huart2.AdvancedInit.AutoBaudRateMode UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT;
  if (
HAL_UART_Init(&huart2) != HAL_OK)
  {
    
Error_Handler();
  }
  
/* USER CODE BEGIN USART2_Init 2 */
	


  
/* USER CODE END USART2_Init 2 */

}


static void MX_USART3_UART_Init(void)
{

  
/* USER CODE BEGIN USART3_Init 0 */

  /* USER CODE END USART3_Init 0 */

  /* USER CODE BEGIN USART3_Init 1 */

  /* USER CODE END USART3_Init 1 */
  
huart3.Instance USART3;
  
huart3.Init.BaudRate 115200;
  
huart3.Init.WordLength UART_WORDLENGTH_8B;
  
huart3.Init.StopBits UART_STOPBITS_1;
  
huart3.Init.Parity UART_PARITY_NONE;
  
huart3.Init.Mode UART_MODE_TX_RX;
  
huart3.Init.HwFlowCtl UART_HWCONTROL_NONE;
  
huart3.Init.OverSampling UART_OVERSAMPLING_16;
  
huart3.Init.OneBitSampling UART_ONE_BIT_SAMPLE_DISABLE;
  
huart3.AdvancedInit.AdvFeatureInit UART_ADVFEATURE_AUTOBAUDRATE_INIT;
  
huart3.AdvancedInit.AutoBaudRateEnable UART_ADVFEATURE_AUTOBAUDRATE_ENABLE;
  
huart3.AdvancedInit.AutoBaudRateMode UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT;
  if (
HAL_UART_Init(&huart3) != HAL_OK)
  {
    
Error_Handler();
  }
  
/* USER CODE BEGIN USART3_Init 2 */

  /* USER CODE END USART3_Init 2 */

}

kimlenbu

One bit sample disable ayarını "enable" yapınca sorun çözüldü.

huart3.Init.OneBitSampling UART_ONE_BIT_SAMPLE_ENABLE;

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.