Jump to content
Sign in to follow this  
michaelukolov

Генератор сигнала на STM32

Recommended Posts

Доброго времени суток.

Сразу скажу: я не прошу писать за меня код, просто натолкните, как правильнее это реализовать.

Имеется STM32F103C8T6, необходимо на ней построить одноканальный генератор сигнала, желательно разной формы (синус/меандр) с регулировкой частоты и скважности от переменного резистора. Регулировки частоты хватило бы в пределах 1Гц - 20кГц (отсюда еще вопрос, годится ли для этого F103C8T6?). Хотелось бы еще иметь разные уровни (5В/12В), но это и сам сообразить могу.

Если использовать HAL таймер, то когда он уже будет запущен, можно будет менять частоту/скважность?

Как реализовать переключение синус/меандр?

Edited by michaelukolov

Share this post


Link to post
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...
Sign in to follow this  

  • Similar Content

    • By pribor458
      Куплю изделия:
       
      Контакторы электромагнитные ТКС111ОДЛ
      Автоматы защиты сети АЗР 50, АЗР2-150ТУ
      Контакторы переменного и постоянного тока МК6-10 (24В, 400А)
      Устройства программно-временные УВПМ1-122  100шт.
      Генераторы световых сигналов ПГС-11М
      Электромеханизмы УР-10
      Клистроны усилительные КИУ191  дорого
      Переключатели нажимные П4НГ-15К
      Устройства программно-временные УВПМ1-123
      Диоды 2ДШ2125А92
      Реле скорости РС-67
      Лампы генераторные ГУ-84Б
       
      Фотодиоды:
      КЧФ-1-29
      КЧФ-1-29Р
       
      Клистроны К-306
      Выключатели вакуумные ВВ-20
      Переключатели нажимные П4НГ-15К
      Контакторы электромагнитные ТКД102ОДГБ
      Циркуляторы волноводные ФВЦВ2-42
       
      Тиратроны импульсные:
      ТГИ3-500/16
      ТГИ 2-400/16
       
      Камеры ионизационные:
      КНК56
      КНК15
       
      Контакторы переменного и постоянного тока:
      МК2-30 У3 (380В, 63А)
      МК3-20 У3 (220В, 160А)
       
      Конденсаторы ЭСПВ-0,5-10 У3
      Детекторы рентгеновского излучения СИ-4Р
      Лампы генераторные ГУ-84Б
      Контакторы электромагнитные ТКС201ДОД
      Пентоды генераторные ГУ-81М
       
      Умножители фотоэлектронные:
      ФЭУ-85-1
      ФЭУ-85-4
       
      Конденсаторы ЭСПВ-0,8-10 У3
      Конденсаторы электротермические ЭЭВП-0,8-10
       
       
      Россия, Москва:
      Конт. тел. +7-495-260-12-54
      Украина, Львов:
      Конт. тел. +38-050-410-57-87
      pribor458@gmail.com

    • By KVAnton
      Всем привет, начал недавно STM32 осваивать (до этого были pic12-18/arduino/raspberry) и столкнулся с интересной проблемой:
      Настроил GPIO как Input Pull-Up но при считывании получаю 0.
      Условия:
      Несколько других также настроенных портов (Input Pull-Up) при этом посажены на землю (на один порт Output Open-Drain), а непосредственно перед считыванием переключаю другой порт Output Open-Drain Pull-Up с 1 на 0.
      При этом, если поставить задержку (пробовал 1мс) после переключения OutPut и считыванием Input получаю - 1, как и должно быть. Порты по схеме ни как не связанны - пробовал вообще отключать input порт от схемы (матрица кнопок) ситуация не меняется.
      Работаю с китайской платой на stm32f103c8t6 (ардуино подобная) и библиотекой LL. Скорость порта пробовал разную - результат один.
      Сможет кто-то объяснить или хотя бы намекнуть (куда копать, что почитать) почему такой эффект возможен?
      Во всяких даташитах/аппликейшн ноте вроде ни чего интересного, зацепила только аббревиатура  SSO ( simultaneous switching output) в разделе Adapt GPIO speed (в AN на GPIO) - но понять глубину этой фразы и контекста с ходу не получилось (возможно из-за непонимания каких-то базовых моментов)
      Хотя и проблема в принципе решена (задержка допустима) - но хотелось бы разобраться в причинах.
      Буду благодарен любым вариантам, может что-то натолкнет на правильные мысли.
    • By crazy_duck
      Все измерительные приборы рабочие, если не указано иное. Не ремонтировались, под пломбами. Всегда хранились в стенах лаборатории, использовались редко. Любые адекватные самостоятельные проверки при покупке или по полученным от Вас инструкциям (так как не со всеми приборами имел опыт работы). Причина продажи простая: необходимо освободить помещение, в котором они хранились.
      Местонахождение: Санкт-Петербург. Самовывоз или отправка ТК с забором по городу. Сделаю любые фото и видео, кроме тех, которые можно сделать только снимая пломбу, если прибор под пломбами.
      1. Анализатор спектра     С4-60 (Я40-0830, Я4С-54, Я4С-59, Я4С-60) - 50 000 руб.
      2. Анализатор спектра     С4-60 (Я40-0830, Я4С-54, Я4С-59, Я4С-60) - 45 000 руб.
      3. Блок ваттметра измерительный    Я2М-66 (мз-51) - 1988 г. - 45 000 руб.
      4. Блок измерительный 0,11-12,05 ГГц с цифровым индикатором предположительно от измерителя комплексного коэффициента передач РК4-22.    РК4-22 - 15 000 руб.
      5. Блок индикаторный    Я2Р-70 1990 г. - 39 000 руб.
      6. Генератор импульсов     Г5-56 1989 г. - 24 900 руб.
      7. Генератор сигналов высокочастотный     Г4-80 - 11 500 руб.
      8. Генератор сигналов низкочастотный    Г3-118 1988 г.
      9. Генератор сигналов низкочастотный    Г3-120 1983 г.
      10. ЗИП к прибору - 2 шт.    Г3-111 - 800 руб.
       Полный набор в картонной коробке. Есть 2 штуки.
      12. Измеритель коэффициента стоячей волны панорамный (ГКЧ, Индикатор)    Р2-86 2002 г. - 79 000 руб.
      13. Источник питания     ВИП-010 1983 г. - 2 000 руб.
      14. миллиамперметр М42101 30-0-30 В, 0-30мА     -  200 руб
      15. Осциллограф универсальный запоминающий (ЗИП)    С8-13 - 17 000 руб.
      16. Синтезатор частоты    Ч6-71 с ЗИП - 74 000 руб.
      17. Частотомер электронно-счетный    Ч3-57 1983 г. - 9 500 руб.
      18. Громкоговоритель гр-16 3 шт. - 1200 руб.
       
       




    • By katet
      Добрый день. Может быть,кто-нибудь уже сталкивался с таким. 
      Занимаюсь доработкой чужого проекта в среде STM32CubeMX, первый раз работаю с библиотекой HAL.
      В этом проекте осуществлялся прием байт по USART1 из ComMon. Проект был открыт в STM32CubeMX, где мной дополнительно были активированы новые модули - RTC, SD, USART2. Настройки USART1 не менялись. 
      Часы реального времени RTC: питание от батарейки, тактирование – от LSE. 
      При приеме байт по USART1 в новом проекте (активны  USART1, RTC, SD, USART2) было выявлено, что после приема 2 байт по USART1 перестает инкрементироваться значение переменной uwTick, отвечающей за прерывания Systick, в результате чего дальнейшая отладка невозможна. Не удается выяснить, в каком месте и почему перестает увеличиваться значение uwTick. При работе со старым проектом (где активен только USART1) uwTick инкрементируется после приема 2 байт.
      Смены приоритета прерываний не происходит, в  функцию HAL_Delay() отладчик не попадает. При вызове функции HAL_ResumeTick(), возобновляющей прерывания Systick, ничего не меняется, значение uwTick остается неизменным.
      Остановка прерываний была обнаружена при попадании в функцию:
      static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
      {
        /* Wait until flag is set */
        while((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) 
        {
          /* Check for the Timeout */
          if(Timeout != HAL_MAX_DELAY)
          {            
            if((Timeout == 0U)||((HAL_GetTick() - Tickstart ) > Timeout))
            {
              /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
              CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
              CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
              
              huart->gState  = HAL_UART_STATE_READY;
              huart->RxState = HAL_UART_STATE_READY;
              
              /* Process Unlocked */
              __HAL_UNLOCK(huart);
              
              return HAL_TIMEOUT;
            }
          }
        }
        
        return HAL_OK;
      }
      В новом проекте текущее значение uwTick, возвращаемое функцией HAL_GetTick(), всегда равно значению Tickstart. В старом проекте сначала также, но затем uwTick начинает увеличиваться. Выяснить, в каком именно месте кода значение uwTick должно начать увеличиваться, не удается.
      Может быть, у кого-нибудь есть хоть какие-то идеи, с чем может быть связана остановка увеличения значений uwTick, помогите пожалуйста)
      Распиновка и конфигурация обоих проектов: верхняя часть рисунков - первоначальный, работающий вариант,  нижняя - сбой прерываний Systick.


    • By _qwerty
      Добрый день. Продам
      отладочные платы для STM32
      Отладочная плата на базе MCU STM32F429ZIT6 (ARM Cortex-M4) - 2600 р. В наличии 2 шт. Отладочная плата на базе MCU STM32F407VGT6 (ARM Cortex-M4) - 1600 р. В наличии 2 шт. Отладочная плата на базе MCU STM32F303VCT6 (ARM Cortex-M4) - 1200 р. В наличии 2 шт. Отладочная плата на базе MCU STM32F103RBT6 (ARM Cortex-M3) - 1000 р. В наличии 2 шт. образовательный набор Амперка Tetra для обучения детей прикладному программированию на основе визуального языка Scratch - 4500 р. В наличии 2 шт.
      электронный конструктор БХВ-Петербург Дерзай 36608 Стартовый набор Arduino - 1500 р. В наличии 2 шт.
      Все новое, не использовалось, возможна отправка почтой по России


















×
×
  • Create New...