реклама на сайте
подробности

 
 
> STM32F103 проблемы с контролем четности USART, I need help
sidy
сообщение Aug 31 2018, 13:05
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Добрый день.

Потребовалось использовать контроль четности в USART (STM32f103) и возникла проблема. При отсутствии контроля четности прием идет правильно. Например посылка:
01 04 00 41 00 01 224 02
принимается должным образом.
При включении контроля четности, например odd принимаю ту же самую посылка следующим образом:
01 04 256 41 256 01 224 02
Т.е. вместо 0 принимается 256

Вот код инициализации USART:
RCC->APB2ENR|=RCC_APB2ENR_USART1EN;
USART1->CR1=USART1->CR2=USART1->CR3=0;
USART1->BRR=CPU_CLOCK/BAUD_RATE;
USART1->CR1|=USART_CR1_M;
USART1->CR1|=USART_CR1_PCE;
USART1->CR1|=USART_CR1_PS;
USART1->CR1|=USART_CR1_TE;
USART1->CR1|=USART_CR1_RE;
USART1->CR1|=USART_CR1_TCIE;
USART1->CR1|=USART_CR1_RXNEIE;

Подскажите в чем может быть дело.

Сообщение отредактировал sidy - Aug 31 2018, 13:19
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Sep 17 2018, 10:39
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



код из прерывания UART'а:

Код
    uint32_t status = uart_hw->SR;

    // receiver not empty
    if (USART_SR_RXNE & status)
    {
        uint16_t data = uart_hw->DR;
        if (parity_en)        // "срезать" бит чётности
            data &= 0xFF;


parity_en - флажок из настроек драйвера (он многофункциональный).


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 09:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016