Протокол интерфейса
Интерфейс UART у Tibbit #43-1 работает в одном из двух режимов связи:
- Командный режим (по умолчанию) позволяет хост-системе настраивать модуль Tibbit, а также выполнять одиночные («разовые») аналого-цифровые преобразования.
- Режим потоковой передачи данных: модуль непрерывно выводит измерения АЦП для включённых каналов с заданной частотой выборки и в выбранном формате.
В командном режиме хост-система общается с модулем по протоколу «команда - ответ». Все команды и ответы имеют следующий формат:
| STX | Команда или ответ | CR |
Символы STX (код ASCII 0x02) и CR (код ASCII 0x0D) образуют инкапсуляцию пакета команды или ответа. Всё, что находится перед STX и после CR, игнорируется. Неполные команды и ответы (STX без CR) игнорируются.
Tibbit #43-1 отправляет ответ на каждую правильно инкапсулированную команду хоста, кроме команды D.
В материале ниже инкапсулирующие символы <STX> и <CR> не показаны, но их наличие всегда подразумевается.
Доступные команды
| Таблица 3 - доступные команды | |
| Команда | Описание |
| Команды переключения режима связи | |
| C | Переключает Tibbit #43-1 в командный режим. |
| D | Переключает Tibbit #43-1 в режим потоковой передачи данных. На эту команду ответ не отправляется. |
| Пользовательские команды настройки аналого-цифрового преобразования и потоковой передачи. Эти команды применяются к параметрам в RAM (текущим). | |
| SM | Задаёт режим выборки (несимметричный или дифференциальный). Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. |
| SD | Задаёт формат вывода данных. Применяется только к режиму потоковой передачи данных. |
| SR | Задаёт частоту выборки. Применяется только к режиму потоковой передачи данных. |
| SC | Включает указанные каналы для выборки. Применяется только к режиму потоковой передачи данных. |
| Команды калибровки (калибровка выполняется на заводе - не меняйте эти параметры, если не понимаете, что делаете). Эти команды применяются к параметрам в RAM (текущим). | |
| SA | Задаёт значения параметров A. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. |
| SBP | Задаёт значения параметров BP. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. |
| SBN | Задаёт значения параметров BN. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. |
| Команды чтения параметров из RAM и команды, связанные с EEPROM | |
| GC | Возвращает текущие значения параметров в RAM (текущих). |
| GE | Возвращает значения параметров в EEPROM (после сброса). Выполнение этой команды не меняет значения параметров в RAM (текущих). |
| SE | Копирует параметры из RAM (текущие) в параметры EEPROM (после сброса). |
| FE | Копирует параметры из EEPROM (после сброса) в параметры RAM (текущие). |
| SF | Возвращает все параметры к заводским значениям по умолчанию (включая запрограммированные на заводе значения калибровки). Эта команда перезаписывает параметры в RAM (текущие) и в EEPROM (после сброса). |
| Прочие команды | |
| RA | Выполняет одиночное считывание с указанных каналов, оставаясь в командном режиме. Данные возвращаются в формате ASCII. |
| RH | Выполняет одиночное считывание с указанных каналов, оставаясь в командном режиме. Данные возвращаются в шестнадцатеричном формате. |
| V | Возвращает версию прошивки микроконтроллера PIC. |
| Таблица 4 - стандартные ответы | |
| Ответ | Описание |
| A | Команда принята. Если ответ содержит данные, они следуют за кодом ответа A. |
| C | Синтаксическая ошибка. После этого кода ответа дополнительных данных не бывает. |
| O | Параметр вне допустимого диапазона. После этого кода ответа дополнительных данных не бывает. |
| F | Сбой выполнения. Может быть связан только с операциями с EEPROM. После этого кода ответа дополнительных данных не бывает. |
Команды переключения режима связи
| Команда | C |
| Описание | Предписывает Tibbit #43-1 выйти из режима потоковой передачи данных и перейти в командный режим. Если устройство было в режиме потоковой передачи данных, оно прекращает отправку потока и начинает принимать команды от хоста. Это единственная команда, которая распознаётся, пока модуль находится в режиме потоковой передачи данных; все остальные команды игнорируются. Примечание: после включения питания (сброса) модуль находится в командном режиме. |
| Синтаксис | Команда: C Ответ: A |
| Команда | D |
| Описание | Предписывает Tibbit #43-1 выйти из командного режима и перейти в режим потоковой передачи данных. Это единственная команда, на которую модуль не отправляет ответ. Вместо этого потоковая передача данных начинается сразу после получения команды. Примечание: после включения питания (сброса) модуль находится в командном режиме. |
| Синтаксис | Команда: D Ответ: (модуль сразу начнёт передавать поток данных) |
Пользовательские команды настройки преобразования АЦП и потоковой передачи
| Команда | SM |
| Описание | Задаёт режим выборки. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SMp, где p - режим выборки: 0 - несимметричный (доступно четыре канала), 1 - дифференциальный (доступно два канала) Ответ: A |
| Значение по умолчанию | 0 |
| Пример | SM1 (выбирает дифференциальный режим) |
| Команда | SD |
| Описание | Задаёт формат вывода данных. Применяется только к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SDp, где p - формат вывода данных: 0 - ASCII, 1 - двоичный, 2 - шестнадцатеричный Ответ: A |
| Значение по умолчанию | 0 |
| Пример | SD2 (выбирает шестнадцатеричный формат данных) |
| Команда | SR |
| Описание | Задаёт частоту выборки. Применяется только к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SRp, где p - частота выборки, выраженная числом групп выборки в секунду, в диапазоне от 1 до 1000 Примечание: так как группа выборки включает результаты аналого-цифрового преобразования для каждого включённого канала, в каждой такой группе может быть до четырёх значений. Частота 1000 выборок в секунду допустима при включённом двоичном формате вывода (см. команду SD) и только одном активном канале АЦП. Максимальные рекомендуемые частоты выборки в зависимости от формата вывода данных и числа используемых каналов приведены в разделе Технические характеристики. |
| Значение по умолчанию | 1 |
| Пример | SR200 (200 групп выборки в секунду - комфортная частота выборки для любого формата вывода данных и любого числа активных каналов) |
| Команда | SC |
| Описание | Включает указанные каналы для выборки. Применяется только к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SCp, где p - список активных каналов от 1 до 4, разделённых запятыми Примечание 1: в дифференциальном режиме (см. команду SM) доступны только CH1 и CH2. Если в дифференциальном режиме указать CH3 и CH4, команда будет отклонена с кодом состояния O. Примечание 2: каналы опрашиваются в том порядке, в котором они перечислены в этой команде. Это влияет не только на время выборки АЦП, но и на порядок, в котором данные каналов отправляются в режиме потоковой передачи данных. |
| Значение по умолчанию | 1,2,3,4 |
| Пример | SC4,2 (включить CH2 и CH2; каналы будут опрашиваться в порядке 4-2) |
Команды калибровки
Все параметры калибровки задаются на заводе - не меняйте их, если не понимаете, что делаете!
Эти команды позволяют откалибровать линейность и смещение АЦП. Обычно они используются только при производстве модуля, но остаются доступными, и с их помощью можно выполнить повторную калибровку устройства.
Параметры A, BP и BN используются для калибровки отдельных каналов. В таблице ниже:
- Vo - скомпенсированный выход канала АЦП
- Vi - усреднённый необработанный выход канала АЦП
| Таблица 5 - формулы калибровки | |
| Несимметричный режим, положительные входные напряжения | Vo = 0.0078125 × A × Vi + 0.00244140625 × BP |
| Несимметричный режим, отрицательные входные напряжения | Vo = 0.0078125 × A × Vi + 0.00244140625 × BN |
| Дифференциальный режим, положительные входные напряжения | Vo = 0.0078125 × A × Vi + 2 × 0.00244140625 × BP |
| Дифференциальный режим, отрицательные входные напряжения | Vo = 0.0078125 × A × Vi + 2 × 0.00244140625 × BN |
| Команда | SA |
| Описание | Задаёт значения параметров A. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SAp, где p - список из шести значений, разделённых запятыми: четыре для несимметричных каналов 1~4 и два для дифференциальных каналов 1 и 2 Ответ: A |
| Значения по умолчанию | Предустановлены на заводе в процессе калибровки |
| Пример | Команда: SA128,128,128,128,128,128 (задаёт параметр A следующим образом: Несимметричный канал 1: A=128 |
| Команда | SBP |
| Описание | Задаёт значения параметров BP. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SBPp, где p - список из шести значений, разделённых запятыми: четыре для несимметричных каналов 1~4 и два для дифференциальных каналов 1 и 2 Ответ: A |
| Значения по умолчанию | Предустановлены на заводе в процессе калибровки |
| Пример | SBP8,8,8,8,8,4,3 (задаёт параметр BP следующим образом: Несимметричный канал 1: BP=8 |
| Команда | SBN |
| Описание | Задаёт значения параметров BN. Применяется к одиночным считываниям командами RA и RH, а также к режиму потоковой передачи данных. Этот параметр хранится в RAM и применяется немедленно. |
| Синтаксис | Команда: SBNp, где p - список из шести значений, разделённых запятыми: четыре для несимметричных каналов 1~4 и два для дифференциальных каналов 1 и 2 Ответ: A |
| Значения по умолчанию | Предустановлены на заводе в процессе калибровки |
| Пример | SBN5,5,5,5,2,2 (задаёт параметр BN следующим образом: Несимметричный канал 1: BN=5 |
Команды чтения параметров из RAM и команды, связанные с EEPROM
| Команда | GC |
| Описание | Возвращает текущие значения всех параметров в RAM (текущих). |
| Синтаксис | Команда: GC Ответ: Asetting_str, где setting_str содержит список значений параметров в RAM (текущих), разделённых точкой с запятой, в формате имя=значение(я); если у параметра несколько значений, они разделяются запятыми. Каждое имя соответствует команде, которой изменяется значение параметра. Например, «SR=1000» означает, что частота выборки (см. команду SR) равна 1000. |
| Пример | Команда: GC Ответ: ASR=1000;SM=1;SC=1,2;SD=0;SA=128,128,128,128,128,128;SBP=8,8,8,8,4,3;SBN=5,5,5,5,2,2; |
| Команда | GE |
| Описание | Возвращает значения параметров в EEPROM (после сброса). Выполнение этой команды не меняет значения параметров в RAM (текущих). |
| Синтаксис | Команда: GE Ответ: Asetting_str, описание и пример setting_str см. в команде GC |
| Команда | SE |
| Описание | Копирует параметры из RAM (текущие) в параметры EEPROM (после сброса). При следующей загрузке модуля эти значения будут скопированы в RAM и использованы как рабочие параметры. |
| Синтаксис | Команда: SE Примечание: эта команда выполняет запись в EEPROM модуля. Tibbo рекомендует быть с ней предельно осторожными, чтобы не допустить чрезмерного количества записей в EEPROM. Хотя современные EEPROM допускают значительное число циклов записи, оно всё же ограничено. Подробнее см. Продление и оценка срока службы EEPROM. Если запись в EEPROM не удалась, команда вернёт код состояния F. |
| Команда | FE |
| Описание | Копирует параметры из EEPROM (после сброса) в параметры RAM (текущие). После этого модуль будет работать так, как будто только что загрузился. Это потому, что параметры, хранящиеся в EEPROM, также загружаются при старте. |
| Синтаксис | Команда: FE Примечание: целостность параметров EEPROM (после сброса) защищена контрольной суммой. Если проверка контрольной суммы при выполнении этой команды не проходит, ни одно значение параметров EEPROM не копируется в RAM, а команда возвращает код состояния F. |
| Команда | SF |
| Описание | Возвращает все параметры к заводским значениям по умолчанию (включая запрограммированные на заводе значения калибровки). Эта команда перезаписывает параметры в RAM (текущие) и в EEPROM (после сброса). |
| Синтаксис | Команда: FE Примечание 1: целостность параметров EEPROM (после сброса) защищена контрольной суммой. Если проверка контрольной суммы при выполнении этой команды не проходит, ни одно значение параметров EEPROM не копируется в RAM, а команда возвращает код состояния F. Примечание 2: эта команда выполняет запись в EEPROM модуля. Tibbo рекомендует быть с ней предельно осторожными, чтобы не допустить чрезмерного количества записей в EEPROM. Хотя современные EEPROM допускают значительное число циклов записи, оно всё же ограничено. Подробнее см. Продление и оценка срока службы EEPROM. Если запись в EEPROM не удалась, команда вернёт код состояния F. |
Прочие команды
| Команда | RA |
| Описание | Выполняет одиночное считывание с указанных каналов, оставаясь в командном режиме. Данные возвращаются в формате ASCII. |
| Синтаксис | Команда: RAp, где p - список активных каналов от 1 до 4, разделённых запятыми Примечание 1: в дифференциальном режиме (см. команду SM) доступны только CH1 и CH2. Если в дифференциальном режиме указать CH3 и CH4, команда будет отклонена с кодом состояния O. Примечание 2: каналы опрашиваются в том порядке, в котором они перечислены в этой команде. |
| Пример | Команда: RA4,1 (в несимметричном режиме) Ответ: A7.2800,-4.2713; (канал 4: 7.2800V, канал 1: -4.2713V) |
| Команда | RH |
| Описание | Выполняет одиночное считывание с указанных каналов, оставаясь в командном режиме. Данные возвращаются в шестнадцатеричном формате. |
| Синтаксис | Команда: RAp, где p - список активных каналов от 1 до 4, разделённых запятыми Примечание 1: в дифференциальном режиме (см. команду SM) доступны только CH1 и CH2. Если в дифференциальном режиме указать CH3 и CH4, команда будет отклонена с кодом состояния O. Примечание 2: каналы опрашиваются в том порядке, в котором они перечислены в этой команде. |
| Пример | Команда: RA4,1 (в несимметричном режиме) Ответ: A099B,666A; (канал 4: 099B, канал 1: 666A) |
| Команда | V |
| Описание | Возвращает версию прошивки микроконтроллера PIC. |
| Синтаксис | Команда: V Ответ: Aver_string |
| Пример | Команда: V Ответ: ATibbo Inc. Tibbit#43-1 FW1.1b |