Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-окт-17 03:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: UART изменение скорости
СообщениеДобавлено: 2017-сен-15 14:29 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 31
Откуда: ПКК "Миландр"
Цитата:
Вот именно этого я и не наблюдал, а чем тоже писал. Повторю. Я смотрю значения регистров делителя, там НОВОЕ значение. Смотрю на линию - там тишина. Далее мастером посылаю пакеты, но обмены происходят только на СТАРОЙ скорости.


При использовании указанной мной выше функции смены скорости проблем выявлено не было. Все регистры и скорости успешно переключаются.
Если Вы считаете что проблема в кристалле, вышлите минимального размера проект, с комментариями в каком месте и что смотреть. Мы проверим поведение на отладочной плате и при подтверждении проблемы внесем упоминание в еррата.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART изменение скорости
СообщениеДобавлено: 2017-сен-18 14:59 
Не в сети

Зарегистрирован: 2015-фев-25 09:17
Сообщения: 12
Прикрепляю проект, воспроизводящий ошибку.
1. Проект основан на примере к демоплате, использует "стандартную библиотеку из гитхаба" (в архиве все нужные файлы скопированы, внешнего ничего не надо). Внешний HSE стоит 16 (на плате изначально 8 ), дефайном можно подправить. Среда IAR 7.80, конфиги для МК взяты с форума. Моменты, связанные с проблемой отмечены комментами с тэгом #debug
2. После инициализации запускается UART1 на 115200, потом через ~3сек переключается на 3000000. И там и там эхо. Думаю, скорости можно взять другие.
3. Воспроизводится так. Запускается прошивка, снаружи по уарту выдается непрерывная выдача на скорости 3000000 (само значение не думаю, что критично) рандома на 5 секунд. Далее видно, что предделители значения поменяли, а уарт МК продолжает работать на 115200.
4. Ошибка проявляется при UART_DeInit/UART_Init из библиотеки. Не проявляется, если использовать UartSetBaud из предыдущих постов. Зато, если чуть подправить (в комментах описано) UartSetBaud - опять начинает проявляться.


Вложения:
uart_test.zip [78.21 КБ]
Скачиваний: 6
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART изменение скорости
СообщениеДобавлено: 2017-сен-19 14:58 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 31
Откуда: ПКК "Миландр"
В спецификации на стр. 324:
"Содержимое регистров LCR_H, IBRD и FBRD совместно образует общий 30-разрядный регистр LCR, который обновляется по стробу, формируемому при записи в LCR_H. Таким образом, для того, чтобы изменение параметров коэффициента деления частоты обмена данными вступило в силу, после их изменения значения регистров IBRD и/или FBRD необходимо осуществить запись данных в регистр LCR_H."

Возможно наблюдаемое поведение связано с этим, неверной последовательностью записи регистров. Добавил Ваш #DEBUG код в свой тест, скорость по прежнему меняется успешно.

Код:
void UartSetBaud(uint32_t baudRate, uint32_t freqCPU)
{
    uint32_t divider = freqCPU / (baudRate >> 2);
    uint32_t CR_tmp = UART_X->CR;
    uint32_t LCR_tmp = UART_X->LCR_H;
   
    while ( (UART_X->FR & UART_FLAG_BUSY) ); // wait

//#DEBUG
  UART_X->CR = 0;
  UART_X->LCR_H = 0;
  UART_X->IBRD = 0;
  UART_X->FBRD = 0;
//#DEBUG
   
    UART_X->CR = 0;
    UART_X->IBRD = divider >> 6;
    UART_X->FBRD = divider & 0x003F;
    UART_X->LCR_H = LCR_tmp;
    UART_X->CR = CR_tmp;
}

_________________
Отдел технической поддержки support@milandr.ru


Последний раз редактировалось Vasiliy 2017-сен-19 15:31, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART изменение скорости
СообщениеДобавлено: 2017-сен-19 15:07 
Не в сети

Зарегистрирован: 2014-май-15 11:04
Сообщения: 124
Откуда: Москва
Себе как-то давно пометочку делал, теперь она из проекта в проект кочует с файлом настройки УСАППа:
Код:
/*
   Порядок обращение к регистрам:
   IBRD->FBRD->LCR_H, или FBRD->IBRD->LCR_H.
*/

стр. 324.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB