Перейти к содержанию
    

UART - сэмплирование битов в первой части

Добрый день

Есть физический интерфейс на витой паре, сигнал в нем выглядит вот так

post-20514-1510655964_thumb.png

По сути, это обычный UART, но "0" передается вот в таком виде. Обычный же UART сэмплирует три отсечки в середине бита, потом уже принимается решение о "чистоте" сэмпла и его значении

Очень не хочется ловить каждый бит, пока надежда на использование стандартных аппаратных интерфейсов не совсем померла :)

Есть идея использовать 32-битный SPI, с периодом тактирования как раз в 35мс и запускать по компаратору, который ловит старт-бит. У меня Start + 8 + Parity + Stop. Получается, один отсчет стоп-бита потеряется, да и фиг с ним

 

Что еще можно придумать? Пока смотрел LPC и STM32F, L. Вроде как не нашел переназначения тактов сэмплирования (или плохо смотрел?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите описание IrDA кодеков, там времена другие, но идея похожа: логический "0" передается укороченным импульсом. Кодеки есть во многих микроконтроллерах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите описание IrDA кодеков, там времена другие, но идея похожа: логический "0" передается укороченным импульсом. Кодеки есть во многих микроконтроллерах.

да, спасибо. Судя по диаграмме, в STM32L0 такое может прокатить, нужно тестировать

Прием, вроде как, пройдет. Передача, получается, будет сдвинута на 7/16, но сама по себе останется такой, как нужно

В общем приедет подопытный кролик, напишу о результатах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Данные приходят асинхронно, те. в любой момент.

Как привязать старт SPI к обработке посылки ? (Если это узел USART, то он отрабатывает автономно и будет "успевать")

Работать скорее всего будт, эдакий bit-bang по приему. Вопрос в микросекундных таймингах.

Если стартовать SPI по апп. прерыванию - то у него д.б наивысший приоритет и разрешена вложенность.

Иначе старт SPI может уплыть относительно начала посылки по приемной линии.

-----

Еслибы тайминги были не микросекундные, то саму линию можно было бы завести на вход аппаратного прерывания

и реализовать программный USART с нужной спецификой. Узел таймер придется задействовать.

 

ps

Внешний "выпрямитель саксафона" в виде контроллера, который растягивает до нужного размера стартовый импульс

+ линия задержки остального "паравоза" на соотв-ее кол-во тактов.

1 вход, 1 выход.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как привязать старт SPI к обработке посылки ?

 

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

 

Еслибы тайминги были не микросекундные...

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

 

Внешний "выпрямитель саксафона" в виде контроллера, который растягивает до нужного размера стартовый импульс

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

 

Если б только прием... мне и передавать нужно в таком формате. Хотя, если одновибратор да по фронту, да две штуки их - на прием и передачу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так я и предлагаю, "интеллектуальный" одновибратор в виде 8-лапкового контроллера :)

Тем более что и передавать надо "с саксофоном".

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...