Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F050F5P6 и USART на ногах PA2-PA3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Tronix286
Доброго дня.

Смотрю в даташит на сабж:



PA2 - USART1_TX
PA3 - USART1_RX

Смотрю дальше:



Вопрос - это как так? По серии экспериментов получается, что USART1 реально находится на PA1 и PA2. Но устройство уже готово, ибо смотрел я ессно в первую табличку. Никто не видел каких-нибудь "софтварных" реализаций UART, скорость то вообщем-то нужна никакая - 1200 бит, можно и самому ногами подергать, но так не хочется велосипед с нуля писать.

Печаль...
hd44780
Софтварные есть для AVR, посмотрите, мож что-то получится.
Для STM не попадались. Может их вообще нету, т.к. у них обычно много уартов....
1113
а что это за контроллер такой? дайте на него ссылку...
adnega
Цитата(Tronix286 @ Dec 25 2014, 16:30) *
Печаль...

А махнуть МК на F03x, F04x не вариант?
Tronix286
Цитата(1113 @ Dec 25 2014, 22:49) *
а что это за контроллер такой? дайте на него ссылку...


Прошу прощения, промахнулся при печати. Камень конечно stm32f050f4p6
Даташит: http://www.st.com/web/en/resource/technica.../DM00065136.pdf
1113
а что с этим контроллером не так, почему его нет в таблицах на сайте и в QUBE`е?
adnega
Цитата(1113 @ Dec 26 2014, 00:20) *
а что с этим контроллером не так, почему его нет в таблицах на сайте и в QUBE`е?

ST-шники полгода назад rename своим контроллерам устроили)
1113
Цитата(adnega @ Dec 25 2014, 23:28) *
ST-шники полгода назад rename своим контроллерам устроили)

и как он называется сейчас?
Tronix286
Цитата(1113 @ Dec 25 2014, 23:20) *
а что с этим контроллером не так, почему его нет в таблицах на сайте и в QUBE`е?


Не знаю, видимо снят с производства, хотя в китае продается по рублю за мешок до сих пор. Да и в России купить не проблема.
Плохо, что в errat'е ни слова про несоответствие ног USART. Я ведь и ее читал тоже.

Как я понимаю, его новый аналог STM32F030F4P6, все то же самое, только в даташите уже нет несоответствий. Просто не ожидал от ST такого, тем более камень древний, дешевый, должно было все тыщу раз на форумах обсудится. Так даже не нашел упоминание о проблеме в инете...
smalcom
А обратили внимание на сноски и маркировку своего МК?
HHIMERA
Цитата(Tronix286 @ Dec 25 2014, 15:30) *
По серии экспериментов получается, что USART1 реально находится на PA1 и PA2.

Чушь какая-то... Зачем это надо было выдумывать???
Tronix286
Цитата(smalcom @ Dec 26 2014, 12:55) *
А обратили внимание на сноски и маркировку своего МК?


Обратил. В сноске написано: "This alternate feature is available on standard dies only". Честно говоря я не знаю, что это значит. Ну, даже допустим, что они имели ввиду разные маркировки. Но все равно, табличка номер один не сходится с табличкой номер два из одного и того же даташита.

Цитата(HHIMERA @ Dec 26 2014, 19:49) *
Чушь какая-то... Зачем это надо было выдумывать???


Зачем мне что-то выдумывать?
HHIMERA
Цитата(Tronix286 @ Dec 26 2014, 20:03) *
Зачем мне что-то выдумывать?

Ещё раз...
Цитата
По серии экспериментов получается, что USART1 реально находится на PA1 и PA2.

С какой целью это было придумано???
Посмотрите даташиты других STM32... где там TX и RX...
Tronix286
Цитата(HHIMERA @ Dec 26 2014, 20:09) *
Ещё раз...

Посмотрите даташиты других STM32... где там TX и RX...


Смотрю в даташит на похожий контроллер stm32f030f4p6, вроде как позиционируется как замена сабжу, и вижу в первой таблице



и потом дальше



Все, как и должно было бы быть у stm32f050f4p6, судя по первой таблице из его даташита. Вот только на практике оказалась верна вторая таблица из его же даташита, где PA1 - TX, PA2 - RX:



Что я смотрю не так и куда мне смотреть?
HHIMERA
Цитата(Tronix286 @ Dec 26 2014, 20:23) *
Вот только на практике оказалась верна вторая таблица из его же даташита, где PA1 - TX, PA2 - RX:

Вы педали (перечёркнуто) пины не путаете???
Почему у меня РА2 - ТХ??? STM32F050F4...
Tronix286
Цитата(HHIMERA @ Dec 26 2014, 20:36) *
Почему у меня РА2 - ТХ??? STM32F050F4...


Не знаю, почему. А почему? По первой таблице из даташита - да, должно так и быть. А вот по второй таблице, где ремап пинов на альтернативные функции - уже не так. И на практике у меня так, как в таблице с ремапом.
HHIMERA
Цитата(Tronix286 @ Dec 26 2014, 20:48) *
на практике у меня так, как в таблице с ремапом.

(рукалицо)
Ага... STM запилили специально для вас "чудо-чип"... в единственном экземпляре... и сейчас смеются читая этот топик... Вот шалуны!!!

ViKo
Цитата(Tronix286 @ Dec 26 2014, 20:48) *
Не знаю, почему. А почему? По первой таблице из даташита - да, должно так и быть. А вот по второй таблице, где ремап пинов на альтернативные функции - уже не так. И на практике у меня так, как в таблице с ремапом.

Косяк STM, ошиблись в документации. Придется вам выбрать новый микроконтроллер, из доступных в списках. А с этими дорожки перерезать, проводками перепаять. Программно USART сделать легко, если будет прерывание по таймеру с частотой, в 4 раза больше скорости передачи. Когда-то у Microchip была такая Application Note. Я делал, работало.
adnega
Цитата(Tronix286 @ Dec 26 2014, 21:23) *
Что я смотрю не так и куда мне смотреть?

Заглянуть сюда.
А на самом деле все вы правильно смотрите и видете - в документации косячина.
Бог с ним с F050 (который, как известно, NRND), но в переименованном F031 (сейчас Active) - такое же безобразие.
Срочно переходите на F030 ))
Tronix286
Да, решили просто поменять контроллер на stm32f030f4p6, потому что все остальные ноги тоже заняты и резать дороги и паять МГТФ просто некуда. Можно было конечно программный УАРТ завести, почитал - это действительно очень просто, но решили не костылить и делать по феншую до конца.

Спасибо всем участникам, я просто хотел лишний раз убедиться, что это не я глючу, а реальный баг даташита.
HHIMERA
Цитата(Tronix286 @ Dec 26 2014, 22:38) *
Да, решили просто поменять контроллер на stm32f030f4p6

И что изменится??? laughing.gif
Сергей Борщ
Вот нашел у себя табличку с переименованиями:
Код
Previous        New
Part Number     Part Number
STM32F0506DIE1  STM32F0316DIE1
STM32F050C4T6   STM32F031C4T6
STM32F050C4T6TR STM32F031C4T6TR
STM32F050C6T6   STM32F031C6T6
STM32F050C6T6TR STM32F031C6T6TR
STM32F050C6T7   STM32F031C6T7
STM32F050F4P6   STM32F031F4P6
STM32F050F6P6   STM32F031F6P6
STM32F050F6P7   STM32F031F6P7
STM32F050G4U6   STM32F031G4U6
STM32F050G6U6   STM32F031G6U6
STM32F050K4U6   STM32F031K4U6
STM32F050K6U6   STM32F031K6U6
STM32F313CCT6   STM32F358CCT6
STM32F313RCT6   STM32F358RCT6
STM32F313VCT6   STM32F358VCT6
STM32F383CCT6   STM32F378CCT6
STM32F383RCT6   STM32F378RCT6
STM32F383VCT6   STM32F378VCT6
Tronix286
От перестановки мест слагаемое не поменялось - прям на сайте для STM32F031F4 эррата девственно чиста, в даташите точно такое-же несоответствие таблиц, что и у 050f4p6. http://www.st.com/web/catalog/mmc/FM141/SC...74/LN7/PF259776

PS: Заменил седня на STM32F030F4P6 - полет нормальный, уарт завелся на PA2 и PA3, даже без изменения прошивки - влил просто ту, которая не работала на 050. Такие дела...
HHIMERA
Цитата(Tronix286 @ Dec 27 2014, 23:49) *
Заменил седня на STM32F030F4P6 - полет нормальный, уарт завелся на PA2 и PA3, даже без изменения прошивки - влил просто ту, которая не работала на 050. Такие дела...

Прекратите врать и на этом закончим... По иронии судьбы у меня на столе валяется именно STM32F050F4... Специально UART проверял...
Никто персонально для вас кристалл с изменённой топологией выпускать не будет...
Ещё раз... загляните в даташиты других семейств... везде - РА2-РА3... Можете и дальше настаивать на чудесах... cranky.gif
Golikov A.
Не понимаю я чего эта химера такая борзая....

взял в яндексе написал название кристалла, открыл pdf с их сайта. Нажал поиск по PA1. И действительно в 2 местах этого pdf написано разное.
В одном месте на PA1 - RTS, в другом на PA1 - TX

проверяйте
http://www.st.com/web/en/resource/technica.../DM00065136.pdf

явная ошибка в описании, и повезло что первая таблица более правильна чем вторая. Я вот как программист смотрел бы на 2, настраивал бы альтернативные функции, и даже может начал бы просить поправить плату.

У человека проблемы, и он видит неточность в описании, поделился этим с нами, за что ему большое спасибо. А вы уже 3 или 4 пост на него наезжаете без причинно. Это как-то не профессионально, мне кажется...
Если беспокоит высказывание типа
Цитата
По серии экспериментов получается, что USART1 реально находится на PA1 и PA2

напишите "нет вы не правы, у меня такой кристалл на нем все Ок., ошибка в другом месте" и человек скажет вам спасибо, а вы....
HHIMERA
Цитата(Golikov A. @ Dec 28 2014, 13:12) *
Не понимаю

Значит не дано... типа "Не шмагла!"(С)... такое тоже бывает... laughing.gif
Сами проверьте... на каких ногах UART у STM32F050F4... а потом пытайтесь дерзить по пионерски... Не можете??? Тогда - что эхо в лесу...
Ошибку в даташите никто не отрицает... но это ничего не меняет... UART, как и положено, на РА2-РА3... если вам и в десятый раз не понятно... там не может быть по другому... как бы вы не упирались...
adnega
Цитата(HHIMERA @ Dec 28 2014, 15:39) *
Сами проверьте... на каких ногах UART у STM32F050F4...

Действительно, HHIMERA разошлась) Нужно быть сдержаннее.

Однако, соглашусь, что pin2pin по заявлениям ТС теряется, и это не какая-нибудь опечатка в документе - а очень серьезная железная проблема.
Тут я на стороне HHIMERы и присоединяюсь к просьбе проверить назначение ног аккуратно. К сожалению, STM32F050F4 в наличии у самого нет.
Tronix286
Итак, прям щаз ради интереса запаял обратно 050 на плату - и... и работает на PA2, PA3.. Действительно, хоть и в грубой форме, но HHIMERA оказался прав. Первый раз я видимо что-то не так заинициализил, ибо программер из меня тот еще..., и торопился...

В общем, в даташите есть ошибка, на практике оказалась верна первая таблица. USART у stm32f050f4p6 находится реально на PA2, PA3.

На всякий случай кусок говнокодеса инициализации, который работает и на 030f4 и на 050f4:
CODE
/* NVIC configuration */
/* Enable the USARTx Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

/* Writes data to the specified GPIO data port */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1);

/* Connect PXx to USARTx_Rx */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_1);


/* Configure USART Tx and Rx as alternate function push-pull */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO_Speed_Level_3;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);

USART_InitStructure.USART_BaudRate = 1200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);

//GPIO_ResetBits(GPIOF, GPIO_Pin_0);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

USART_ITConfig(USART1, USART_IT_ORE, ENABLE);
USART_ITConfig(USART1, USART_IT_NE, ENABLE);
USART_ITConfig(USART1, USART_IT_FE, ENABLE);

/* Enable USART */
USART_Cmd(USART1, ENABLE);
adnega
Цитата(Tronix286 @ Dec 29 2014, 14:15) *
Итак, прям щаз ради интереса запаял обратно 050 на плату - и... и работает на PA2, PA3.. Действительно, хоть и в грубой форме, но HHIMERA оказался прав.

Победила дружба!
Уфф, как камень с плеч. Теперь все встало на свои места.
Golikov A.
Блин все всегда было на своих местах.

И было весьма вероятно что у ТС ошибка, просто кое кому надо было не говном исходиться, а сказать что у него такой же камень и все работает на нужных ногах. Это кое кто сообщил даже не во 2 и не в 3 своем посте. В итоге человек даже микроконтроллер перепаял, потому что владельцы других сразу заявили что в них все Ок....



IgorKossak
Вопрос исчерпан. Тему закрываю.
Модератор.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.