Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 08:14

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2705 ]  На страницу 1, 2, 3, 4, 5 ... 109  След.
Автор Сообщение
 Заголовок сообщения: STM32 для чайников
СообщениеДобавлено: 10 дек 2011, 00:32 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Знает кто-то такой форум, где можно задать "простой" вопрос по использованию этих контроллеров и получить реальный ответ а не указание внимательно читать документацию.
Я понимаю что ее нужно читать, но больно сложно у меня с англицким, а вопросов много.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 10 дек 2011, 14:20 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2010, 19:07
Сообщения: 930
Откуда: Тольятти
http://forum.easyelectronics.ru/
но без англицкого все равно далеко не уедешь.

_________________
Роман


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 12 дек 2011, 19:08 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Пытаюсь запустить связь с ПК по UART на STM32F103.
Для программирования использую встроенный загрузчик.
Хочу использовать эту же линию для связи.
Но она сидит на линиях PC10,PC11 для которой USART является альтернативной
функцией с загадочным словом Remap.
Как настроить UART3 для работы с этой линией?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 12 дек 2011, 19:43 
Старожил
Аватара пользователя

Зарегистрирован: 11 мар 2010, 12:44
Сообщения: 1117
Откуда: Default city
Код:
//Тактирование
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_MY_UART_GPIO, ENABLE);
    RCC_MY_UART_ENABLE;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//Настройка пинов
    GPIO_InitTypeDef   GPIO_InitStructure;
    GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_UART_Pis_Out;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(MY_UART_GPIO, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_UART_Pis_In;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(MY_UART_GPIO, &GPIO_InitStructure);

//заполнение структуры инициализации
    USART_InitTypeDef UART_InitStructure;
    USART_StructInit(&UART_InitStructure);
    UART_InitStructure.USART_BaudRate = MY_BAUDRATE;
    UART_InitStructure.USART_HardwareFlowControl = DISABLE;
    UART_InitStructure.USART_Mode = USART_Mode_Rx |USART_Mode_Tx;
    UART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    UART_InitStructure.USART_WordLength = USART_WordLength_8b;

    UART_InitStructure.USART_StopBits = USART_StopBits_1;
    UART_InitStructure.USART_Parity = USART_Parity_No;

//Инициализация УАРТ полученной структурой
    USART_DeInit(MY_UART);
    USART_Init(MY_UART, &UART_InitStructure);
    USART_Cmd(MY_UART,ENABLE);
// Настройка прерываний
    USART_ITConfig(MY_UART,USART_IT_RXNE,ENABLE);


_________________
Не дай Бог увидеть нубский ЛУТ, бессмысленный и беспощадный
В МК "на порядок" - это "в два раза"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 12 дек 2011, 19:48 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Насколько я понял ремап выполняется этим выражением
GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE); ?
т.е. для усарт3 необходимо выполнить
GPIO_PinRemapConfig(GPIO_Remap_USART3,ENABLE); ?
Или я ошибаюсь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 12 дек 2011, 19:54 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
А чем отличается GPIO_PartialRemap_USART3 от GPIO_FullRemap_USART3.
Как-то тяжело до меня это доходит.
Смотрю в "Pin descriptions":
Есть "main function" а есть "alternate functions", которые подразделяются на "default" и "remap".
Чем они отличаются?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 12 дек 2011, 20:02 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 305
Bits 5:4 USART3_REMAP[1:0] USART3 remapping
These bits are set and cleared by software. They control the mapping of USART3 CTS, RTS,CK,TX
and RX alternate functions on the GPIO ports.
00: No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14)
01: Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14)
10: not used
11: Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12)

RM0008 стр.113-115. Пока нашел только это.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 00:28 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Посмотрел ваши подсказки и наваял ф-ю, которая должна инициализировать
работу UART1 на выводах PB6 и PB7.
Подскажите где косяки.
Show


Последний раз редактировалось kontroller 13 дек 2011, 01:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 00:32 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
А как теперь байт на комп отправить?
В авр необходимо послать в UDR передаваемый байт.
Наверное нужно сделать что-то подобное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 00:36 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Для приема подходит ф-я USART_ReceiveData(USART1).
А какая для передачи


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 00:47 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Накопал : USART_SendData(USART1, data);
Сейчас буду проверять что наваял.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 00:55 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Братцы, прошил контроллер. Светодиод моргает, а комп данные не принимает.
Где-то косяк. Пытаюсь разобраться. Может поможете...
Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 16:15 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 305
У Вас определенный режим выбран для USART-а (скорость, четность и т.д.). А в терминале компьютера тоже такой режим? Это одна из возможных причин.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 21:49 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Проверил режим. Совпадает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 13 дек 2011, 23:19 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 305
Проверил. USART1 соединен с GPIOA а не GPIOB. PA9 - USART1_TX. PA10 - USART1_RX.

void SetupUSART() {
// Включаем тактирование USRAT1 и Порта A

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

// Настраиваем входы/выходы
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

Работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 14 дек 2011, 00:29 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
В том то и дело, что USART1 согласно Pin descriptions может быть на GPIOA и GPIOB.
Мне нужен именно GPIOB, т.к. прошиваю контроллер по этим линиям с помощью
встроенного загрузчика .
Хочу по этим линиям наладить связь с ПК, т.к. к порту GPIOA будет сложно подпаяться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 14 дек 2011, 01:10 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 305
Для того чтобы к GPIOB

Bit 2 USART1_REMAP: USART1 remapping
This bit is set and cleared by software. It controls the mapping of USART1 TX and RX
alternate functions on the GPIO ports.
0: No remap (TX/PA9, RX/PA10)
1: Remap (TX/PB6, RX/PB7)

RM0008 стр.115


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 14 дек 2011, 19:03 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 305
Вам уже написали, для того чтобы вывести на GPIOB RX и TX, необходимо включить Remap.
Вы его включили:
// Настраиваем входы/выходы
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
но кроме этого надо тактировать AFIO. До этого было:

// Включаем тактирование USART1 и Порта B

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOB, ENABLE);

а надо:

// Включаем тактирование USART1, AFIO и Порта B

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 12:07 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 дек 2011, 12:47
Сообщения: 184
Откуда: Санкт-Петербург
Маленький вопрос по тактированию: тактирование включается для всего порта сразу? Т.е подавая такты на USART1(PA9 и PA10) я одновременно тактирую и , например, SPI1 (PA4-5-6-7)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 12:29 
Старожил

Зарегистрирован: 13 фев 2011, 01:25
Сообщения: 618
Откуда: Севастополь
Тактирование отдельно идет на каждое устройство.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 12:51 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 дек 2011, 12:47
Сообщения: 184
Откуда: Санкт-Петербург
balu_dark писал(а):
Тактирование отдельно идет на каждое устройство.

? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
вот этот оператор разве не весь порт включает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 13:01 
Старожил

Зарегистрирован: 13 фев 2011, 01:25
Сообщения: 618
Откуда: Севастополь
В даташите это очень красивой картинкой нарисовано. Если вы используете пин как GPIOA для дрыганья ногой - тактируете его как GPIOA, если используете его как USART - тактируете как USART если как SPI то и тактируете как SPI. Потому как это РАЗНЫЕ устройства для процессора. а выбором уже конкретного назначения пина управляет схема мультиплексирования.
Лучше всего вам об этом расскажет фирменный даташит!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 14:27 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 дек 2011, 12:47
Сообщения: 184
Откуда: Санкт-Петербург
balu_dark писал(а):
В даташите это очень красивой картинкой нарисовано. Если вы используете пин как GPIOA для дрыганья ногой - тактируете его как GPIOA, если используете его как USART - тактируете как USART если как SPI то и тактируете как SPI. Потому как это РАЗНЫЕ устройства для процессора. а выбором уже конкретного назначения пина управляет схема мультиплексирования.
Лучше всего вам об этом расскажет фирменный даташит!

Спасибо. Обращу внимание
но не будете ли Вы так любезны развеять мои сомнения в том, что для всех ножек порта( если я их использую как I/O) одновременно может быть задана только одна скорость - 2МГц, 10МГц или 50 МГц?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 14:45 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1578
Откуда: Киев
Orienta писал(а):
но не будете ли Вы так любезны развеять мои сомнения в том, что для всех ножек порта( если я их использую как I/O) одновременно может быть задана только одна скорость - 2МГц, 10МГц или 50 МГц?


Для каждой ножки своя, одна из трех.
Связана с током драйверов, и следовательно энергопотреблением (мое ИМХО)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 06 фев 2012, 15:00 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 дек 2011, 12:47
Сообщения: 184
Откуда: Санкт-Петербург
Ой, елки.. до меня дошло... :-((
Мерси


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

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


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

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB