Easyelectronics.ru

Электроника для всех
Текущее время: 18 окт 2019, 19:23

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



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

Начать новую тему Ответить на тему  [ Сообщений: 2777 ]  На страницу 1, 2, 3, 4, 5 ... 112  След.
Автор Сообщение
 Заголовок сообщения: 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
Сообщения: 1118
Откуда: 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
Сообщения: 1580
Откуда: Киев
Orienta писал(а):
но не будете ли Вы так любезны развеять мои сомнения в том, что для всех ножек порта( если я их использую как I/O) одновременно может быть задана только одна скорость - 2МГц, 10МГц или 50 МГц?


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


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

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


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

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


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

Сейчас этот форум просматривают: serglg


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

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

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