Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F0 и USART
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 00:09:26

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 84 ]  1, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32F0 и USART
СообщениеДобавлено: Вс окт 27, 2013 22:38:50 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Пт сен 10, 2010 20:48:01
Сообщений: 350
Откуда: Минск
Рейтинг сообщения: 0
Не получается запустить USART на данном мк:
Пробовал:
Код:
void Init_usart(void)
{
  RCC->AHBENR |= RCC_AHBENR_GPIOAEN;     //Включаем тактирование GPIOA
  RCC->APB2ENR |= RCC_APB2ENR_USART1EN;  //Включаем тактирование USART1
 
  GPIOA->MODER   |= GPIO_MODER_MODER9_1;       // PA9 (TX) - Alternate function mode
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9;    // PA9 (TX) - High speed
 
  USART1->CR1 |= USART_CR1_UE;    //Включаем USART1
  USART1->CR1 &= ~USART_CR1_M;    //Данные - 8 бит
  USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
  USART1->BRR = 0x681;            //Скорость обмена 9600 бод
  USART1->CR1 |= USART_CR1_TE;    //Включаем передатчик USART1
  USART1->CR1 |= USART_CR1_RE;    //Включаем приемник USART1
}
void Transmit(uint16_t Data)
{
  while(!(USART1->ISR & USART_ISR_TC));
  USART1->TDR = (Data & (uint16_t)0x01FF);
}


Reference manual

На выходе тишина…
Не могу понять, что не так?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс окт 27, 2013 23:08:55 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Чт фев 16, 2012 19:00:11
Сообщений: 502
Рейтинг сообщения: 0
посмотрите примеры из stm32f0xx_rcc.c и stm32f0xx_usart.c .
там вроде еще нужно дернуть ф-ю RCC_USARTCLKConfig:
Код:
  /* Clear USARTSW[1:0] bit */
  RCC->CFGR3 &= ~RCC_CFGR3_USART1SW;
  /* Set USARTSW bits according to RCC_USARTCLK value */
  RCC->CFGR3 |= RCC_USARTCLK;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс окт 27, 2013 23:22:31 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Пт сен 10, 2010 20:48:01
Сообщений: 350
Откуда: Минск
Рейтинг сообщения: 0
Смотрел примеры, там вообще ничего не понятно…
Бит “RCC_USARTCLK” отсутствует в этом мк.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс окт 27, 2013 23:48:10 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Чт фев 16, 2012 19:00:11
Сообщений: 502
Рейтинг сообщения: 0
это RCC_USART1CLK_SYSCLK


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 01:21:15 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Пт сен 10, 2010 20:48:01
Сообщений: 350
Откуда: Минск
Рейтинг сообщения: 0
zöner писал(а):
это RCC_USART1CLK_SYSCLK

нету такого!?
Изображение

Пробовал разные варианты битов “ RCC_CFGR3_USART1SW” – без результатов…


Вложения:
usart.PNG [16.3 KiB]
Скачиваний: 8493
Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 01:31:18 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Чт фев 16, 2012 19:00:11
Сообщений: 502
Рейтинг сообщения: 0
есть. Пример взят из стандартной библиотеки STM32F0xx_StdPeriph_Examples/USART.
USART1 работает (правда, настраивал не напрямую регистры, а через функции из stm32f0xx_usart.c):
Код:
#define RCC_USART1CLK_SYSCLK               RCC_CFGR3_USART1SW_0


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 09:53:20 
Вымогатель припоя

Зарегистрирован: Ср янв 05, 2011 10:03:18
Сообщений: 581
Рейтинг сообщения: 0
wss60 писал(а):
Не получается запустить USART на данном мк:
Пробовал:
Код:
void Transmit(uint16_t Data)
{
  while(!(USART1->ISR & USART_ISR_TC));
  USART1->TDR = (Data & (uint16_t)0x01FF);
}

На выходе тишина…
Не могу понять, что не так?
С инитом не разбирался, там все просто.
С передачей у меня всегда так:
Код:
void USART_Tx( u8 data ){
   USART1->DR  =  data;
   while(!(USART1->SR & USART_SR_TC)) {};
   USART1->SR &=  ~USART_SR_TC;
}

Анализирую не флаг прерывания в регистре статуса прерывания, а флаг готовности передатчика в регистре статуса.

_________________
С уважением,
Виктор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 10:25:01 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 1
wss60 писал(а):
Не получается запустить USART на данном мк:

На выходе тишина…
Не могу понять, что не так?


Смотрим внимательно:

Изображение
Изображение


И читаем http://kazus.ru/forums/showpost.php?p=6 ... stcount=38

В SPL кстати расчет скорость UART делается через жопу. Все намного проще .

Цитата:
Код:
USART1->BRR = 0x681;            //Скорость обмена 9600 бод


Что ???!!!! "Магические знаки" ????

Код:
#define APBCLK 48000000UL
#define BAUDRATE 115200UL


Код:
USART2->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 15:26:53 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Пт сен 10, 2010 20:48:01
Сообщений: 350
Откуда: Минск
Рейтинг сообщения: 0
ut1wpr писал(а):
Что ???!!!! "Магические знаки" ????

Магическое число решил взять из даташита пока не разберусь с инициализацией.

Теперь другая проблема: компилятор “ругается” на регистр AFRH!?
Код:
void Init_usart(void)
{
  GPIOA_CLK_ENABLE;  //Включаем тактирование GPIOA
  USART1_CLK_ENABLE; //Включаем тактирование USART1
 
  GPIOA->MODER   |= GPIO_MODER_MODER9_1;         // PA9 (TX) - Alternate function mode
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9;      // PA9 (TX) - High speed
 
  GPIOA->AFRH    |= 0x0110;  // <----- !!!
 
  /* тактирование usart(SYSCLK) */
  RCC->CFGR3     &= ~RCC_CFGR3_USART1SW;
  RCC->CFGR3     |=  RCC_CFGR3_USART1SW_0;
 
  USART1->CR1 |= USART_CR1_UE; //Включаем USART1
  USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
  USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
  USART1->BRR = 0x681; //Скорость обмена 9600
  USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1 
}

Изображение


Вложения:
err.PNG [3.7 KiB]
Скачиваний: 8526
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 15:33:42 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
wss60 писал(а):
Теперь другая проблема: компилятор “ругается” на регистр AFRH!?
Код:
void Init_usart(void)
{
 
 
  GPIOA->AFRH    |= 0x0110;  // <----- !!!



Можно же ради приличия слазать в stm32f0xx.h :)))

Код:
GPIOA->AFR[1]= (1<<(2*4))|(1<<(1*4));


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 16:51:31 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Пт сен 10, 2010 20:48:01
Сообщений: 350
Откуда: Минск
Рейтинг сообщения: 0
Да облазил его весь: искал AFRH…
А оказалось это массив! :))
Теперь все норм.

Код:
#define APBCLK   8000000UL
#define BAUDRATE 115200UL

void Init_usart(void)
{
  GPIOA_CLK_ENABLE;  //Включаем тактирование GPIOA
  USART1_CLK_ENABLE; //Включаем тактирование USART1
 
  GPIOA->MODER   |= GPIO_MODER_MODER9_1;         // PA9 (TX) - Alternate function mode
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9;      // PA9 (TX) - High speed
  GPIOA->AFR[1]    |= 0x0110;  //
 
  RCC->CFGR3     &= ~RCC_CFGR3_USART1SW;
  RCC->CFGR3     |=  RCC_CFGR3_USART1SW_0;  //System clock (SYSCLK) selected as USART1 clock
 
 
  USART1->CR1 |= USART_CR1_UE; //Включаем USART1
  USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
  USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
  USART1->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE; //скорость usart
  USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
  USART1->CR1 |= USART_CR1_RE; //Включаем приемник USART1
 
}
void Transmit(uint16_t Data)
{
  while(!(USART1->ISR & USART_ISR_TC));
  USART1->TDR = (Data & (uint16_t)0x01FF);
}


Спасибо!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн окт 28, 2013 17:25:32 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
wss60 писал(а):

Код:
 USART1->CR1 |= USART_CR1_UE; //Включаем USART1



Хорошая практика - включать периферию после ее настройки , так как многое изменить на включенной нельзя...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 09:40:53 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Здравствуйте уважаемые Коты. Попробовал примерчик уважаемого wss60, но он у меня отказывается работать на отрез. Вот Код:

Код:
#include "stm32f0xx.h"

#define APBCLK   8000000UL
#define BAUDRATE 115200UL

void Init_usart(void)
{
  // Включить тактирование порта А
  RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
  // Включаем тактирование USART1
  RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
 
  GPIOA->MODER   |= GPIO_MODER_MODER9_1;         // PA9 (TX) - Alternate function mode
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9;      // PA9 (TX) - High speed
  GPIOA->AFR[1]    |= 0x0110;  // ????????????????????
 
  RCC->CFGR3     &= ~RCC_CFGR3_USART1SW;
  RCC->CFGR3     |=  RCC_CFGR3_USART1SW_0;  //System clock (SYSCLK) selected as USART1 clock
 
 
  USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
  USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
  USART1->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE; //скорость usart
  USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
  USART1->CR1 |= USART_CR1_RE; //Включаем приемник USART1
  USART1->CR1 |= USART_CR1_UE; //Включаем USART1

}
void Transmit(uint16_t Data)
{
  while(!(USART1->ISR & USART_ISR_TC));
  USART1->TDR = (Data & (uint16_t)0x01FF);
}

// Главный цикл
int main(void)
{
  Init_usart();   
  while(1)
    {
     Transmit(0x45);
    }
}


Правильно ли я понял, что AFRL — это AFR[0], а AFRH - это AFR[1]? Еще хочу спросить про то как все же выбирать альтернативную функцию в регистре AFR. Т.е. Я не могу понять как пользоваться вот этой таблицей:

Вложение:
Безымянный.JPG [109.48 KiB]
Скачиваний: 1304


У Вас, уважаемые Коты, в AFRH записывается число 0x0110, как вы определили что нужно записать именно это число? Если я правильно понимаю, то нужно пользоваться как раз этой таблицей и датащита (но как, я недотукиваю).

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 11:27:46 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Kvasshtain, выше в моем посту с картинками , что не понятно ??? :)))

И сразу же - какой камень ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 12:16:26 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Здравствуйте уважаемый Dosikus. Рад Вас видеть :)) . У меня STM32F051. Не ясно что записывать в AFR[1], и как это делать для других случаев. Т.е. я не понимаю откуда взялось число 0x0110, ну или по другому (1<<(2*4))|(1<<(1*4))? Да и контроллер молчит как партизан на допросе в Гестапо. Если я правильно составил программу, то контроллер должен без остановки циклически слать в порт число 0x45. А на выходе тишина. С пином порта все точно в норме, т. к. я это проверял (вешал на него светодиод и заставлял его моргать).

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 13:12:49 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Код:
// Главный цикл
int main(void)
{
  Init_usart(); 
 Delay_mS(100);
  while(1)
    {
     Transmit(0x45);
    Delay_mS(100);
    }
}


А так ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 13:37:36 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Т.е. Вы предлагаете просто добавить задержки?
К сожалению смогу попробовать только дома. А дома у меня нет интернета. Так что узнаем о результатах только завтра.
Хочу еще спросить у Вас по поводу странной фразы, сказанной вот здесь: http://kazus.ru/forums/showpost.php?p=6 ... stcount=38
Вы там говорите дословно следующее: «...Первый вариант пролетает ибо на PA9 и PA10 на плате уже висит USB-DET и USB-ID .
А вот далее PB6 и PB7 свободны . ...». Дело в том, что я использую именно PA9 и PA10 (точнее только PA9, т. к. я пока ни чего не принимаю, а только передаю). Судя по Вашим словам, ни какие другие функции кроме USB-DET и USB-ID работать не будут, но светодиод то моргал.
И все же по поводу AFR[1] (он же AFRH) :roll: . Как было определено это магическое число 0x0110?

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 13:46:08 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 2
А вы не увидели что :
Плата под F4 http://www.mikroe.com/mini/stm32/ и USB-DET и USB-ID название линий подключенных к PA9 и PA10 ,
и к тому же не имеет никакого отношения к Вашей STM32F0 Discovery ?

Еще раз внимательно посмотрите на мой первый пост в этой ветке, там как раз Ваш случай и все расписано.

По первой таблице мы находим что UART1 для пинов PA9 и PA10 соответствует AF1 .
По второму скрину видим что AF1 соответствует 0001 бинарное или 0х01 .
Вот это самой число и надо занести в тетрады AFRH10 и AFRH9 , что и делает сей код :

Код:
GPIOA->AFR[1]= (1<<(2*4))|(1<<(1*4));


Где AFR[1] соответствует AFRH , первые 1(единицы) это AF1(0x01), произведения в скобках вычисляют позицию тетрады.




Чем Вы проверяете выход UART ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 14:13:43 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Так, кажется начинаю въезжать. Спасибо за разъяснения :write: .
Проверяю компом. Связь осуществляется с помощью самодельной платы на FT232BL сконфигурированной для работы с 3-х вольтовой логикой. Плата рабочая точно (проверял по эхо-отклику закоротив rxd и txd). В качестве терминала использую программу COM Port Toolkit.

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 15:06:46 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Проект полностью в архиве выложите .
И уточню - STM32F051 , это дискавери же, или своя плата ?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 84 ]  1, , , ,  

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


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y