|
STM32F050F5P6 и USART на ногах PA2-PA3, То ли несоотвествие в даташите, то ли лыжи не едут... |
|
|
|
Dec 25 2014, 12:30
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Доброго дня. Смотрю в даташит на сабж:  PA2 - USART1_TX PA3 - USART1_RX Смотрю дальше:  Вопрос - это как так? По серии экспериментов получается, что USART1 реально находится на PA1 и PA2. Но устройство уже готово, ибо смотрел я ессно в первую табличку. Никто не видел каких-нибудь "софтварных" реализаций UART, скорость то вообщем-то нужна никакая - 1200 бит, можно и самому ногами подергать, но так не хочется велосипед с нуля писать. Печаль...
|
|
|
|
|
Dec 25 2014, 20:04
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Цитата(1113 @ Dec 25 2014, 22:49)  а что это за контроллер такой? дайте на него ссылку... Прошу прощения, промахнулся при печати. Камень конечно stm32f050f 4p6 Даташит: http://www.st.com/web/en/resource/technica.../DM00065136.pdf
|
|
|
|
|
Dec 25 2014, 20:34
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Цитата(1113 @ Dec 25 2014, 23:20)  а что с этим контроллером не так, почему его нет в таблицах на сайте и в QUBE`е? Не знаю, видимо снят с производства, хотя в китае продается по рублю за мешок до сих пор. Да и в России купить не проблема. Плохо, что в errat'е ни слова про несоответствие ног USART. Я ведь и ее читал тоже. Как я понимаю, его новый аналог STM32F030F4P6, все то же самое, только в даташите уже нет несоответствий. Просто не ожидал от ST такого, тем более камень древний, дешевый, должно было все тыщу раз на форумах обсудится. Так даже не нашел упоминание о проблеме в инете...
|
|
|
|
|
Dec 26 2014, 16:49
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tronix286 @ Dec 25 2014, 15:30)  По серии экспериментов получается, что USART1 реально находится на PA1 и PA2. Чушь какая-то... Зачем это надо было выдумывать???
|
|
|
|
|
Dec 26 2014, 17:03
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Цитата(smalcom @ Dec 26 2014, 12:55)  А обратили внимание на сноски и маркировку своего МК? Обратил. В сноске написано: "This alternate feature is available on standard dies only". Честно говоря я не знаю, что это значит. Ну, даже допустим, что они имели ввиду разные маркировки. Но все равно, табличка номер один не сходится с табличкой номер два из одного и того же даташита. Цитата(HHIMERA @ Dec 26 2014, 19:49)  Чушь какая-то... Зачем это надо было выдумывать??? Зачем мне что-то выдумывать?
|
|
|
|
|
Dec 26 2014, 17:09
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tronix286 @ Dec 26 2014, 20:03)  Зачем мне что-то выдумывать? Ещё раз... Цитата По серии экспериментов получается, что USART1 реально находится на PA1 и PA2. С какой целью это было придумано??? Посмотрите даташиты других STM32... где там TX и RX...
|
|
|
|
|
Dec 26 2014, 17:23
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Цитата(HHIMERA @ Dec 26 2014, 20:09)  Ещё раз...
Посмотрите даташиты других STM32... где там TX и RX... Смотрю в даташит на похожий контроллер stm32f0 30f4p6, вроде как позиционируется как замена сабжу, и вижу в первой таблице  и потом дальше  Все, как и должно было бы быть у stm32f0 50f4p6, судя по первой таблице из его даташита. Вот только на практике оказалась верна вторая таблица из его же даташита, где PA1 - TX, PA2 - RX:  Что я смотрю не так и куда мне смотреть?
|
|
|
|
|
Dec 26 2014, 17:36
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tronix286 @ Dec 26 2014, 20:23)  Вот только на практике оказалась верна вторая таблица из его же даташита, где PA1 - TX, PA2 - RX: Вы педали (перечёркнуто) пины не путаете??? Почему у меня РА2 - ТХ??? STM32F050F4...
|
|
|
|
|
Dec 26 2014, 17:48
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Цитата(HHIMERA @ Dec 26 2014, 20:36)  Почему у меня РА2 - ТХ??? STM32F050F4... Не знаю, почему. А почему? По первой таблице из даташита - да, должно так и быть. А вот по второй таблице, где ремап пинов на альтернативные функции - уже не так. И на практике у меня так, как в таблице с ремапом.
|
|
|
|
|
Dec 26 2014, 17:58
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tronix286 @ Dec 26 2014, 20:48)  на практике у меня так, как в таблице с ремапом. (рукалицо) Ага... STM запилили специально для вас "чудо-чип"... в единственном экземпляре... и сейчас смеются читая этот топик... Вот шалуны!!!
|
|
|
|
|
Dec 26 2014, 19:26
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Tronix286 @ Dec 26 2014, 20:48)  Не знаю, почему. А почему? По первой таблице из даташита - да, должно так и быть. А вот по второй таблице, где ремап пинов на альтернативные функции - уже не так. И на практике у меня так, как в таблице с ремапом. Косяк STM, ошиблись в документации. Придется вам выбрать новый микроконтроллер, из доступных в списках. А с этими дорожки перерезать, проводками перепаять. Программно USART сделать легко, если будет прерывание по таймеру с частотой, в 4 раза больше скорости передачи. Когда-то у Microchip была такая Application Note. Я делал, работало.
|
|
|
|
|
Dec 26 2014, 19:27
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Tronix286 @ Dec 26 2014, 21:23)  Что я смотрю не так и куда мне смотреть? Заглянуть сюда. А на самом деле все вы правильно смотрите и видете - в документации косячина. Бог с ним с F050 (который, как известно, NRND), но в переименованном F031 (сейчас Active) - такое же безобразие. Срочно переходите на F030 ))
|
|
|
|
|
Dec 27 2014, 20:49
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
От перестановки мест слагаемое не поменялось - прям на сайте для STM32F031F4 эррата девственно чиста, в даташите точно такое-же несоответствие таблиц, что и у 050f4p6. http://www.st.com/web/catalog/mmc/FM141/SC...74/LN7/PF259776PS: Заменил седня на STM32F030F4P6 - полет нормальный, уарт завелся на PA2 и PA3, даже без изменения прошивки - влил просто ту, которая не работала на 050. Такие дела...
|
|
|
|
|
Dec 27 2014, 22:11
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tronix286 @ Dec 27 2014, 23:49)  Заменил седня на STM32F030F4P6 - полет нормальный, уарт завелся на PA2 и PA3, даже без изменения прошивки - влил просто ту, которая не работала на 050. Такие дела... Прекратите врать и на этом закончим... По иронии судьбы у меня на столе валяется именно STM32F050F4... Специально UART проверял... Никто персонально для вас кристалл с изменённой топологией выпускать не будет... Ещё раз... загляните в даташиты других семейств... везде - РА2-РА3... Можете и дальше настаивать на чудесах...
|
|
|
|
|
Dec 28 2014, 10:12
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Не понимаю я чего эта химера такая борзая.... взял в яндексе написал название кристалла, открыл pdf с их сайта. Нажал поиск по PA1. И действительно в 2 местах этого pdf написано разное. В одном месте на PA1 - RTS, в другом на PA1 - TX проверяйте http://www.st.com/web/en/resource/technica.../DM00065136.pdfявная ошибка в описании, и повезло что первая таблица более правильна чем вторая. Я вот как программист смотрел бы на 2, настраивал бы альтернативные функции, и даже может начал бы просить поправить плату. У человека проблемы, и он видит неточность в описании, поделился этим с нами, за что ему большое спасибо. А вы уже 3 или 4 пост на него наезжаете без причинно. Это как-то не профессионально, мне кажется... Если беспокоит высказывание типа Цитата По серии экспериментов получается, что USART1 реально находится на PA1 и PA2 напишите "нет вы не правы, у меня такой кристалл на нем все Ок., ошибка в другом месте" и человек скажет вам спасибо, а вы....
|
|
|
|
|
Dec 28 2014, 11:39
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Golikov A. @ Dec 28 2014, 13:12)  Не понимаю Значит не дано... типа "Не шмагла!"(С)... такое тоже бывает... Сами проверьте... на каких ногах UART у STM32F050F4... а потом пытайтесь дерзить по пионерски... Не можете??? Тогда - что эхо в лесу... Ошибку в даташите никто не отрицает... но это ничего не меняет... UART, как и положено, на РА2-РА3... если вам и в десятый раз не понятно... там не может быть по другому... как бы вы не упирались...
Сообщение отредактировал HHIMERA - Dec 28 2014, 11:41
|
|
|
|
|
Dec 29 2014, 10:15
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Итак, прям щаз ради интереса запаял обратно 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);
Сообщение отредактировал IgorKossak - Dec 29 2014, 11:35
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|