Форум РадиоКот https://radiokot.ru/forum/ |
|
STM32C8T6 использование двух USARTов в одном проекте https://radiokot.ru/forum/viewtopic.php?f=59&t=161820 |
Страница 1 из 1 |
Автор: | bimerman320 [ Пн мар 25, 2019 09:29:51 ] | ||
Заголовок сообщения: | STM32C8T6 использование двух USARTов в одном проекте | ||
Добрый день. Совсем недавно решил изучить STM32. Раньше имел дело только с AVR. Есть у меня проект контроллера на SIM800C для атмеги328. Решил портировать его на stm32. В проекте используется 2 usart, один для общения с sim800c, второй для вывода отладочной инфы в терминал компьютера. Есть проблема. В программе делаю инит двух usart, затем передаю одну строку через usart2. Она приходит в терминал на компьютере(правда почему-то первая передача без первого символа, все остальные передачи строк передаются полностью), затем передаю другую строку через usart1, но она почему-то опять приходит в терминал компа, хотя usart1 сидит на других пинах и к ним ничего не подключено. Работаю в Keil 5 с платкой BluePill. Для передачи в комп использую адаптер на cp2102, пробовал и через переделанный китайский st-link2 с поддержкой VCP.
|
Автор: | VladislavS [ Пн мар 25, 2019 11:18:29 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Такое будет, если у SIM800C эхо есть. |
Автор: | bimerman320 [ Пн мар 25, 2019 11:31:15 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Sim800 пока вообще не подключен, я писал что к пинам usart1 ничего не подключено. По плате usartы между собой не звонятся. В программе ремапы не делал. |
Автор: | VladislavS [ Пн мар 25, 2019 12:01:36 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
И всё же, отключи прерывание по приёму на USART1. |
Автор: | bimerman320 [ Пн мар 25, 2019 12:18:41 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Я конечно попробую, но что это даст? Я проверял и с подключенным sim800, всё равно данные с пинов usart1 идут в терминал компьютера. Такое ощущение что внутри МК данные перенаправляются. Повторюсь, я ремапы не делал, если только в подключенных библиотеках такая установка задана. Сейчас изучаю этот вопрос. |
Автор: | VladislavS [ Пн мар 25, 2019 12:27:20 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Это даст источник проблемы. Посылка в USART2 идёт из двух мест. Из main и из прерывания USART1. Отключив второе сузишь поиск вдвое. |
Автор: | Reflector [ Пн мар 25, 2019 13:50:03 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Первый раз вижу чтобы кто-то реализовал delay() инкрементя счетчик в прерывании от таймера каждую us, там же минимум треть времени впустую тратится... А проблема видимо в копипасте: Код: void USART1_Init()
{ ..... // Set USART2 IRQ at lower priority NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQn; } |
Автор: | bimerman320 [ Пн мар 25, 2019 14:22:56 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Копипастинг... ну да есть малость. Куда же без него. Сейчас пробую научиться работать через прямой доступ к регистрам, без SPL и HAL. Я понимаю что это более верный путь, но использование SPL подмывает своей наглядностью. Насчёт delay() , это я подсмотрел в инете на http://www.handsonembedded.com/stm32f10 ... utorial-7/. Тот отрывок что вы привели закомментирован в программе, так что дело не в нём. Он для "справки". |
Автор: | qbit [ Пн мар 25, 2019 14:38:56 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Такое будет, если у SIM800C эхо есть. Есть. |
Автор: | Reflector [ Пн мар 25, 2019 14:40:15 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Насчёт delay() , это я подсмотрел в инете на http://www.handsonembedded.com/stm32f10 ... utorial-7/ Так имеет смысл делать разве что для ms. Цитата: Тот отрывок что вы привели закомментирован в программе, так что дело не в нём. Точно, без подсветки не заметил. Тогда может дело в этом?Код: void USART1_IRQHandler() // from SIM800C { .... UART2_Transmit_char(data); И вместо проверки TC после отправки байта нужно проверять TXE перед отправкой, тогда может первый символ и не будет теряться. |
Автор: | bimerman320 [ Пн мар 25, 2019 14:54:54 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
В обработчике прерывания USART1_IRQHandler() предполагается кидать данные, которые приходят от sim800, в терминал компьютера. Но к пинам usart1 ничего не подключено, соответственно прерывание произойти не может. Повторюсь что уже есть почти законченный проект на atmega328 и sim800c, написанный в codevision. Столкнулся с нехваткой портов, думал применить atmega644, но уже давно хотел попробовать stm32, да и платка валяется с stm32, вот и решил попробовать. |
Автор: | Reflector [ Пн мар 25, 2019 15:05:23 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Но к пинам usart1 ничего не подключено, соответственно прерывание произойти не может. У тебя включено прерывание по RX, но сам вход висит в воздухе, без подтяжки, потому может ловить что угодно, тем более на соседнем пине идет передача. |
Автор: | bimerman320 [ Пн мар 25, 2019 20:33:36 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
Короче не помню что и где менял-добавлял-убирал, на начало работать как надо. Каждый usart отправляет в свои пины. Портирование продолжается. |
Автор: | ARV [ Пн мар 25, 2019 20:39:27 ] |
Заголовок сообщения: | Re: STM32C8T6 использование двух USARTов в одном проекте |
bimerman320 писал(а): Короче не помню что и где менял-добавлял-убирал, на начало работать как надо норм метод
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |