реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Манчестер на STM32
ArthurS
сообщение Jul 9 2018, 15:34
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 9-10-17
Пользователь №: 99 684



Дано: есть плата на STM32F070, на которой надо поднять передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). Хорошо бы без аппаратных доработок.
Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)?
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jul 9 2018, 17:35
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 722
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(ArthurS @ Jul 9 2018, 20:34) *
Дано: STM32F070, 100 кбит/с (200 кГц)
Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)?

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

По сути, МК должен через каждые 5 мкс изменять состояние одного какого-то бита в порте. МК -- достаточно быстрый, способен работать на 48 МГц. Мне кажется, что такого времени -- 5 мкс -- вполне достаточно для программного управления ногой.

Но вообще задача решается куда проще на МК фирмы Atmel (бывш.) -- на AVR и на AT91Sxxx. Они умеют генерировать меандр синхронный с выходом UART. Сигнал называется XCK. Причём генерируют даже в паузах между передачами байт. На приёмном конце это весьма актуально.

А вот, STM32, к сожалению, выдают меандр только для информационных битов USART. Во время вывода стартового и стопового битов меандр не вырабатывается. Я так думаю, что такое немного странное функционирование USART-ов в STM32 продиктовано не тем, что ST хотела предоставить разработчикам работать с Манчестером (как это было у Atmel), а возможностью перевести USART в режим, совместимый с SPI. Странное решение. Но, какое уж есть.

У меня вот тут https://wp.me/p1H7g0-1Qm кое-что есть на эту тему.



--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jul 9 2018, 21:02
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 717
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



https://electronix.ru/forum/index.php?s=&am...st&p=870651


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
aiwa
сообщение Jul 9 2018, 23:14
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 281
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Application note от Atmel. "Manchester Coding Basics".
Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf

Программа для AVR на С, поэтому легка для переноса. Используется ногодрыг.
Там два варианта.
Первый - универсальный. Используется таймер, выдающий прерывания через равные промежутки времени и соответственно чтение данных с пина порта (или запись) и соответствующая обработка.
И второй вариант: использование прерывания от порта при изменении состояния пина и таймер для измерения интервалов между событиями.
Go to the top of the page
 
+Quote Post
Priest_89
сообщение Jul 10 2018, 04:06
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 59
Регистрация: 21-03-12
Пользователь №: 70 931



Реализовывали и на гораздо более медленных 8-битных PIC16, и не только передачу, просто переключением ножек порта, но и прием. Так что с STM32 проблем быть не должно. Внешняя схема зависит от физической среды передачи.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 10 2018, 05:20
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 118
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(ArthurS @ Jul 9 2018, 18:34) *
надо поднять передачу ...

Только передача нужна, прием не нужен ? А то, если подразумевается прием из реальной линии связи, никакого STMa может не хватить, понадобится модем делать ...
Go to the top of the page
 
+Quote Post
vladec
сообщение Jul 10 2018, 07:31
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 148
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Цитата
передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц).

А почему 200кГц? Вроде как те же 100кГц должны быть.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 10 2018, 09:26
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 085
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(ArthurS @ Jul 9 2018, 18:34) *
Дано: есть плата на STM32F070, на которой надо поднять передачу данных с манчестерским кодированием со скоростью 100 кбит/с (200 кГц). Хорошо бы без аппаратных доработок.
Вопрос: можно ли это как-то сделать просто софтом или при помощи несложной дополнительной схемы (какой)?
Модулятор для манчестера очень простой, помнится даже один элемент XOR.
Учитывая достаточно большую скорость, как для софт-реализации, я бы рассматривал SPI узел + простой внешний аппаратный модулятор.
Приемник - где-то аналогично.


Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 16 2018, 20:05
Сообщение #9


Профессионал
*****

Группа: Модераторы
Сообщений: 1 949
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



манчестер легко реализуется на отправку через free run timer и ногу output compare, а прием через input capture
если dma подключить к output compare возможна большая скорость

можно и SPI приспособить без модулятора, главное чтобы пауз в отправке не было просто будет 2 бита spi на один бит манчестера
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2018 - 13:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01016 секунд с 7
ELECTRONIX ©2004-2016