Обновить

SoftSerial: Однобитный ADC на STM32 (или самодельный логический анализатор)

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели7.5K
Всего голосов 5: ↑5 и ↓0+6
Комментарии16

Комментарии 16

ЗакрепленныеЗакреплённые комментарии

начиная с логических анализаторов

если сильно хочется скостылить логический анализатор- берите девборду на ezusb fx3, прошивка гуглится по "fx3lafw", поддерживается сигроком со всеми вытекающими, умеет в сто мегагерц.

В моем случае это 76.8 kHz

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

В электронике все — это либо АЦП либо ЦАП.
А как же пины земли и питания? :-)

Это уже не электроника, а электротехника.

 без отладочного UART. Я привык отлаживать прошивки через UART Shell и это стало проблемой. Хотел было отлаживаться через Segger RTT, но отсутствие прав админа на РС не позволяли 

это все явно отмазки :) запишем проще - хотелось странного :)

в arduino это наверно больше 10 лет есть, зовется softstserial и обходится без всяких dma. и сделано оно как раз для тех кому нужный пин не достаточно квадратный.

раз так важно то я все таки про softwareserial https://github.com/arduino/ArduinoCore-avr/tree/master/libraries/SoftwareSerial хотя они там тоже прерываний то наиспользовали

но ближе к теме (stm32) дейcтвительно https://github.com/betaflight/betaflight/blob/master/src/main/drivers/serial_softserial.c

тут он сделан еще и потому что в аппаратуре радиуправления удумали использовать инвертированный uart. у некоторых mcu она включается аппаратно, но кому то захотелось именно вот так

начиная с логических анализаторов

если сильно хочется скостылить логический анализатор- берите девборду на ezusb fx3, прошивка гуглится по "fx3lafw", поддерживается сигроком со всеми вытекающими, умеет в сто мегагерц.

В моем случае это 76.8 kHz

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

Я настраиваю программный UART на 9600 бод.
Получается надо ставить в ADC FS на 38.4 kHz.

а, 9600. тогда 76.8к хватит, да. прост смутила околостандартная частота для уарта.

(а я распробовала для всякой телеметрии 2Мбод для слабеньких мк и 4М для мк пожирнее. 9600 после этого совсем не хочется xD)

Здесь стоит обратить внимание на одну важную особенность контроллеров STM32F4 — в контроллере есть два модуля DMA, и только контроллер DMA2 имеет доступ к периферийным модулям, находящимся на шине AHB1. Модули GPIO соединены именно с шиной AHB1.

Судя по блок-схеме оба DMA имеют доступ к AHB1.

Однако в самом деле

Только DMA2 имеет доступ к шине AHB1.

Использовал такой метод для захвата видеосигнала c ZX

Что же Вы, тогда не проголосовали что делали это?

Здесь стоит обратить внимание на одну важную особенность контроллеров STM32F4 — в контроллере есть два модуля DMA, и только контроллер DMA2 имеет доступ к периферийным модулям, находящимся на шине AHB1. Модули GPIO соединены именно с шиной AHB1.

Следовательно, для захвата данных можно использовать только DMA2. Запросы передачи данных для этого DMA могут формировать только два таймера — TIM1 и TIM8. Я решил использовать второй из них.

Прочитал Ваш текст "Захват видеосигнала от ZX Spectrum при помощи STM32F4."
Надо же. Спасибо за ценнейшее уточнение!
Я про это даже не знал, не заметил, когда код писал.
Просто пальцем в небо выбрал случайный таймер DMA2, поток. И попал.

Не понял вопроса.

Какова архитектура компьютера  ZX Spectrum ?

Хотел бы добавить схему ZX Spectrum в свою коллекцию.

Правила Хорошей Структурной Схемы для Электронных Плат
https://habr.com/ru/articles/667030/

С ходу только такое находится: https://zxpress.ru/book_articles.php?id=1839
Там же куча модификаций была, а схемотехника обычно не очень сложная, так что структурные схемы, похоже, если и рисовали, то редко. Да и многая документация до нас не дошла.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации