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 6 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 8 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Реализовывали и на гораздо более медленных 8-битных PIC16, и не только передачу, просто переключением ножек порта, но и прием. Так что с STM32 проблем быть не должно. Внешняя схема зависит от физической среды передачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба надо поднять передачу ... Только передача нужна, прием не нужен ? А то, если подразумевается прием из реальной линии связи, никакого STMa может не хватить, понадобится модем делать ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 12 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). А почему 200кГц? Вроде как те же 100кГц должны быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 10 июля, 2018 Опубликовано 10 июля, 2018 · Жалоба Дано: есть плата на STM32F070, на которой надо поднять передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). Хорошо бы без аппаратных доработок. Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)? Модулятор для манчестера очень простой, помнится даже один элемент XOR. Учитывая достаточно большую скорость, как для софт-реализации, я бы рассматривал SPI узел + простой внешний аппаратный модулятор. Приемник - где-то аналогично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 16 июля, 2018 Опубликовано 16 июля, 2018 · Жалоба манчестер легко реализуется на отправку через free run timer и ногу output compare, а прием через input capture если dma подключить к output compare возможна большая скорость можно и SPI приспособить без модулятора, главное чтобы пауз в отправке не было просто будет 2 бита spi на один бит манчестера Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 20 июля, 2018 Опубликовано 20 июля, 2018 · Жалоба манчестер легко реализуется на отправку через free run timer и ногу output compare, а прием через input capture если dma подключить к output compare возможна большая скорость можно и SPI приспособить без модулятора, главное чтобы пауз в отправке не было просто будет 2 бита spi на один бит манчестера Лучший ответ про output compare и input capture :) Еще можно DMA использовать. Правда на начало приема для синхронизации придется прерывание использовать. Зато передавать можно сразу несколько каналов :) Опять же буферизация получится естественным образом.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 20 июля, 2018 Опубликовано 20 июля, 2018 · Жалоба Помню как-то нужно было за вечер сварганить приблуду, которая промышленному кондиционеру в составе стойки с оборудованием должна была команды подавать без пульта. Пультик такой, как от телевизора. Сначала подумал накопать информации по пульту и его кодам, но как-то плюнул на все это и быстренько написал дешифратор кнопок пульта - какая-то STM32 самая мелкая, естественно на захвате таймера сделал определение длительностей переключения выхода инфракрасного приемника, выплюнул их в UART, подкорректировал ручками эти числа из-за входного тристабильного внешнего буфера. И в общем получились у меня три массива чисел-команд: включение, перевод в режим обдува и снижение температуры. Теперь обратная задача - эту последовательность скармливаю регистру сравнения и в прерывании по совпадению подсовываю следующий код длительности. В итоге при включении питания я параллельно ИК-датчику выдаю кондиционеру три команды, а он и не в курсе, что роботы захватили мир батарейки в пульте уже давно сели и никто им не пользуется :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться