Arthur 0 9 июля, 2018 Опубликовано 9 июля, 2018 · Жалоба Дано: есть плата на STM32F070, на которой надо поднять передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). Хорошо бы без аппаратных доработок. Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zhevak 0 9 июля, 2018 Опубликовано 9 июля, 2018 · Жалоба Дано: STM32F070, 100 кбит/с (200 кГц) Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)? Если камень ничего больше не делает, кроме как из своей памяти извлекает байты и отправляет их в Манчестеровском коде, то наверно можно. По сути, МК должен через каждые 5 мкс изменять состояние одного какого-то бита в порте. МК -- достаточно быстрый, способен работать на 48 МГц. Мне кажется, что такого времени -- 5 мкс -- вполне достаточно для программного управления ногой. Но вообще задача решается куда проще на МК фирмы Atmel (бывш.) -- на AVR и на AT91Sxxx. Они умеют генерировать меандр синхронный с выходом UART. Сигнал называется XCK. Причём генерируют даже в паузах между передачами байт. На приёмном конце это весьма актуально. А вот, STM32, к сожалению, выдают меандр только для информационных битов USART. Во время вывода стартового и стопового битов меандр не вырабатывается. Я так думаю, что такое немного странное функционирование USART-ов в STM32 продиктовано не тем, что ST хотела предоставить разработчикам работать с Манчестером (как это было у Atmel), а возможностью перевести USART в режим, совместимый с SPI. Странное решение. Но, какое уж есть. У меня вот тут https://wp.me/p1H7g0-1Qm кое-что есть на эту тему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 9 июля, 2018 Опубликовано 9 июля, 2018 · Жалоба https://electronix.ru/forum/index.php?s=&am...st&p=870651 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 9 июля, 2018 Опубликовано 9 июля, 2018 · Жалоба Application note от Atmel. "Manchester Coding Basics". Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf Программа для AVR на С, поэтому легка для переноса. Используется ногодрыг. Там два варианта. Первый - универсальный. Используется таймер, выдающий прерывания через равные промежутки времени и соответственно чтение данных с пина порта (или запись) и соответствующая обработка. И второй вариант: использование прерывания от порта при изменении состояния пина и таймер для измерения интервалов между событиями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Priest_89 2 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Реализовывали и на гораздо более медленных 8-битных PIC16, и не только передачу, просто переключением ножек порта, но и прием. Так что с STM32 проблем быть не должно. Внешняя схема зависит от физической среды передачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба надо поднять передачу ... Только передача нужна, прием не нужен ? А то, если подразумевается прием из реальной линии связи, никакого STMa может не хватить, понадобится модем делать ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 6 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). А почему 200кГц? Вроде как те же 100кГц должны быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Дано: есть плата на STM32F070, на которой надо поднять передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). Хорошо бы без аппаратных доработок. Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)? Модулятор для манчестера очень простой, помнится даже один элемент XOR. Учитывая достаточно большую скорость, как для софт-реализации, я бы рассматривал SPI узел + простой внешний аппаратный модулятор. Приемник - где-то аналогично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба манчестер легко реализуется на отправку через free run timer и ногу output compare, а прием через input capture если dma подключить к output compare возможна большая скорость можно и SPI приспособить без модулятора, главное чтобы пауз в отправке не было просто будет 2 бита spi на один бит манчестера Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 3 20 июля, 2018 Опубликовано 20 июля, 2018 · Жалоба манчестер легко реализуется на отправку через free run timer и ногу output compare, а прием через input capture если dma подключить к output compare возможна большая скорость можно и SPI приспособить без модулятора, главное чтобы пауз в отправке не было просто будет 2 бита spi на один бит манчестера Лучший ответ про output compare и input capture :) Еще можно DMA использовать. Правда на начало приема для синхронизации придется прерывание использовать. Зато передавать можно сразу несколько каналов :) Опять же буферизация получится естественным образом.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 129 20 июля, 2018 Опубликовано 20 июля, 2018 · Жалоба Помню как-то нужно было за вечер сварганить приблуду, которая промышленному кондиционеру в составе стойки с оборудованием должна была команды подавать без пульта. Пультик такой, как от телевизора. Сначала подумал накопать информации по пульту и его кодам, но как-то плюнул на все это и быстренько написал дешифратор кнопок пульта - какая-то STM32 самая мелкая, естественно на захвате таймера сделал определение длительностей переключения выхода инфракрасного приемника, выплюнул их в UART, подкорректировал ручками эти числа из-за входного тристабильного внешнего буфера. И в общем получились у меня три массива чисел-команд: включение, перевод в режим обдува и снижение температуры. Теперь обратная задача - эту последовательность скармливаю регистру сравнения и в прерывании по совпадению подсовываю следующий код длительности. В итоге при включении питания я параллельно ИК-датчику выдаю кондиционеру три команды, а он и не в курсе, что роботы захватили мир батарейки в пульте уже давно сели и никто им не пользуется :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться