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

Вебинар «Новые тенденции сетевых технологий: Ethernet по одной витой паре» (09.12.2021)

Приглашаем 9 декабря всех желающих посетить вебинар, посвященный технологии Ethernet и её новому стандарту 10BASE-T1S/L. Стандарт 802.3cg описывает передачу данных на скорости до 10 Мбит в секунду по одной витой паре. На вебинаре будут рассмотрены и другие новшества, которые недавно вошли в семейство технологий Ethernet: SyncE, PTP, TSN. Не останется в стороне и высокоскоростной 25G+ Ethernet от Microchip.

Подробнее

DC/DC-преобразователи Mornsun со склада Компэл

В сложный период для рынка электронных компонентов, когда производители увеличивают сроки поставки продукции, со склада Компэл можно приобрести широкий ассортимент DC/DC-преобразователей производства компании Mornsun. На складе представлены наиболее популярные семейства изолированных и неизолированных DC/DC-преобразователей новых поколений R3 и R4, а также предыдущего, но по-прежнему востребованного поколения R2.

Подробнее

Теперь более 300 наименований: новое поступление Connfly на склад Компэл

Компэл объявляет о значительном расширении складского ассортимента продукции Connfly. Универсальные коммутирующие компоненты, соединители и держатели Connfly сочетают соответствие стандарту ISO9001:2008, высокую доступность и простоту использования. На текущий момент на складе Компэл – более 300 востребованных на рынке товарных наименований с гибкой ценовой политикой.

Подробнее

ну тебе то от этого что будет? Хочет товарищ - пусть грызет кокос хоть жопой

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

Link to comment
Share on other sites

Управляемый светодиодный драйвер на базе компонентов ST

ST предлагает готовое решение, адаптируемое под конкретную задачу, двухмодульный отладочный комплект на базе контроллера HVLED001B для разработки светодиодного драйвера светильника наружного освещения с дистанционным управлением по сети 6LoWPAN.

Подробнее

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.
  • Сообщения

    • Я уже неоднократно говорил, что прежде спорить, надо определиться с терминами. Судя по Вашим нападкам, Вы весьма своеобразно трактуете термины. Что сильно мешает Вам понять собеседника. Итак, смотрим всем надоевший ГОСТ 23849-87.   То есть, ГОСТ выражает уровни в виде напряжений. Вольт. Которые измеряются приборами. Отношение С/Ш, затем, вычисляется. И когда я слышу Ваш вопрос Я и отвечаю так, как Вам не нравится - 0 dBFS. Поскольку ни карта, ни программа не оперирует Вольтами. Ни RMAA, ни Спектра понятия не имеют, какое именно напряжение подано ей на вход. До тех пор, пока не сделана калибровка с помощью внешнего эталонного прибора. Причём, для RMAA это невозможно. Но, это не делает измерения невозможными. Поскольку АЦП способен получить два отсчёта - для номинального уровня и уровня шума, а программа способна произвести вычисления по приведенной выше формуле. Теперь, посмотрим на Вашу методику. Про 5 мВ, было известно и понятно задолго до Вашего появления в ветке. А вот пункт 2 - это Ваша принципиальная ошибка. Не в методике. В терминологии. Вы не откалибровали карту. Ибо, калибровка предполагает ввести измеренное внешним прибором реальное значение напряжения, которое соответствует отсчёту АЦП, отображаемому в окошке калибровки. Вы этого не делаете. Вы просто говорите программе - считай то, что у тебя на входе, за 0 дБ. При этом, Вы понятия не имеете, какое именно значение напряжения там есть. Вы его не измеряете. Всё, что у вас есть, из достоверной информации - это 5 мВ. На сколько его усилил корректор, Вы не знаете. Итак, если Вы не сделали калибровку, то что же Вы сделали? Вы просто сдвинули шкалу дБ, приведя её к виду, удобному для Вас при измерении именно этого корректора. Будет другой - шкалу придётся двигать снова. Далее, присвоив нолю дБ неизвестное и абстрактное значение, Вы переходите дальше. К измерению шума. При подключенном на вход эквиваленте источника. Как того требует ГОСТ. Это, в частности, меня сильно разочаровало. Столько рекламы и самопиара, ради простого пересказа методики из ГОСТа. Программа Вас показывает уровень шума, в дБ (!!), относительно того самого, абстрактного. Но, давайте представим, что Вы пропустили п. 2. Проигнорировали. Поленились. Не сделали. Но, 5 мВ подали. Что будет? Программа, естественно, Покажет Вам какую то цифру . В дБ. Поскольку, какое то значение ноля дБ в ней прописано по умолчанию. Допустим, это будет +7 дб. Далее, меняете 5 мВ на эквивалент и снова смотрите на дБ в программе. Это сожно сделать даже переключателем. Не останавливая анализ. Снова видите уровень в дБ. Скажем, -58. Каково же соотношение С/Ш?. Это частное двух измерений, в логарифмическом масштабе. В дБ это означает разность Т.е. -58 - (+7) = -65 дБ. Вот и всё. Вы получили результат. Причём тот же самый, что и после выполнения псевдо калибровки. Она, всего то, избавила Вас от необходимости самому считать разность. Проверьте, убедитесь. В общем, программа не знает, какой уровень (в Вольтах) подан ей на вход. Вы, тоже. Но это никому не мешает. Включая и соотношение С/Ш. Что Вы нам и продемонстрировали. Сами, похоже, того не осознавая.  Теперь об RMAA. Тут Вы не господин. Вы не способны сказать программе, что неизвестный уровень на входе  - это 0 дБ. Наоборот, программа Вам говорит - сделай так, чтобы мой индикатор показал значение, возможно ближе к 0 дБ. И, вот тут начинаются пляски с усилителями / делителями, чтобы провести выход корректора к уровню чувствительности конкретной карты. То есть, к 0 dBFS. А чувствительность, у карт, ох какая разная. Так что, хоть при измерении Спектрой, хоть при измерении RMAA, Вы стремитесь получить вожделенный 0 дБ. Вся разница, что Спектра способна прогнуться под Вас. А под RMAA придётся прогибаться Вам. При этом, снова повторю свою мысль. Вы не производите ни калибровку карты, в исинном значении этого понятия, ни измерения реального значения напряжения, поданного на вход карты. При этом, если выход корректора выше чувствительности кары, неизбежен делитель. У Вас не описанный. Но, из выше сказанного понятно, что он может быть даже некалиброванным. Лишь бы вход карты не был перегружен измеряемым сигналом. Более четверит века пользуюсь подобным, не испытывая ни неудобств, ни сомнений в правильности измерений.  
    • Это  не из этой серии...? БП к усилителю Солнцева. Doc1.docx по описанию работы ток КЗ-  7А-8А
    • Скорее генератор. Работающий через ключ на излучатель. Магнитострикционный, пьезо, просто  разрядник - то дело уже неважное, судя по формулировке вопроса.  
    • Обычно ,почти всегда, посадка на вал барахлит. Особенно если вал кротковат. Если вал 10 мм выступает, то намного точнее становится переходник.
    • а драка хоть была? Или зря время потратил?

  • Угловые разъемы питания

  • 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...