hd44780 0 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба Привет всем. Собрал небольшой модуль-радиодатчик температура-давление-влажность, который передаёт инфу по радиоканалу когда оттуда же прилетит нужная команда. Состав модуля: процессор - STM32F030F4P6, UART радиомодуль HC-12 (выбран специально, великолепно пробивает жб перекрытия в отличие от Bluetooth HM-10, который испытание жб стенами не прошёл ) и датчик BME280, работающий по SPI. Питание этого блока сейчас от 9в кроны через LF33. На тему выбранного стабилизатора просьба не подшучивать, выбор сделан вполне осознанно - когда к модулю никто не обращается, он тихо-мирно спит с целью снижения энергопотребления. Из трёх проверенных мною стабилизаторов - AMS1117-3.3, LF33 и LM317 (настроенный на 3.3в) у LF33 оказался наименьший ток собственного потребления - 0.535 mA против ~2.5 mA у двух других. На время отладки спячку всю убрал, всё крутится на всю катушку. Питание от USB-шных 5в через AMS1117-3.3 стабилизатора ST-Link-а. Алгоритм работы проца - ловит из радиоканала по уарту команды и отвечает на них. Сейчас команды всего 2 - "Получить строку About" - гонит фиксированную ASCIIZ строку и команда "Получить данные" - передаёт 7 байт данных с датчика. В качестве опрашивающего узла сейчас связка "терминал на компе - FT232BL - HC-12". Когда начал эксперименты - началась некая мистика. модуль успешно отвечает на 1..4 команды и замолкает навсегда. Отладчик показал, что проц попадает в DefaultHandler из каких-то случайных мест типа delay_ms (примитивная задержка на базе систика) и пр. Но самое интересное то, что в DefaultHandler он попадает из прерывания собаки WWDG_IRQHandler. Само собой собака мне не нужна, я её и не включал. Думаю, ладно, фиг с ней, добавил в программу этот WWDG_IRQHandler, так он всё равно оказался в DefaultHandler из (внимание !!!) прерывания USART2, которого в проце STM32F030F4P6 (корпус TSSOP-20) физически нет!! Ну писать прерывание USARt2 я уже не стал ... Проведенные эксперименты: 1. Если убрать HC-12 и подключить вместо него простой USB-переходник - всё пашет прекрасно. 2. Если собрать такую же схему на STM32F103C8T6 - работает прекрасно. 3. Прошивки F030 и F103 писал на кокосе, пробовал прошивку F030 на Atollic 9.1 (или как там его) - та же мистика с непонятными прерываниями. 4. Думал, что HC-12 садит питание при радиообмене - повесил электролит 100 мкФ на питание - не помогло. Ф103 пашет и без оного. Керамика 100 нФ стоит везде. 5. Думал, что из-за float где-то спонтанно не хватает стека. Выкидывал датчик полностью - ставил отсылку просто 7 фиксированных байт - не помогло. Кто-то может сказать что-либо что там происходит? Я, в принципе, не гордый, могу и ф103 там оставить, но просто он крупноват для этой задачи - прошивка 6 кил (флэш Ф030 - 16 кил, F103 - 128 кил), при том, что я там вовсю использую плавающую точку при пересчёте сырых данных датчика в человеко-понятные единицы. Хотя ещё один уарт на модуле не помешал бы ... Спасибо. PS. Несколько слов о HC-12. Это маленькая платка с трансивером SI4463+STM8. STM8 по сути переходник SPI<->UART, потому можно сказать, что STM32 общается именно с STM8. И ещё одна мистика. У модуля есть нога SET, при подаче 0 на которую он перестаёт работать с радиоэфиром, переходит в режим AT-команд. Выяснилось, что если замкнуть ногу в землю проводком, ответы приходят, но если подключить эту ногу к пину проца и подать туда 0 - ответа никакого нет... И что делать - ставить туда механическое реле с герконами на 12 вольт ? Здесь ужо и Ф103 не помогает, только реле .. Хотя реле ставить я пока не пробовал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gorby 6 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба 32 minutes ago, hd44780 said: И ещё одна мистика. У модуля есть нога SET, при подаче 0 на которую он перестаёт работать с радиоэфиром, переходит в режим AT-команд. Выяснилось, что если замкнуть ногу в землю проводком, ответы приходят, но если подключить эту ногу к пину проца и подать туда 0 - ответа никакого нет... И что делать - ставить туда механическое реле с герконами на 12 вольт ? Мистики нет. Пины у процессора слабоваты (это если они еще правильно включены!). Повышенная радиомощность (стены пробивает) на расстоянии в несколько сантиметров при неудачном стечении обстоятельств запросто может наводить на вход управления потенциал, достаточный для дребезжания. Поэтому прикручиваем мощность до минимума и смотрим, повлияло ли, думаем, делаем выводы. Ставим на управляющий вход конденсатор на землю 1000 пикофарад на всякий случай. И эту дорожку исследуем на предмет близости к антенне. Убеждаемся осциллографом, ЧТО там нам есть на самом деле, а не то что Вы думаете там есть. По результатам - либо сами справитесь, либо - опять сюда. А реле не нужно. Его не усыпить... Разве что поляризованное... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба 23 minutes ago, Gorby said: Повышенная радиомощность (стены пробивает) на расстоянии в несколько сантиметров при неудачном стечении обстоятельств запросто может наводить на вход управления потенциал, достаточный для дребезжания. Не удивлюсь, если в результате особо талантливой разводки токи с радиочастотой будут забегать внутрь процессора, и у него просто снесёт крышу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pengozoid 0 29 ноября, 2018 Опубликовано 29 ноября, 2018 (изменено) · Жалоба От радиомодуля к процессору все шины (питание, SPI и прочее) лучше зафильтровать и прикрыть процессор и прочее уязвимое "шапочкой из фольги". От 100 мВт вполне может и SPI прилечь, и что-нибудь еще. От 500 мВт в диапазоне около 400 МГц еще как ложится если никаких мер не предпринимать. Проверенное решение для шин данных и управления (SPI, энейблы всякие, управление ключами и пр.) - эллиптические фильтры 3 порядка, на шинах питания по 2 емкости 330 пФ и 10 нФ, ферритовые бусины и Low-ESL емкость (Murata NFM). Ну и все экранировано. От 5-ваттного широкополосного передатчика могут уже сбоить всякие китайские сделанные ногами DC-DC конверторы, драйверы двигателей и пр. Изменено 29 ноября, 2018 пользователем Pengozoid Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба ага, спасибо. Попробую, отпишусь. Кондёры добавлю. Там кое-что быстро не переделать. Пока могу сказать, что модуль спаян на макетке проволочками. Ф103 был подключен к радиомодулю 15 см проводами. Теми же проводами подключал его и к Ф030 - пофигу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба Я, все-таки, поставлю на лажовый код для F030. Так как наводят на мысли данные слова: Цитата ...так он всё равно оказался в DefaultHandler из (внимание !!!) прерывания USART2, которого в проце STM32F030F4P6 (корпус TSSOP-20) физически нет!!... Откуда, спрашивается, Вы взяли тогда, что от USART2? Если ни среда, ни startup-файл не должны вообще заикаться о USART2? Полагаю, в проекте настроен не тот контроллер, либо startup-файл не для этого контроллера, либо что-то еще подобного плана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба Это наказание за грехи ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба 3 hours ago, Arlleex said: Я, все-таки, поставлю на лажовый код для F030. Так как наводят на мысли данные слова: Откуда, спрашивается, Вы взяли тогда, что от USART2? Если ни среда, ни startup-файл не должны вообще заикаться о USART2? Полагаю, в проекте настроен не тот контроллер, либо startup-файл не для этого контроллера, либо что-то еще подобного плана. Взял я это из отладчика, проц задан правильно, стартап файл родом из кокоса. Могу даже полный проект выложить, там ничего секретного нет совершенно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 29 ноября, 2018 Опубликовано 29 ноября, 2018 (изменено) · Жалоба Если проблема при определенном закреплении программных условий (не менять код) выглядит одинаково - 99% вероятность, что баг именно в коде. А в другой среде собрать - соберется? В том же Keil. С его startup. Попробуйте. Проект тоже прикрепите, посмотрим Изменено 29 ноября, 2018 пользователем Arlleex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба 6 часов назад, hd44780 сказал: И ещё одна мистика. У модуля есть нога SET, при подаче 0 на которую он перестаёт работать с радиоэфиром, переходит в режим AT-команд. Выяснилось, что если замкнуть ногу в землю проводком, ответы приходят, но если подключить эту ногу к пину проца и подать туда 0 - ответа никакого нет... Осциллограф что говорит? Тот же вопрос в режиме передачи данных, интересуют диаграммы на ножках NRST, VCC процессора. Есть ли провалы при передаче - посмотрите, поизучайте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба осциллом пока не смотрел. Да, как посмотрю, отпишусь. Спасибо 2 hours ago, x893 said: Это наказание за грехи ! Ага. Наказание за передачу данных о погоде по радиоканалу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба Прикладываю проект для кокоса. С кейлом что-то у меня не складывается - показывает только процы ARM. Никаких STM там вообще нет. Пробую IAR. STM32F030-HC-12.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба Это правильно? void bme280_init ( void ) { uint8_t bme280_id; RCC->AHBENR = RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; RCC->APB2ENR = RCC_APB2ENR_SPI1EN; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба угу, следствие разного рода отладок. Перенёс RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; RCC->APB2ENR |= RCC_APB2ENR_SPI1EN | RCC_APB2ENR_SYSCFGEN; в main, ничего не поменялось. К вопросу о Keil и IAR. С выбором типа проца для проекта разобрался, но они оба почему-то генерят совершенно пустые проекты, в которых нет ни одного файла - ни стартового кода, ни main.c - ничего. main-то у меня свой есть, а вот где взять стартап - пока не понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wasserati 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба Startup файл соответствующего мк можно из репозитория CubeMX взять. Там они в отдельной папочке лежат. Советую обновить все файлы от ST. А то какие-то уже очень старые версии файлов в приложенном проекте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться