Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: UART - сэмплирование битов в первой части
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
toweroff
Добрый день
Есть физический интерфейс на витой паре, сигнал в нем выглядит вот так
Нажмите для просмотра прикрепленного файла
По сути, это обычный UART, но "0" передается вот в таком виде. Обычный же UART сэмплирует три отсечки в середине бита, потом уже принимается решение о "чистоте" сэмпла и его значении
Очень не хочется ловить каждый бит, пока надежда на использование стандартных аппаратных интерфейсов не совсем померла sm.gif
Есть идея использовать 32-битный SPI, с периодом тактирования как раз в 35мс и запускать по компаратору, который ловит старт-бит. У меня Start + 8 + Parity + Stop. Получается, один отсчет стоп-бита потеряется, да и фиг с ним

Что еще можно придумать? Пока смотрел LPC и STM32F, L. Вроде как не нашел переназначения тактов сэмплирования (или плохо смотрел?)
novikovfb
Посмотрите описание IrDA кодеков, там времена другие, но идея похожа: логический "0" передается укороченным импульсом. Кодеки есть во многих микроконтроллерах.
toweroff
Цитата(novikovfb @ Nov 14 2017, 14:22) *
Посмотрите описание IrDA кодеков, там времена другие, но идея похожа: логический "0" передается укороченным импульсом. Кодеки есть во многих микроконтроллерах.

да, спасибо. Судя по диаграмме, в STM32L0 такое может прокатить, нужно тестировать
Прием, вроде как, пройдет. Передача, получается, будет сдвинута на 7/16, но сама по себе останется такой, как нужно
В общем приедет подопытный кролик, напишу о результатах
k155la3
Данные приходят асинхронно, те. в любой момент.
Как привязать старт SPI к обработке посылки ? (Если это узел USART, то он отрабатывает автономно и будет "успевать")
Работать скорее всего будт, эдакий bit-bang по приему. Вопрос в микросекундных таймингах.
Если стартовать SPI по апп. прерыванию - то у него д.б наивысший приоритет и разрешена вложенность.
Иначе старт SPI может уплыть относительно начала посылки по приемной линии.
-----
Еслибы тайминги были не микросекундные, то саму линию можно было бы завести на вход аппаратного прерывания
и реализовать программный USART с нужной спецификой. Узел таймер придется задействовать.

ps
Внешний "выпрямитель саксафона" в виде контроллера, который растягивает до нужного размера стартовый импульс
+ линия задержки остального "паравоза" на соотв-ее кол-во тактов.
1 вход, 1 выход.
toweroff
Цитата(k155la3 @ Nov 14 2017, 15:11) *
Как привязать старт SPI к обработке посылки ?


Цитата
Есть идея использовать 32-битный SPI, с периодом тактирования как раз в 35мс и запускать по компаратору, который ловит старт-бит.


Цитата(k155la3 @ Nov 14 2017, 15:11) *
Еслибы тайминги были не микросекундные...

Скорость 9600, тактовая 30 МГц. Теоретически, вполне возможно с приоритетным прерыванием компаратора

Цитата(k155la3 @ Nov 14 2017, 15:11) *
Внешний "выпрямитель саксафона" в виде контроллера, который растягивает до нужного размера стартовый импульс

Скорость не меняется, одновибратор не проще? laughing.gif

Если б только прием... мне и передавать нужно в таком формате. Хотя, если одновибратор да по фронту, да две штуки их - на прием и передачу...
k155la3
Так я и предлагаю, "интеллектуальный" одновибратор в виде 8-лапкового контроллера sm.gif
Тем более что и передавать надо "с саксофоном".

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.