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

 
 
> STM32F USART, Не работает прием на USART3
Vadim.Dyachuk
сообщение Nov 19 2013, 14:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 9-10-13
Пользователь №: 78 662



Доброго времени суток!
Не так давно решил перейти с XMEGA на STM32 и встретил ряд проблем связаных с изучением нового микроконтроллера,
а именно с проблемой приема данных по USART, причем передача работает нормально. Я предполагаю что проблема в инициализации самого порта,
но все же как решить эту проблему я никак не пойму. Если кто знает помогите.

Вот моя инициализация:
Код
USART_InitTypeDef USART_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;  
    
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

  
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_7);

      
    USART_StructInit(&USART_InitStructure);
    USART_InitStructure.USART_BaudRate = 4800;
    USART_Init(USART3, &USART_InitStructure);

    USART_Cmd(USART3, ENABLE);



Среда EWARM.
Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
Aner
сообщение Nov 19 2013, 14:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



ну а какой F1xx .... F4xx? По разному у них ...
Go to the top of the page
 
+Quote Post
Vadim.Dyachuk
сообщение Nov 19 2013, 14:12
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 9-10-13
Пользователь №: 78 662



STM32F303VC. Использую STM32F3-Discovery
Go to the top of the page
 
+Quote Post
Aner
сообщение Nov 19 2013, 14:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Читаем Datasheet, User manual, AN ... с примерами иницилизации USART. Причем внимательно! ... не отвлекаясь на то как в XMEGA. И все получиться. И EWARM надеюсь соответствующей версии с поддержкой этого проца. И ... на ките это или на своей плате? И еще посмотрите с кем пересекается ваш USART3, и что на тех пинах еще сидит.
Go to the top of the page
 
+Quote Post
Vadim.Dyachuk
сообщение Nov 19 2013, 14:34
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 9-10-13
Пользователь №: 78 662



В Datasheet на STM32F3xx примеров нет... Если бы так я бы помощи не просил!
Go to the top of the page
 
+Quote Post
SSerge
сообщение Nov 19 2013, 17:06
Сообщение #6


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Нога RXD должна быть входом, TXD - выходом. А у Вас они сразу обе как выходы конфигурируются:
Код
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Vadim.Dyachuk
сообщение Nov 20 2013, 07:18
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 9-10-13
Пользователь №: 78 662



Сделал TXD как вход:
Код
USART_InitTypeDef USART_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
  
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_7);


      
    USART_StructInit(&USART_InitStructure);
    USART_InitStructure.USART_BaudRate = 4800;
    USART_Init(USART3, &USART_InitStructure);

    USART_Cmd(USART3, ENABLE);

но все же оно не работает. Подскажите как правильно инициализировать данный пин на вход.
Go to the top of the page
 
+Quote Post
Vadim.Dyachuk
сообщение Nov 20 2013, 09:41
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 9-10-13
Пользователь №: 78 662



Пробовал другие USARTы и выяснилось что USART2 принимает но не передает, и не срабатывает RXNE при заверении приема. С чем это может быть связано?
Go to the top of the page
 
+Quote Post
Timma
сообщение Nov 20 2013, 10:42
Сообщение #9


Участник
*

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



Цитата(Vadim.Dyachuk @ Nov 20 2013, 13:41) *
Пробовал другие USARTы и выяснилось что USART2 принимает но не передает, и не срабатывает RXNE при заверении приема. С чем это может быть связано?

Покажите код связанный с прерыванием на приём.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Nov 20 2013, 13:18
Сообщение #10


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Vadim.Dyachuk @ Nov 20 2013, 11:18) *
Сделал TXD как вход...


Это такая шутка или очепятка?

ведь выше ясно сказали

"Нога RXD должна быть входом, TXD - выходом."
Go to the top of the page
 
+Quote Post
Aner
сообщение Nov 20 2013, 14:57
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



... а может он еще Rx на Rx, а Tx на Tx соединяет? Попадались мне такие.
Go to the top of the page
 
+Quote Post
AndrejM
сообщение Nov 20 2013, 15:48
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278



на 303-м и выше не нужно для AF переферии заботиться про вход/выход , просто AF и open-drain или push-pull mode.
правильно у него в первом варианте было.
Go to the top of the page
 
+Quote Post
smalcom
сообщение Nov 22 2013, 06:53
Сообщение #13


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

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);


AFIO тоже включать надо


Цитата
Пробовал другие USARTы и выяснилось что USART2 принимает но не передает, и не срабатывает RXNE при заверении приема. С чем это может быть связано?

наиболее вероятно - код поддержки. нужно смотреть код, которым выполняется приём и передача данных посредство USART.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:27
Рейтинг@Mail.ru


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