Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

STM32F103 - нужно три USART с разными скоростями

Непрочитано 04.02.2016, 06:01  
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,605 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию STM32F103 - нужно три USART с разными скоростями

В общем, понадобилось мне сваять устройство, которое сможет общаться по USART с тремя совершенно разными устройствами, у которых скорости отличаются друг от друга. То есть, у одного скорость 38400, у второго 9600, а у третьего 921600. До этого подобные задачи решать не приходилось, обычно скорости были одинаковые.

Я выбрал STM32F103RB, рассчитывая на их мощь. И все было хорошо, пока не дошел до настройки скорости. Получается, что регистр управления скоростью только один? И в этом процессоре настроить USARTы на разные скорости невозможно? Или я плохо искал?
Реклама:
Alex9797 вне форума  
Непрочитано 04.02.2016, 09:06  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Alex9797, Да ты че? А мы и не знаем...
Что читаем вместо RM?

Каждый UART имеет свои регистры конфигурации , кои настраиваются совершенно отдельно и некоторые можно менять на лету.

Кстати чисто из любопытства - обязательно именно три UARTA? Два с ремапом пинов не прокатит?

Сообщение от Alex9797 Посмотреть сообщение
Я выбрал STM32F103RB, рассчитывая на их мощь.
У F1 старая периферия ...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 04.02.2016 в 09:33.
dosikus вне форума  
Сказали "Спасибо" dosikus
Alex9797 (04.02.2016)
Непрочитано 04.02.2016, 12:24  
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,605 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Сообщение от dosikus Посмотреть сообщение
А мы и не знаем...
Сам тащусь!

Сообщение от dosikus Посмотреть сообщение
Что читаем вместо RM?
STM32F103xB и RM0008

Сообщение от dosikus Посмотреть сообщение
Каждый UART имеет свои регистры конфигурации
Да, из прочитанного это было видно явно. А вот насчет регистров делителей частоты получалось не так удачно. Выходило, что этот регистр - один на всех. Не хотелось верить в такое. Ведь даже у STM8S208 - каждый USART настраивается на свою скорость. Но их там только два, а то бы я не парился, давно бы уже применил.
Да что там STM8, даже у PICов независимая установка скорости.

Но проблема в том, что у PICов так и написано, в самом начале, что есть два independens EUSART. Это сразу вселяет уверенность. У STM8 это хорошо видно в описании регистров, где вместо номера USART они подставляют "х".
А у STM32F103 описание размазано, и формулировки нечеткие, нет однозначного понимания. Это уже потом, когда ткнулся носом, и когда убедился на практике, то становишься умным, и приходит четкое понимание. Правда, понимание не всего в целом, а лишь того, чего искал.

Сообщение от dosikus Посмотреть сообщение
обязательно именно три UARTA?
Да, обязательно. Дело в том, что те три устройства не моего изготовления, и повлиять на их скорость нет возможности. С двумя первыми я веду диалог, обрабатываю полученные от них данные, и управляю третьим в зависимости от результатов обработки.
В давние времена, когда возможности процев были скромнее, и даже один UART был далеко не в каждом, а о двух можно было только мечтать, я выходил из положения простым мультиплексированием одного UARTа на любое количество линий. Правда, во всех тех случаях мой проц был мастером, поэтому я мог когда угодно переключаться на любую линию, не боясь, что по другой пропущу посылку.

А сейчас ситуация сложнее. Два первых устройства - мастера, а я для них слейв. Поэтому нужны реальные три USARTа.

Сообщение от dosikus Посмотреть сообщение
Два с ремапом пинов не прокатит?
Может я и с этим чего-то недочитал? Но, насколько я знал до этого момента, ремап не добавит третьего, он лишь переназначает выводы с одних на другие.

dosikus, спасибо! Именно такого ответа я и ждал. Главное, что Вы дали уверенность в том, что то, что я ищу - оно существует. Это даже полезнее, чем явно ткнуть в него носом. Я уже нашел это место, и тихонько удивляюсь - как я мог это пропустить? Правда, у меня есть отмазка: время было позднее, сидел до половины пятого утра. Это и повлияло, наверное.
Alex9797 вне форума  
Непрочитано 04.02.2016, 12:59  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Сообщение от Alex9797 Посмотреть сообщение
Может я и с этим чего-то недочитал? Но, насколько я знал до этого момента, ремап не добавит третьего, он лишь переназначает выводы с одних на другие.

Ну можно же ремапить с переключением скорости. Не, если конечно нужно одновременно работать с 3мя , тогда да .

Инит UART на F1
Код:
#define USARTCLK 72000000UL

#define BAUDRATE 115200UL
Код:
void UsartInit(void)
 {
   RCC-›APB2ENR |=RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN;
    
    GPIOA-›CRH &=~ (GPIO_CRH_CNF10 |GPIO_CRH_CNF9|GPIO_CRH_MODE10);
    GPIOA-›CRH |= GPIO_CRH_CNF10_0 |GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9;
    
    USART1-›CR1 |= USART_CR1_TE |USART_CR1_RE |USART_CR1_RXNEIE;
    USART1-›BRR =(USARTCLK+BAUDRATE/2)/BAUDRATE;
    USART1-›CR1 |=USART_CR1_UE;
    
    NVIC_SetPriority(USART1_IRQn,15);
    NVIC_EnableIRQ(USART1_IRQn);
   
   
 }
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 04.02.2016 в 13:02.
dosikus вне форума  
Сказали "Спасибо" dosikus
Alex9797 (04.02.2016)
Непрочитано 04.02.2016, 13:07  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Например слушаем мастера одним UART. Приняли что надо, ремапим на слейв , переключаем скорость, работаем с слейвом. Закончили со слейвом - снова конфигурим на мастер.
Чревато тем что можем проспать посылки от мастера...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 04.02.2016 в 13:11.
dosikus вне форума  
Непрочитано 04.02.2016, 13:54  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,123
Сказал спасибо: 202
Сказали Спасибо 3,284 раз(а) в 2,150 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

взять второй дешевый камень типа ф0, передавать ему через спи или через ногодрыг, вот тебе уже 4 уарта
__________________
кагмаподэ магмаподэ
индюк вне форума  
Сказали "Спасибо" индюк
Alex9797 (04.02.2016)
Непрочитано 04.02.2016, 13:59  
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,605 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Сообщение от dosikus Посмотреть сообщение
Чревато тем что можем проспать посылки от мастера...
Да, так и будет. Обмен довольно интенсивный, и одновременный приход посылок - явление нередкое. Конечно, если я не подтвердил успешное получение, то мастер повторит посылку. Два раза. После этого он плюнет, и решит, что меня вообще нет, и станет посылать тупые запросы "есть кто-нибудь на линии?". Один мастер шлет длинные пакеты, паровозики длиной 20...35 байт. Второй шлет покороче, 8...12 байт. И пока идет паровозик по одной линии, часто появляется такой же по другой линии.
Alex9797 вне форума  
Непрочитано 04.02.2016, 14:04  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

имхо лучше взять STM32F091CB, 48 ног 6 USART
oleg110592 вне форума  
Сказали "Спасибо" oleg110592
Alex9797 (04.02.2016)
Непрочитано 04.02.2016, 14:09  
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,605 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Сообщение от индюк Посмотреть сообщение
взять второй дешевый камень типа ф0, передавать ему через спи или через ногодрыг, вот тебе уже 4 уарта
Да, я уже готов был и к такому варианту. Я во многих случаях предпочитал поставить на плату два процессора попроще, чем один супер. Особенно если время жмет. И в программировании проще, и в наладке, и модернизировать проще. Иногда комплексовал по этому поводу, задавал себе вопрос: а не дурак ли я, что так делаю?
Но каждый раз давал на этот вопрос отрицательный ответ.
А после того, как увидел, что знаменитый SIEMENS запихнул аж четыре процессора внутрь простенького реле, мои комплексы сразу испарились.
Alex9797 вне форума  
Сказали "Спасибо" Alex9797
alvadep (04.02.2016)
Непрочитано 04.02.2016, 14:12  
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,605 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

Сообщение от oleg110592 Посмотреть сообщение
имхо лучше взять STM32F091CB, 48 ног 6 USART
Прошу прощения у всех откликнувшихся, за то, что не упомянул главного: кроме трех USART, на борту требовалось наличие еще и CAN. Поэтому выбор не очень богатый: 103, 105, 107...
Alex9797 вне форума  
 

Метки
stm32f103, usart
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 12:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.