1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ecbm-fur

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
FUR-V1使用手册.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 4 месяцев назад 2764b8a

FUR-V2.0: руководство по использованию

FUR — это сокращение от Fast-Uart-Reg, что означает «быстрый последовательный порт-регистр». Три слова в аббревиатуре описывают особенности этого компонента:

  1. Быстрый: протоколы связи FUR основаны на ASCII-коде, который позволяет быстрее считывать данные по сравнению с 16-битными кодами.
  2. Последовательный порт: компонент FUR основан на аппаратном обеспечении последовательного порта, которое присутствует в большинстве микроконтроллеров. Если вы умеете работать с последовательным портом, то сможете использовать FUR.
  3. Регистр: концепция регистра используется для хранения и обработки данных в FUR. Это будет подробно объяснено ниже.

Понимание концепции Прежде чем начать использовать FUR, необходимо понять концепцию регистров в нём. В микроконтроллерах регистры представляют собой логические устройства или физические элементы на кристалле. Например, SBUF — это регистр данных последовательного порта, который имеет адрес 0x99 и может быть адресован напрямую через инструкции. В FUR используются только программные регистры. Они могут быть связаны с физическими регистрами или существовать виртуально. Версия V2.0 полностью раскрывает возможности сопоставления и позволяет свободно реализовывать пользовательские функции регистров. Если вам всё ещё неясно, рекомендуется сначала ознакомиться с протоколом и постепенно изучать FUR.

Протокол FUR использует протокол переменной длины, обеспечивая максимальную гибкость. Общий формат протокола следующий: [адрес@номер] операция = данные;

  • Адрес: адрес регистра, 16 бит, допустимые значения от 0 до 65535.
  • Номер: номер микроконтроллера при многомашинной коммуникации, 8 бит, от 0 (широковещательный адрес) до 255.
  • Операция: поддерживает «+», «−», «*», «/», «&», «|», «^», операции с битами и чтение/запись.
  • Данные: данные для операций над регистрами, 16 бит или 16-битное шестнадцатеричное значение от 0x0000 до 0xFFFF.

Операция сложения

[адрес@номер]+=данные;

Например, чтобы увеличить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]+=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]+=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]+=7;.

Операция вычитания

[адрес@номер]-=данные;

Например, чтобы уменьшить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]-=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]-=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]-=7;.

Операция умножения

[адрес@номер]*=данные;

Например, чтобы умножить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]*=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]*=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]*=7;.

Операция деления

[адрес@номер]/=данные;

Например, чтобы разделить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]/=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]/=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]/=7;.

Операция И

[адрес@номер]&=данные;

Например, чтобы установить младшие 4 бита содержимого регистра с адресом 16 на микроконтроллере с номером 2 равными 0, отправьте команду [16@2]&=0xFFF0; или [16@2]&=65520;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@2]&=0xFFF0; или [16@2]&=65520;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16@2]&=0xFFF0; или [16@2]&=65520;.

Операция ИЛИ

[адрес@номер]|=данные;

Например, чтобы установить младшие 4 бита содержимого регистра с адресом 16 на микроконтроллере с номером 2 равными 1, отправьте команду [16@2]|=0x000F;, [16@2]|=15; или даже [16@2]|=0xF;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]|=0x000F;, [16@0]|=15; или даже [16@0]|=0xF;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]|=0x000F;, [16]|=15; или даже [16]|=0xF;.

Операция исключающего ИЛИ

[адрес@номер]^=данные;

Например, чтобы инвертировать D7 бит содержимого регистра с адресом 16 на микроконтроллере с номером 2, отправьте команду [16@2]^=0x0080;, [16@2]^=128; или даже [16@2]^=0x80;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]^=0x0080;, [16@0]^=128; или даже [16@0]^=0x80;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]^=0x0080;, [16]^=128; или даже [16]^=0x80;.

Операции с битами

[адрес@номер].параметр=данные;

Например, чтобы установить D7 бит содержимого регистра с адресом 16 на микроконтроллере с номером 2 равным 1, отправьте команду [16@2].7=1;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0].7=1;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16].7=1;.

Операция чтения

[адрес@номер]?;

Например, чтобы прочитать содержимое регистра с адресом 16 на микроконтроллере с номером 2, отправьте команду [16@2]?;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]?;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]?;.

Операция записи

[адрес@номер]=данные;

Например, чтобы записать значение 596 в регистр с адресом 16 на микроконтроллере с номером 2, отправьте команду [16@2]=596;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]=596;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]=596;.

Заключение

Основные операции FUR аналогичны обычным операциям с переменными, поэтому их легко запомнить. В следующей таблице приведены три примера, иллюстрирующие эту точку зрения:

Тип операции Операция с переменной Операция FUR
Присвоение value=156; [12]=156;
Сложение value+=156; [12]+=156;
Исключающее ИЛИ value^=5; [12]^=5;

Методы переноса и низкоуровневое подключение

API функций

Дополнительные команды

Помимо перечисленных команд, FUR также предоставляет несколько часто используемых команд.

Запрос ID

[id]?; Обратите внимание: когда используется один к одному, эту команду можно использовать для запроса идентификационного номера целевого устройства. Однако в конфигурации один ко многим её нельзя использовать, поскольку несколько ведомых устройств могут одновременно реагировать на команду, вызывая хаос на шине.

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/ecbm-fur.git
git@gitlife.ru:oschina-mirror/ecbm-fur.git
oschina-mirror
ecbm-fur
ecbm-fur
master