STM32C8T6 использование двух USARTов в одном проекте

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
bimerman320
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

STM32C8T6 использование двух USARTов в одном проекте

Сообщение bimerman320 »

Добрый день. Совсем недавно решил изучить STM32. Раньше имел дело только с AVR. Есть у меня проект контроллера на SIM800C для атмеги328. Решил портировать его на stm32. В проекте используется 2 usart, один для общения с sim800c, второй для вывода отладочной инфы в терминал компьютера. Есть проблема. В программе делаю инит двух usart, затем передаю одну строку через usart2. Она приходит в терминал на компьютере(правда почему-то первая передача без первого символа, все остальные передачи строк передаются полностью), затем передаю другую строку через usart1, но она почему-то опять приходит в терминал компа, хотя usart1 сидит на других пинах и к ним ничего не подключено. Работаю в Keil 5 с платкой BluePill. Для передачи в комп использую адаптер на cp2102, пробовал и через переделанный китайский st-link2 с поддержкой VCP.
Вложения
_НА_ПРОБУ___GSM_SIM800C_controller_SMART.7z
(257.56 КБ) 192 скачивания
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение VladislavS »

Такое будет, если у SIM800C эхо есть.
Реклама
bimerman320
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение bimerman320 »

Sim800 пока вообще не подключен, я писал что к пинам usart1 ничего не подключено. По плате usartы между собой не звонятся. В программе ремапы не делал.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение VladislavS »

И всё же, отключи прерывание по приёму на USART1.
Реклама
Эиком - электронные компоненты и радиодетали
bimerman320
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение bimerman320 »

Я конечно попробую, но что это даст? Я проверял и с подключенным sim800, всё равно данные с пинов usart1 идут в терминал компьютера. Такое ощущение что внутри МК данные перенаправляются. Повторюсь, я ремапы не делал, если только в подключенных библиотеках такая установка задана. Сейчас изучаю этот вопрос.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение VladislavS »

Это даст источник проблемы. Посылка в USART2 идёт из двух мест. Из main и из прерывания USART1. Отключив второе сузишь поиск вдвое.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение Reflector »

Первый раз вижу чтобы кто-то реализовал delay() инкрементя счетчик в прерывании от таймера каждую us, там же минимум треть времени впустую тратится... А проблема видимо в копипасте:

Код: Выделить всё

void USART1_Init()
{
.....
    // Set USART2 IRQ at lower priority
    NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQn;
}
bimerman320
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение bimerman320 »

Копипастинг... ну да есть малость. Куда же без него. Сейчас пробую научиться работать через прямой доступ к регистрам, без SPL и HAL. Я понимаю что это более верный путь, но использование SPL подмывает своей наглядностью. Насчёт delay() , это я подсмотрел в инете на http://www.handsonembedded.com/stm32f10 ... utorial-7/. Тот отрывок что вы привели закомментирован в программе, так что дело не в нём. Он для "справки".
Аватара пользователя
qbit
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт апр 02, 2013 10:03:29
Откуда: Санкт-Петербург
Контактная информация:

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение qbit »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3600262#p3600262"]Такое будет, если у SIM800C эхо есть.[/uquote]
Есть.
Для связи email: info собака qbit.su
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение Reflector »

[uquote="bimerman320",url="/forum/viewtopic.php?p=3600379#p3600379"]Насчёт delay() , это я подсмотрел в инете на http://www.handsonembedded.com/stm32f10 ... utorial-7/[/uquote]
Так имеет смысл делать разве что для ms.
Тот отрывок что вы привели закомментирован в программе, так что дело не в нём.
Точно, без подсветки не заметил. Тогда может дело в этом?

Код: Выделить всё

void USART1_IRQHandler() // from SIM800C
 {
....
     UART2_Transmit_char(data);
И вместо проверки TC после отправки байта нужно проверять TXE перед отправкой, тогда может первый символ и не будет теряться.
bimerman320
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение bimerman320 »

В обработчике прерывания USART1_IRQHandler() предполагается кидать данные, которые приходят от sim800, в терминал компьютера. Но к пинам usart1 ничего не подключено, соответственно прерывание произойти не может. Повторюсь что уже есть почти законченный проект на atmega328 и sim800c, написанный в codevision. Столкнулся с нехваткой портов, думал применить atmega644, но уже давно хотел попробовать stm32, да и платка валяется с stm32, вот и решил попробовать.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение Reflector »

[uquote="bimerman320",url="/forum/viewtopic.php?p=3600399#p3600399"]Но к пинам usart1 ничего не подключено, соответственно прерывание произойти не может.[/uquote]
У тебя включено прерывание по RX, но сам вход висит в воздухе, без подтяжки, потому может ловить что угодно, тем более на соседнем пине идет передача.
bimerman320
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение bimerman320 »

Короче не помню что и где менял-добавлял-убирал, на начало работать как надо. Каждый usart отправляет в свои пины. Портирование продолжается.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18556
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: STM32C8T6 использование двух USARTов в одном проекте

Сообщение ARV »

bimerman320 писал(а):Короче не помню что и где менял-добавлял-убирал, на начало работать как надо
норм метод
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «ARM»