Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 3 из 24 ПерваяПервая 12345613 ... ПоследняяПоследняя
Показано с 21 по 30 из 239

Тема: Программирование STM32

  1. #21
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    romanetz, я первые синтезаторы строил на Ардуино Mini в Arduino IDE. Когда стало не хватать ресурсов, выбирал в своё время между STM32 и ESP32, сделал выбор и безболезненно переехал на ESP32, который пользую в той же среде Arduino IDE - привычно и практически достаточно.

    Пока что замена этой среды на что-нибудь другое для меня неочевидна и поэтому неактуальна. Но, может быть, всё-таки есть какие-то аргументы в пользу определенной альтернативной среды программирования? Имеет ли это вообще смысл?
    Игорь


  2. #22
    Для синтезаторов - не имеет, это очень простая задача. Для sdr - надо выбирать по возможностям отладкии качеству генерируемого кода

  3. #23

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Изучал PLL на STM32F030K6T6. По глупости долго не мог запустить, в результате чего неплохо разобрался и решил напоследок похулиганить. По даташиту он до 48 МГц, и вот я значит воткнул в разъём макетной платы 16 МГц резонатор, а в коде множитель 4. Ничего удивительного - работает. Затем множитель 5 - он опять работает. Тогда 6 - и снова работает. Тогда 7 - Упс. "То-то же!" Оставил на весь вечер 96 МГц в цикле выводить на дисплее статус генератора HSE и PLL. Не подвис и не нагрелся. Попробую значит на нём без делителя частотомер до 30 МГц собрать, так как по мануалам измеряемая частота должна быть в 3 раза меньше системной (а практически в 2.5 раза) То есть, для измерения частоты до 30 МГц должно хватить PLL 75 МГц. Делением и умножением подходящего кварца можно подогнать частоту без излишеств. В наличии генератор только до 24 МГц, соответственно выше измерить не смог. Надеюсь что неприятных сюрпризов не будет. Появится ещё время, запрограммирую сишку на 30 МГц в качестве источника сигнала. Ну,и на худой конец, из категории до $1 есть еще F103C6T6 с даташитными 72 МГц и возможностью посчитать частоту на одних таймерах. Забавные вещицы эти stm32. (:

  4. #24
    Аватар для vadim_d
    Регистрация
    29.10.2006
    Адрес
    Санкт-Петербург
    Сообщений
    14,890
    Цитата Сообщение от ozforester Посмотреть сообщение
    Изучал PLL на STM32F030K6T6
    В каком-то из более древних контроллеров довелось по работе делать перевод в сон и выход из него с полным восстановлением тактирования, но там естественно никаких разгонов
    Вадим

  5. #25

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Сейчас в восьминогом stm32g030, "аналог" тини13 вот так (=
    Понятно, что наружу не все переключается или не одновременно,
    но у них и цена сопоставима с аттини.

    Скрытый текст

    Нажмите на изображение для увеличения. 

Название:	Screenshot_2023-05-12_08-44-39.png 
Просмотров:	87 
Размер:	79.6 Кб 
ID:	388777Нажмите на изображение для увеличения. 

Название:	Screenshot_2023-05-12_08-48-40.png 
Просмотров:	74 
Размер:	109.7 Кб 
ID:	388778


    P.S. Ссылку в предущем посте давать не стал, но тема "stm32f030k6 rcc pll" на электрониксе.

  6. #26

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Цитата Сообщение от Tadas Посмотреть сообщение
    В качестве примера.
    Решил код использовать по назначению, он у меня как пожарная кнопка под плексигласом. Пока держусь не подсматриваю. (: Только собрал под gcc и оценил размер, что-то около 3.6 кБ, даже не искал куда дисплей цепляется. Свой "велосипед" изобретаю. Учусь же одновременно и программированию, и stm32 постигаю. Взял сначала другой микроконтроллер, уперся в его производительность. Разогнать-то получилось, но из-за сбоев в синхронизации внешнего сигнала таймера (предположительно) резко падает точность, измерений после 28 МГц. А мне как раз этот вход и нужен же для измерений. Большего не выжал. Регистры и переменные на переполнение проверял и всё такое. Похоже дело в железе, то есть в выходе далеко за допустимые границы.
    Переключился на stm32f103c6, здесь уже и таймеров хватает, и разгонять не нужно. Так как процесс сильно совмещен с изучением побочных процессов, то небыстро продвигаюсь. Решаю сейчас задачку с отклонением частоты кварца, а там и финишная черта в программировании. Шаг на единичку в регистре таймера измерительного интервала все-таки дает бОльшую погрешность, чем требуется. Может и на микроконтроллере выкрутиться получится. Останется формирователь приделать (смотрю на полевичек и max999), чтобы измерять входной сигнал в более широком диапазоне амплитуд, и можно платку рисовать.

    Скрытый текст

    Нажмите на изображение для увеличения. 

Название:	laba599.JPG 
Просмотров:	101 
Размер:	54.7 Кб 
ID:	388821


  7. #27

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Настроил старую распбери для запсной сборки проектов для arm или avr. Основные шаги, то что касается общих настроек и arm, выкладываю в качестве примера. Может кому-нибудь пригодится что-то из данного процесса. У меня линукс. Подозреваю, что на виндосе свои команды и заморочки, но в основном должно быть похоже.

    Нажмите на изображение для увеличения. 

Название:	PIB.JPG 
Просмотров:	123 
Размер:	36.0 Кб 
ID:	389250

    Скрытый текст


    1. На сайте распбери в разделе софта посмотрел последнюю лайт-версию для raspberry B+.


    2. Скачал образ флэшки.
    Код:
    wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2023-05-03/2023-05-03-raspios-bullseye-armhf-lite.img.xz
    3. Разархивировал.
    Код:
    unxz 2023-05-03-raspios-bullseye-armhf-lite.img.xz
    4. Вставил флэшку в ноутбук и посмотрел какое блочное устройство появилось в системе.


    Код:
    lsblk
    ..
     /dev/sdb
    ..
    5. Записал файл-образ на устройство.
    Код:
    dd if=2023-05-03-raspios-bullseye-armhf-lite.img of=/dev/sdb bs=4M
    6. Можно переставлять флэшку в распбери и подключать монитор с клавиатурой, но мне лениво висеть над монитором и распутывать пыльный клубок проводов. Пэтому произвел безголовый (headless) запуск. В наши дни, как оказалось, для этого требуется:


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

    Код:
    touch ssh
    6.2 Создать там же на первом разделе файлик userconf, но не пустой а с парой логин:пароль. Причем пароль должен быть в виде хэша.


    Код:
    echo -n "oleg:" > userconf
    echo "123" |openssl passwd -6 -stdin >>userconf
    
    
    cat userconf 
    oleg:$6$1mFLvr6jSSJQw8nC$dHkcajj7j6XqarnqLJU8XvgYk4yMld93Xeile/heOWORSljjVQBNAyLC7cOfDqx9/OT0akPXvadphBrJaNPh4/
    То есть логин для входа - oleg, а пароль - 123, который в безопасном виде выглядит немного по другому. Закидываем файл userconf рядом с файлом ssh, чтобы система их перенесла в конфигурацию.


    6.3 Подготовить беспроводное подключение.


    Допустим у нас есть точка досупа "ABC" и ключ к ней "12345678".


    Код:
    wpa_passphrase ABC 12345678 > wpa_supplicant.conf
    получился файл wpa_supplicant.conf содержащий


    Код:
    network={
        ssid="ABC"
        #psk="12345678"
        psk=04cb2dce0184e4c2e48a7cefa77b592ae1590cf1f869a7c4bca5eda12841bab4
    }
    Теперь его нужно дополнить, добавив несколько строк. Так выглядит измененный файл.


    Код:
    ctrl_interface=/var/run/wpa_supplicant
    ctrl_interface_group=0
    ap_scan=1
    network={
        ssid="ABC"
        psk=04cb2dce0184e4c2e48a7cefa77b592ae1590cf1f869a7c4bca5eda12841bab4
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
    }
    Поместим файл wpa_supplicant.conf туда же, на раздел флэшки рядом с файлами userconf и ssh. Система при первой загрузке переместит wpa_supplicant в нужную папку и настроит нам автоматический запуск вайфая.


    7. Устанавливаем флэшку в распбери и подаем питание.


    Нужно подождать несколько минут, пока система произведет все первоначальные настройки, подправит разделы флэшки, настроит и запустит ssh-сервер, подключится к вайфай с указаными в файле wpa_supplicant настройками и создаст в системе пользователя с учетными данными, указанными в файле userconf. После проделанных операций распбери вроде бы перезапускается. Вобщем, ждем минут пять. По дисплею весь процесс можно было бы наблюдать, но у меня перед глазами лишь мигающий светодиод распбери.


    8. Если запускаем без монитора, то думаем, как же мы узнаем айпи-адрес распбери. Я посмотрел по вайфай-маршрутизатору какой адрес он выдал распбери. В андроид-смартфоне, при раздаче, тоже можно посмотреть какие к нему устройства подключены и какие адреса им выданы. В любом случае, как запасной вариант есть монитор, на который распбери после загрузки печатает, какой она получила адрес.


    9. Пытаемся зайти на распбери. Из линукса набираем команду ssh, из виндоса - устанавливаем программу putty и с её помощью пробуем подключиться.


    Код:
    ssh oleg@rpi
    (я в файлике хостов уже прописал для адреса распбери три имени, одно из которых rpi, чтобы не запоминать айпи)


    10. Подключились. Проверяем и устанавливаем обновления.


    Код:
    sudo apt-get update
    sudo apt-get upgrade
    11. Устанавливаем минимальный набор утилит для stm32.

    Код:
    sudo apt-get install gcc-arm-none-eabi
    sudo apt-get install stlink-tools
    Для мигания светодиодом уже достаточно.




    12. Создаем папку для первого проекта.
    Код:
    mkdir -p stm32/projects/
    Помещаем в нее архив с кодом blink.zip и распаковываем.
    Код:
    unzip blink.zip
    Переходим в папку blink
    Код:
    cd blink
    Собираем.


    Код:
    oleg@raspberrypi:~/stm32/projects/blink $ make clean all
    rm -f main.o
    rm -f main.elf
    rm -f main.bin
    /usr/bin/arm-none-eabi-gcc -x assembler-with-cpp -c -specs=nosys.specs -g -O0 -mcpu=cortex-m3 -mthumb -Wall -Wextra -fmessage-length=0 -no-pie -march=armv7-m -masm-syntax-unified -fno-exceptions -fno-unwind-tables -mlittle-endian -fno-rtti main.S -o main.o
    /usr/bin/arm-none-eabi-gcc main.o -mcpu=cortex-m3 -march=armv7-m -mlittle-endian -masm-syntax-unified -fno-rtti -fno-exceptions -fno-unwind-tables -mthumb -Wall -specs=nosys.specs -nostdlib -nostartfiles -lgcc -Tlinker.ld -no-pie -o main.elf
    /usr/bin/arm-none-eabi-objcopy -S -O binary main.elf main.bin
    /usr/bin/arm-none-eabi-size main.elf
       text       data        bss        dec        hex    filename
        100          0          0        100         64    main.elf
    Прошиваем (если st-link подключен к распбери, и bluepill подключена к st-link)


    Код:
    oleg@raspberrypi:~/stm32/projects/blink $ make flash
    st-flash --reset write main.bin 0x8000000
    st-flash 1.6.1
    2023-05-24T11:39:20 INFO common.c: F1 Low-density device: 10 KiB SRAM, 32 KiB flash in at least 1 KiB pages.
    file main.bin md5 checksum: 29f8d7ab1e97c3ec500c6bb2df75b, stlink checksum: 0x00001f76
    2023-05-24T11:39:20 INFO common.c: Attempting to write 100 (0x64) bytes to stm32 address: 134217728 (0x8000000)
    2023-05-24T11:39:20 INFO common.c: Flash page at addr: 0x08000000 erased
    2023-05-24T11:39:20 INFO common.c: Finished erasing 1 pages of 1024 (0x400) bytes
    2023-05-24T11:39:20 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id
    2023-05-24T11:39:20 INFO flash_loader.c: Successfully loaded flash loader in sram
      1/1 pages written
    2023-05-24T11:39:20 INFO common.c: Starting verification of write complete
    2023-05-24T11:39:20 INFO common.c: Flash written and verified! jolly good!
    Для более серьезной работы придется скачать и установить дополнительные пакеты. Какие именно - зависит от того, что используют разработчики интересующих вас проектов. Для начала скачал в папку stm32 такой набор.


    Код:
    CMSIS_5
    STM32Cube_FW_F1_V1.7.0
    STM32Cube_FW_H7_V1.7.0
    STM32F10x_StdPeriph_Lib_V3.5.0
    CMSIS_5, в частоности, нужен чтобы собрать код для Аист-2, а то скажете, дескать, - "Блиньк мы и сами на ардуинке сыграем, ты МУрку давай."


    Мурка:


    Код:
    oleg@raspberrypi:~/stm32/projects/aist/build/stm32h743zi $ make clean all
    rm -fR ./obj
    rm -f tc1_stm32h743zi_rom.elf tc1_stm32h743zi_rom.map tc1_stm32h743zi_rom.hex tc1_stm32h743zi_rom.bin
    rm -f tc1_stm32h743zi_ram.elf tc1_stm32h743zi_ram.map tc1_stm32h743zi_ram.hex tc1_stm32h743zi_ram.bin
    arm-none-eabi-gcc --version
    arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    
    arm-none-eabi-gcc -std=gnu11 -Wstrict-prototypes -c -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast  -gdwarf-2 -fomit-frame-pointer -Wall  -DARM_MATH_CM7 -DNDEBUG=1 -DCPUSTYLE_STM32H7XX=1 -DSTM32H743xx=1   -MD -MP -MF ./obj/audio.o.d -ffunction-sections -fdata-sections  -I../../../../CMSIS_5/CMSIS/Core/Include  -I../../../../CMSIS_5/CMSIS/DSP/Include  -I../../../../CMSIS_5/CMSIS/DSP/Source  -I../../../../CMSIS_5/CMSIS/DSP/PrivateInclude  -I../..  -I../../inc ../../src/audio.c -o obj/audio.o
    
    ..
    
    arm-none-eabi-gcc   ./obj/audio.o  ./obj/bandfilters.o  ./obj/board.o  ./obj/buffers.o  ./obj/cmsis_dsp_forward.o  ./obj/display2.o  ./obj/elkey.o  ./obj/encoder.o  ./obj/filters.o  ./obj/formats.o  ./obj/gpio.o  ./obj/hardware.o  ./obj/irq_ctrl_gic_forward.o  ./obj/keyboard.o  ./obj/keymaps.o  ./obj/main.o  ./obj/modems.o  ./obj/nvram.o  ./obj/sai.o  ./obj/sdcard.o  ./obj/sdram.o  ./obj/sequen.o  ./obj/serial.o  ./obj/spi.o  ./obj/spislave.o  ./obj/synthcalcs.o  ./obj/tests.o  ./obj/twi.o  ./obj/wavfile.o  ./obj/codecs/cs4272.o  ./obj/codecs/nau8822.o  ./obj/codecs/tlv320aic23.o  ./obj/codecs/wm8994.o  ./obj/display/display.o  ./obj/display/dummy.o  ./obj/display/framebuf.o  ./obj/display/hd44780.o  ./obj/display/ili8961.o  ./obj/display/ili9225.o  ./obj/display/ili9320.o  ./obj/display/l2f50.o  ./obj/display/lph88.o  ./obj/display/ls020.o  ./obj/display/ltdc.o  ./obj/display/pcf8535.o  ./obj/display/s1d13781.o  ./obj/display/st7565s.o  ./obj/display/st7735.o  ./obj/display/uc1601s.o  ./obj/display/uc1608.o  ./obj/fatfs/diskio.o  ./obj/fatfs/ff.o  ./obj/fatfs/ffsystem.o  ./obj/fatfs/ffunicode.o  ./obj/gui/gui_framework.o  ./obj/gui/gui_user.o  ./obj/speex/fftwrap.o  ./obj/speex/filterbank.o  ./obj/speex/kiss_fft.o  ./obj/speex/kiss_fftr.o  ./obj/speex/mdf.o  ./obj/speex/preprocess.o  ./obj/speex/smallft.o  ./obj/touch/gt911.o  ./obj/touch/stmpe811.o  ./obj/touch/touch.o  ./obj/usb/usb_core.o  ./obj/usb/usbd_cdc.o  ./obj/usb/usbd_descriptors.o  ./obj/usb/usbd_dfu.o  ./obj/usb/usbd_uac.o  ./obj/usb/usbh_dskio.o  ./obj/usb/MSC/Src/usbh_msc.o  ./obj/usb/MSC/Src/usbh_msc_bot.o  ./obj/usb/MSC/Src/usbh_msc_scsi.o  ./obj/test2.o  ./obj/usb/USBPhy_RZ_A1.o -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects  -Ofast -nostartfiles -T./STM32H743ZI_rom.ld -Wl,-Map=tc1_stm32h743zi_rom.map,--cref  -Wl,--gc-sections -lm  -o tc1_stm32h743zi_rom.elf
    arm-none-eabi-size --format=sysv --radix=16 tc1_stm32h743zi_rom.elf
    tc1_stm32h743zi_rom.elf  :
    section               size         addr
    .text              0x9f589    0x8000000
    .ARM.exidx             0x8    0x809f58c
    .copy.table           0x24    0x809f594
    .zero.table            0x8    0x809f5b8
    .data              0x10b90   0x20000000
    .itcm               0x2c28          0x0
    .ram_d1             0xa080   0x24000000
    .bss               0x442e0   0x30000000
    .noinit            0x657c0   0x2400a080
    .debug_info       0x124e8b          0x0
    .debug_abbrev       0xede0          0x0
    .debug_loc        0x17d88a          0x0
    .debug_aranges      0x36d0          0x0
    .debug_ranges      0x42930          0x0
    .debug_line        0xeea16          0x0
    .debug_str         0x19d75          0x0
    .comment              0x9f          0x0
    .ARM.attributes       0x30          0x0
    .debug_frame        0xcda4          0x0
    Total             0x573388
    
    
    arm-none-eabi-objcopy -g -O ihex -R .noinit -R .bss -R .heap tc1_stm32h743zi_rom.elf tc1_stm32h743zi_rom.hex
    Даже не ожидал, что вот так вот возьмёт и соберется. Думал для начала ограничиться блиньком. (=

    Вложения Вложения
    • Тип файла: zip blink.zip (1.9 Кб, Просмотров: 57)
    Последний раз редактировалось ozforester; 24.05.2023 в 15:23.

  8. #28

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    cmsis, core_cm3.h:

    Код:
    (uint32_t)(int32_t)IRQn
    В чем "физический смысл" такого двойного приведения?

  9. #29
    Аватар для Genadi Zawidowski
    Регистрация
    22.07.2004
    Адрес
    Санкт-Петербург
    Сообщений
    11,093
    Записей в дневнике
    20
    Позывной
    UA1ARN
    нету
    ... Я там глубину сам промерял!


  10. #30

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Ну а как изменится число? Допустим там SysTick, enum {-1}, [что вероятно эквивалентно 0xfe] Он преобразуется сначала в 0xfffffffe, а затем? В +1? У меня фундаментальный пробел. Понимаю комплементы, понимаю как типы хранятся в памяти, а как знаковое к беззнаковому приводится - нет уверенности. Опыта не было. Отладчик не под рукой. Посмотреть не могу вживую, а выводить на экран, так это-ж можно при выводе к одной ошибке добавить вторую, такой опыт есть. (=

Страница 3 из 24 ПерваяПервая 12345613 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Анализатор kuchura с графикой на STM32
    от khach в разделе Антенные приборы
    Ответов: 4184
    Последнее сообщение: 15.09.2023, 23:39
  2. Полноценный адаптер USB-Serial с 3 UART портами на STM32 Blue Pill (STM32F103C8T6)
    от r2axz в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 26
    Последнее сообщение: 24.03.2023, 11:06
  3. Аналоги STM32
    от RA1AGB в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 26
    Последнее сообщение: 30.12.2022, 11:54
  4. TP3067+stm32
    от PAVELk781 в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 12
    Последнее сообщение: 23.06.2018, 19:45
  5. STM32 Discavery-первый опыт в программировании на С
    от DL2BDA в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 64
    Последнее сообщение: 08.02.2017, 21:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •