Jump to content

Сообщения для 2 UART выводятся в 1 UART, STM32F103C8T6


Viktor Golubov
 Share

Recommended Posts

Почему может неправильно работать uart? Подключил 1 uart к пк через usb/uart переходник, а второй к gsm модему. В первый уарт вывожу инфу для дебага, а во второй AT команды. Суть в том, что сообщения для 2 уарта выводятся в 1 уарт

и выводятся как то странно

не полностью

Вот такой вывод постоянно:

Begin
End
AT+CNMI=2,2,0,0,0
AT+CMGEnd
AT+CNMI=2,2,0,0,0

а должно быть просто

begin

end

и все

полный код https://pastebin.com/zBBZmZue

Link to comment
Share on other sites

задебаж. Скорее всего какой то из твоих посылок не хватает времени на отправку. Тыж не проверяешь на завершение отправки, а тупо стопишь код,

IF (HAL_UART_Transmit(&huart2, "Begin\n\r", 40, 200) != HAL_OK) UART_ErrorHandler(1);

в обработчик передай номер вызова по порядку вместо единички и увидишь сразу где ошибка. Ессно в обработчике сделай бесконечный цикл и поставь на нем брэкпоинт

Edited by mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Link to comment
Share on other sites

1 час назад, Viktor Golubov сказал:

Суть в том, что сообщения для 2 уарта выводятся в 1 уарт

Это все по тому, что нет ни малейшего понимания работы МК. Выкинь нафиг все HAL либы из проекта, открой даташит и напиши человеческий код. Тогда и работать будет, как надо. Тем более, что настройка UART проще паренной репы. В STM32, в принципе, очень мало сложной периферии. Большая часть сделана очень просто и логично.

Link to comment
Share on other sites

Приглашаем на вебинар «Необычное в обычном. Сравнительный анализ современных решений Recom» (27.01.2022)

Приглашаем 27/01/2022 всех желающих посетить вебинар, посвященный двум наиболее растущим сегментам интегрированных источников питания – AC/DC малой мощности (1-20Вт) и сегменту решений PoL без изоляции. На вебинаре рассмотрим проблему выбора AC/DC в бюджетном сегменте и концепцию тестирования ускоренного старения, проведем сравнительный анализ подходов к интеграции AC/DC модулей. Сделаем обзор решений концепции POL с доисторических времен до современных технологий и средств для разработки и тестирования.

Подробнее

Решения Infineon для беспроводного электроинструмента с бесщеточными электродвигателями

Современные строительные электроинструменты достигают высокой производительности и эргономичности благодаря использованию мощных бесщеточных электродвигателей и литий-ионных аккумуляторов. Для реализации сложных алгоритмов питания таких двигателей и управления ими компания Infineon предлагает решения, позволяющие создавать оборудование, отвечающее самым современным требованиям, предъявляемым к технике подобного класса.

Подробнее

Стандарт LoRaWAN и его использование в России с контроллерами STM32WL

Стандарт сетевого уровня LoRaWAN технологии LoRa одобрен для применения в России и отвечает требованиям региональных сетевых операторов. Компания STMicroelectronics выпустила линейку беспроводных однокристальных контроллеров серии STM32WL c поддержкой модуляции LoRa. Серия STM32WL имеет цифровые и аналоговые периферийные устройства для приложений, требующих высокой энергоэффективности и возможностей связи на достаточно большие расстояния, подходя для широкого спектра промышленных и потребительских приложений.

Подробнее

Разработка преобразователей на основе карбид-кремниевых приборов с помощью симулятора SpeedFit 2.0

Компания Wolfspeed разработала бесплатный онлайн симулятор SpeedFit 2.0, позволяющий разработчикам быстро и всесторонне оценить параметры основных процессов, происходящих в силовой части импульсных преобразователей электрической энергии, и сравнить между собой различные варианты реализации поставленного технического задания.

Подробнее

10.02.2020 в 12:19, mail_robot сказал:

в обработчик передай номер вызова по порядку вместо единички и увидишь сразу где ошибка. Ессно в обработчике сделай бесконечный цикл и поставь на нем брэкпоинт

Написал обработчик, а потом физически отключил уарт, но ошибку стм все равно не видит

Код: https://pastebin.com/fuxj68VS

Link to comment
Share on other sites

10.02.2020 в 12:44, BARS_ сказал:

Это все по тому, что нет ни малейшего понимания работы МК. Выкинь нафиг все HAL либы из проекта, открой даташит и напиши человеческий код. Тогда и работать будет, как надо. Тем более, что настройка UART проще паренной репы. В STM32, в принципе, очень мало сложной периферии. Большая часть сделана очень просто и логично.

А если не через HAL, то это тогда работать через регистры CMSIS?

Link to comment
Share on other sites

ну значит дело не в таймаутах. Увеличь паузы между передачами до секунды. Делай что нибудь, ищи ошибку, за тебя это никто делать не будет. А то мож ты там и с проводами напартачил, а мы тут гадать будем

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Link to comment
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

  • Similar Content

    • By Main_18
      Доброго времени суток всем. Выручайте, у меня уже едет крыша. Не могу прочитать uart 1 на pic18f25k22 работает только отправка данных. uart 2 работает нормально и на отправку данных и на чтение.
      Инициализация обычная
      void USART_Init(long baud_rate) { TRISCbits.TRISC6 = 1; TRISCbits.TRISC7 = 0; float temp; temp=(( (float) (F_CPU) / (float) baud_rate) - 1); SP1BRG = (int) temp; /* Baud rate=9600 SPBRG=(F_CPU /(64*9600))-1*/ TX1STA = 0x20; /* TX enable; */ RC1STA = 0xB0; /* RX enable and serial port enable*/ } RC1REG всегда 0x00 если пытаюсь читать посылку. отправка работает нормально, если положить байт в TX1REG все отправляется.
      беру usart 2 на этом же чипе
      void USART_Init(long baud_rate) { TRISBbits.TRISB7 = 1; TRISBbits.TRISB6 = 0; float temp; temp=(( (float) (F_CPU) / (float) baud_rate) - 1); SP2BRG = (int) temp; /* Baud rate=9600 SPBRG=(F_CPU /(64*9600))-1*/ TX2STA = 0x20; /* TX enable; */ RC2STA = 0xB0; /* RX enable and serial port enable*/ } все прекрасно работает и на чтение и на запись. Мистика. Пробовал через прерывания и без них, usart 2 работает без нареканий, usart 1 только на передачу. 
      соединил два 18F2550 по уарту, все прекрасно один пишет, второй читает. Что не так с 18F25K22 кто подскажет?
    • Guest Константин
      By Guest Константин
      Здравствуйте, совсем недавно начать освоение микроконтроллеров и в начале пути столкнулся с двумя проблемами:  
      1) При нажатии кнопки "Run" для запуска проекта выдает ошибку: No ST-LINK detected! Please conncect ST-LINK and restart the debug sesion. При этом ST_Link установлен, создаю bin-файлы и зашиваю через него.
      2) есть плата STM32discovery и преобразователь интерфейса uart-usb|com, нужно передать сообщение по данному интерфейсу, но терминальные программы  (putty, smarty, realterm) не принимают ничего хотя видят данный порт. Ошибок в коде нет, светодиод мигает.
       


    • Guest NickL
      By Guest NickL
      Всем привет.
      Имеется датчик давления под управлением микрухи MLX90308. Микруха сия собирает показания с 4-х включенных мостом тензометрических датчиков, и отдает обработанное значение в виде аналогового сигнала. Так же есть пин для получения данных в цифре и калибровки/прошивки этой микрухи. Производитель микрухи предлагает бесплатный софт и свою отладочно-прошивочную плату (EVB90308) за 250 бакинских (дорого), которую ждать 8 недель (долго)
      Судя по докам, там обычный UART, но с другими уровнями. Логический 0 = 0.3*Uвх, т.е. 1.5в, Логическая 1 = 0.7*Uвх, т.е. 3,5в. И всё это засунуто в единственный пин и на прием и на передачу.
      Универ был давно, да и учился я плохо, подскажите пожалуйста пример схемы чтобы 1) свести tx и rx на одну ногу 2)согласовать уровни для чтения/записи сей микрухи доступными средствами. Например, FTDI.
      Даташит микрухи:
      https://www.melexis.com/-/media/files/documents/datasheets/mlx90308-datasheet-melexis.pdf
      Спасибо заранее! Это датчик из блока АБС мотоцикла, замены нет, б/у запчастей нет, а новый блок стоит как сам мотоцикл.
    • By Дмитрий -
      На примере GSM/GPRS Goouuu Tech IOT-GA6-B и ATtiny85.
      Программа «Звонилка». 
      Программа на BASCOM-AVR. 
      Источник https://178654.blogspot.com/p/uart.html
       

    • By Highlander7
      Хотелось бы поделиться некоторыми результатами теста модуля GSM с литий-диоксидмарганцевыми батарейками. Может кому-то это будет интересно.
      Иногда  мне приходится работать с различными GSM модулями. И вот в очередной раз, потребовалось выяснить в реальном эксперименте насколько долго может проработать GSM модуль M66FA-04-STD (Quectel) с указанным типом батареек. В результате эксперимента нужно было контролировать количество отправленных СМС-сообщений. В качестве батареек взял CR17505E fanso, которые были под рукой на тот момент. Посмотрел, что необходимые  параметры они обеспечивают. Выбранные батарейки соединил последовательно. На тестовой плате установил понижающий DC-DC преобразователь TPS62130 (TI) настроенный на 3,7 В выходного напряжения, а вся схема управлялась микроконтроллером  ATXMEGA16E5 (Atmel - Microchip). 
       

       
      В итоге: 10 сентября был запущен тест батареек в качестве источника питания для платы с GSM модулем.
      Сущность теста – микроконтроллер один раз в час включает GSM модуль и отправляет СМС с некоторым набором данных.
      После отправки СМС модуль выключается, а микроконтроллер на 1 час уходит в режим сна, ток потребления от батареек 65 мкА.
      До 21 сентября тестируемый комплект находился в комфортных условиях – хороший уровень сигнала сети GSM и комнатные температуры воздуха.
      СМС-ки нормально отправлялись и приходили каждый час. Было отправлено порядка 240 СМС-сообщений.
      21 сентября тестируемый комплект отвез за город и разместил в помещении с низким уровнем сигнала сети GSM и с уличной температурой воздуха. Температура воздуха ночью снижалась до 0 градусов, днем была +10 … +15.
      Проработав в таких условиях около двух суток, и, отправив порядка 50 СМС-сообщений, GSM модуль стал самостоятельно выключаться при регистрации в сети. Большой ток потребления (до 2 А) и выросшее из-за низких температур внутреннее сопротивление батареек приводили к провалу напряжения ниже допустимого уровня.
      24 сентября тестируемый комплект был выключен.
      30 сентября тестируемый комплект был снова включен, и он продолжил нормально работать (комнатные температуры и хороший уровень сигнала GSM).
      02 октября тестируемый комплект был размещен на застекленном балконе (температуры ночью ниже, чем в квартире).
      И вот до 09.10. модуль работает нормально, и пока сбоев в работе не было – СМС-ки исправно приходят каждый час.  
      09.10. эксперимент был остановлен в ожидании отрицательных температур, т.к. на улице было тепло.
      Теперь при наступлении ночью отрицательных температур эксперимент планирую продолжить.
      Пока было получено порядка 530 СМС-сообщений.
      В даташите на батарейку CR17505E fanso есть график зависимости напряжения батарейки от потребляемого тока при различных температурах.
      Для нуля градусов кривая доходит до тока 1 Ампер.
      Так как у меня 2 батарейки и хороший DC-DC (TPS62130), то нужный в худших условиях приема  GSM модулю M66 ток 1.6 А они могут обеспечить.
      Вообще-то, результат такого теста зависит от большого числа факторов:
      - качества антенны;
      - качества согласования антенны с сотовым модулем;
      - качества разводки печатной платы;
      - кпд понижающего DC-DC преобразователя;
      - величины ёмкостей конденсаторов на входе и выходе DC-DC преобразователя;
      - длительности сна (1 раз в час или 1 раз в сутки);
      Для -20 градусов кривая на графике доходит до тока только 0.4 Ампера. Можно сказать, что эти  батарейки оптимально использовать с GSM модулями до 0 градусов, или до -3 … -5 градусов.
      В моем эксперименте модуль GSM начал выключаться при близких к 0 температурах, но надо учесть, что батарейки уже проработали почти две недели. Если бы они были свежими, то, может быть, он бы не стал выключаться через два дня после «вывоза на природу».
      По питанию, для этого типа батареек наблюдается зависимость выходного напряжения в области отрицательных температур при больших значениях потребляемого тока. Думаю для более эффективного использования этих батареек на таких значениях тока (порядка 2 А и выше) наверное сможет помочь использование дополнительного суперконденсатора (ионистора) с низким внутренним сопротивлением подключенного параллельно батарейке. Этот суперконденсатор в момент импульса тока возьмёт на себя основную нагрузку и поможет разгрузить батарейку, увеличив ее срок службы.
       
×
×
  • Create New...