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

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

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

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

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

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


Закрытая тема
Опции темы
Непрочитано 04.02.2016, 06:01   #1
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию STM32F103 - нужно три USART с разными скоростями

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

Я выбрал STM32F103RB, рассчитывая на их мощь. И все было хорошо, пока не дошел до настройки скорости. Получается, что регистр управления скоростью только один? И в этом процессоре настроить USARTы на разные скорости невозможно? Или я плохо искал?
Реклама:
Alex9797 вне форума  
Непрочитано 04.02.2016, 09:06   #2
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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   #3
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
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   #4
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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   #5
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F103 - нужно три USART с разными скоростями

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

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

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

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

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

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

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

Закладки

Метки
stm32f103, usart


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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot