Top.Mail.Ru
Уведомления
Очистить все

Blue Pill UART Error code

 Br99
(@br99)
Level 1

Помогите разобраться со значениями ErrorCode. Пробую передавать и принимать данные по USART1 на плате Blue Pill (микроконтроллер STM32F103). В определенный момент обмен по какой-то причине прекращается. В результате отладки заметил, что значение ErrorCode в UART_HandleTypeDef huart4 (huart4.ErrorCode) не нулевое. Вот это поле структуры в самом низу:

typedef struct __UART_HandleTypeDef
{
  USART_TypeDef                 *Instance;        /*!< UART registers base address        */

  UART_InitTypeDef              Init;             /*!< UART communication parameters      */

  const uint8_t                 *pTxBuffPtr;      /*!< Pointer to UART Tx transfer Buffer */

  uint16_t                      TxXferSize;       /*!< UART Tx Transfer size              */

  __IO uint16_t                 TxXferCount;      /*!< UART Tx Transfer Counter           */

  uint8_t                       *pRxBuffPtr;      /*!< Pointer to UART Rx transfer Buffer */

  uint16_t                      RxXferSize;       /*!< UART Rx Transfer size              */

  __IO uint16_t                 RxXferCount;      /*!< UART Rx Transfer Counter           */

  __IO HAL_UART_RxTypeTypeDef ReceptionType;      /*!< Type of ongoing reception          */

  __IO HAL_UART_RxEventTypeTypeDef RxEventType;   /*!< Type of Rx Event                   */

  DMA_HandleTypeDef             *hdmatx;          /*!< UART Tx DMA Handle parameters      */

  DMA_HandleTypeDef             *hdmarx;          /*!< UART Rx DMA Handle parameters      */

  HAL_LockTypeDef               Lock;             /*!< Locking object                     */

  __IO HAL_UART_StateTypeDef    gState;           /*!< UART state information related to global Handle management
                                                       and also related to Tx operations.
                                                       This parameter can be a value of @ref HAL_UART_StateTypeDef */

  __IO HAL_UART_StateTypeDef    RxState;          /*!< UART state information related to Rx operations.
                                                       This parameter can be a value of @ref HAL_UART_StateTypeDef */

  __IO uint32_t                 ErrorCode;        /*!< UART Error code                    */

Решил начать с расшифровки этого кода, возможно тогда станет понятно в чем глобальная проблема с передачей-приемом.

Цитата
Создатель темы Размещено : 10.04.2025 11:25
Метки темы
Aveal
(@aveal)
Top level Admin

Приветствую, вот возможные значения:

#define HAL_UART_ERROR_NONE              0x00000000U   /*!< No error            */
#define HAL_UART_ERROR_PE                0x00000001U   /*!< Parity error        */
#define HAL_UART_ERROR_NE                0x00000002U   /*!< Noise error         */
#define HAL_UART_ERROR_FE                0x00000004U   /*!< Frame error         */
#define HAL_UART_ERROR_ORE               0x00000008U   /*!< Overrun error       */
#define HAL_UART_ERROR_DMA               0x00000010U   /*!< DMA transfer error  */
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
#define  HAL_UART_ERROR_INVALID_CALLBACK 0x00000020U   /*!< Invalid Callback error  */
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
ОтветитьЦитата
Размещено : 10.04.2025 15:01
 Br99
(@br99)
Level 1

Благодарю, по этим значениям выяснил что у меня Overrun Error:

HAL_UART_ERROR_ORE
ОтветитьЦитата
Создатель темы Размещено : 10.04.2025 15:46
Aveal
(@aveal)
Top level Admin

Возможно данные приходят в тот момент, когда контроллер еще не встал на прием, посмотри в этой теме - usart overrun.

ОтветитьЦитата
Размещено : 10.04.2025 16:01
 Br99
(@br99)
Level 1

Запись от: @aveal

Возможно данные приходят в тот момент, когда контроллер еще не встал на прием, посмотри в этой теме - usart overrun.

Судя по описанию похоже на мой случай, буду думать

 

ОтветитьЦитата
Создатель темы Размещено : 10.04.2025 16:36
 Br99
(@br99)
Level 1

@aveal в итоге переделал всю систему обмена данными целиком и сделал сброс ошибок как в той теме - полет нормальный, работает стабильно 👍

ОтветитьЦитата
Создатель темы Размещено : 11.04.2025 20:37
Aveal
(@aveal)
Top level Admin

@br99 Отлично )

ОтветитьЦитата
Размещено : 11.04.2025 20:57
Поделиться: