toweroff 0 14 ноября, 2017 Опубликовано 14 ноября, 2017 · Жалоба Добрый день Есть физический интерфейс на витой паре, сигнал в нем выглядит вот так По сути, это обычный UART, но "0" передается вот в таком виде. Обычный же UART сэмплирует три отсечки в середине бита, потом уже принимается решение о "чистоте" сэмпла и его значении Очень не хочется ловить каждый бит, пока надежда на использование стандартных аппаратных интерфейсов не совсем померла :) Есть идея использовать 32-битный SPI, с периодом тактирования как раз в 35мс и запускать по компаратору, который ловит старт-бит. У меня Start + 8 + Parity + Stop. Получается, один отсчет стоп-бита потеряется, да и фиг с ним Что еще можно придумать? Пока смотрел LPC и STM32F, L. Вроде как не нашел переназначения тактов сэмплирования (или плохо смотрел?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 17 14 ноября, 2017 Опубликовано 14 ноября, 2017 · Жалоба Посмотрите описание IrDA кодеков, там времена другие, но идея похожа: логический "0" передается укороченным импульсом. Кодеки есть во многих микроконтроллерах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 14 ноября, 2017 Опубликовано 14 ноября, 2017 · Жалоба Посмотрите описание IrDA кодеков, там времена другие, но идея похожа: логический "0" передается укороченным импульсом. Кодеки есть во многих микроконтроллерах. да, спасибо. Судя по диаграмме, в STM32L0 такое может прокатить, нужно тестировать Прием, вроде как, пройдет. Передача, получается, будет сдвинута на 7/16, но сама по себе останется такой, как нужно В общем приедет подопытный кролик, напишу о результатах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 14 ноября, 2017 Опубликовано 14 ноября, 2017 · Жалоба Данные приходят асинхронно, те. в любой момент. Как привязать старт SPI к обработке посылки ? (Если это узел USART, то он отрабатывает автономно и будет "успевать") Работать скорее всего будт, эдакий bit-bang по приему. Вопрос в микросекундных таймингах. Если стартовать SPI по апп. прерыванию - то у него д.б наивысший приоритет и разрешена вложенность. Иначе старт SPI может уплыть относительно начала посылки по приемной линии. ----- Еслибы тайминги были не микросекундные, то саму линию можно было бы завести на вход аппаратного прерывания и реализовать программный USART с нужной спецификой. Узел таймер придется задействовать. ps Внешний "выпрямитель саксафона" в виде контроллера, который растягивает до нужного размера стартовый импульс + линия задержки остального "паравоза" на соотв-ее кол-во тактов. 1 вход, 1 выход. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 14 ноября, 2017 Опубликовано 14 ноября, 2017 · Жалоба Как привязать старт SPI к обработке посылки ? Есть идея использовать 32-битный SPI, с периодом тактирования как раз в 35мс и запускать по компаратору, который ловит старт-бит. Еслибы тайминги были не микросекундные... Скорость 9600, тактовая 30 МГц. Теоретически, вполне возможно с приоритетным прерыванием компаратора Внешний "выпрямитель саксафона" в виде контроллера, который растягивает до нужного размера стартовый импульс Скорость не меняется, одновибратор не проще? :laughing: Если б только прием... мне и передавать нужно в таком формате. Хотя, если одновибратор да по фронту, да две штуки их - на прием и передачу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 14 ноября, 2017 Опубликовано 14 ноября, 2017 · Жалоба Так я и предлагаю, "интеллектуальный" одновибратор в виде 8-лапкового контроллера :) Тем более что и передавать надо "с саксофоном". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться