23 KiB
title | description | published | date | tags | editor | dateCreated |
---|---|---|---|---|---|---|
Интерфейс ввода/вывода GPIO_for_Speeduino | true | 2021-01-04T16:38:10.086Z | markdown | 2021-01-04T15:47:47.591Z |
Интерфейс ввода/вывода общего назначения (general-purpose input/output) GPIO for Speeduino
Даррен Сиепка
Что это?
GPIO для Speeduino - это семейство универсальных программируемых модулей ввода и вывода, которые могут использоваться как совместно с ECU двигателя Speeduino, так и автономно. Модули программируются через Tunerstudio либо через последовательный порт, либо через интегрированную сеть CanBus (только некоторые варианты)
Модули могут использовать несколько различных типов плат процессоров, в том числе arduino, tensy и stm32.
Операции ввода-вывода программируются логическими, & lt;, & gt;, = и побитовыми И. некоторые варианты предлагают 2 или даже 3 логических условия соединения.
Версии
GPIO MINI V0.001
Данное микропрограммное обеспечение поддерживает до 16 выходных каналов, 16 входных каналов и 16 аналоговых каналов от локальных источников, на которые распространяется функция MCU. В настоящее время поддерживаются MCU Arduino Pro-Mini, Arduino Uno и Arduino Mega2560. Выходные каналы могут быть активированы через одно условие с логическими операциями & lt;, & gt; и = В этой версии поддерживаются только встроенные (локальные) io.
GPIO MINI V0.002
Это микропрограммное обеспечение имеет те же функции, что и V0.001, но с возможностью доступа к значениям данных выходного канала от ECU Speeduino, подключенного непосредственно с помощью поддержки Speeduino Serial3. В настоящее время эта микропрограмма поддерживается только Arduino Mega2560
GPIO MINI V0.003
Это встроенное ПО позволяет Speeduino получать доступ к входам устройства GPIO (как цифровым, так и аналоговым), отображаемым в TunerStudio или регистрируемым в журнале. Опять же в этой версии устройство GPIO все еще подключено непосредственно к Speeduino через Serial3.This прошивку в настоящее время поддерживает только Arduino Mega2560
Установка программного обеспечения
Последние версии GPIO можно загрузить здесь https://github.com/Autohome2/Speeduino-GPIO
Если вы устанавливаете одну из версий с помощью CANBUS, вам потребуется установить библиотеки в Arduino IDE, если вы не установили текущую версию. Библиотеки включены в загрузку.
Используемые библиотеки:
Canbus от CoryJFowler (for spi canbus modules)1
Flexcan от Pawelsky (for Teensy onboard Can)2
Библиотека flexcan включена в установку Teensyduino в Arduino IDE3
Файл Tunerstudio INI и базовая настройка находятся в папке ссылок для конкретного варианта, который вы хотите установить при загрузке. ПРИМЕЧАНИЕ. Очень важно установить правильный ini и базовый msq для выбранного микропрограммного обеспечения (прошивки).
Организация данных в реальном времени
Некоторые версии GPIO поддерживают возможность удаленного доступа к данным в реальном времени с портов ввода-вывода GPIO через порт Serial3 или Canbus (см. версии модели). Данные структурированы как адрес смещения для устройства GPIO real canID.
1 - 32
Цифровые входы от 1 до 32. Они посылают значение 1023, если включено, и 0, когда выключено.
33 - 64
Цифровые выходы от 1 до 32. Они имеют значение ON, равное 1023, и значение Off, равное 0.
65 - 81
Аналоговые входы от 0 до 15. Эти команды посылают значение в диапазоне от 0 до 1024.
пример: если GPIO real canID = = 0x105 для запроса аналогового 0, вы бы запросили данные от 261dec + 65dec = = 326dec = = 0x146
Данные находятся в байтах 0 и 1 из 8 переданных данных, 0 - lsb 1 - msb.
Конфигурация
Конфигурация устройства
Конфигурацию устройства можно найти в Tunerstudio закладке "Settings" затем выберите "device configuration"
- Device Real CanID - Адрес HEX 11bit Can устройства GPIO
- Board Pin Layout - Компоновка Mcu и платы, используемая GPIO
![Board_pin_layout.jpg Board_pin_layout.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Board_pin_layout.jpg)
Выберите соответствующий тип mcu и платы для блока GPIO. Загрузка прошивки имеет несколько конфигураций плат, предварительно установленных в коде. В зависимости от того, с каким MCU будет скомпилировано микропрограммное обеспечение, зависит, доступна ли эта конфигурация для использования.
- Speeduino Connection Type
- Not used - Этот параметр используется, если GPIO является автономным устройством
- Via Serial3 - Эта настройка используется, если GPIO подключается непосредственно с помощью последовательного соединения к вторичному последовательному порту Speeduino (обычно Serial3).
- Via CanBus - Этот параметр устанавливается, если GPIO подключен с помощью CanBus. Предварительно установлено значение 11 бит 250 кбит/с.
![Speeduino_connection.jpg Speeduino_connection.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Speeduino_connection.jpg)
- Speeduino Base CanBus Address - Адрес HEX 11bit Can ECU Speeduino
Программируемая конфигурация ввода/вывода
С Programmable Outputs закладки можно выбрать для настройки универсальных выходов Universal outputs или Внешний ввод-вывод External IO
![Prog_outputs1.jpg Prog_outputs1.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Prog_outputs1.jpg)
Настройка выходных данных
Эта страница используется для настройки универсальных выходов Universal Outputs.
![Universal_outputs.jpg Universal_outputs.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Universal_outputs.jpg)
- ' Output port' - Это выходной порт устройства GPIO. Чтобы сначала выбрать порт из списка выходных портов, настройте параметр для этого порта, а затем нажмите кнопку "" Записать "", чтобы записать изменения на устройство GPIO (если оно работает).
- ' Port settings'
-
- ' Enabled' - Включает этот выходной порт
- ' Power on value' - Активное состояние порта при запуске устройства GPIO
- ' Active value' - Активное выходное состояние (активное высокое или активное низкое)
-
- ' Active conditions' Активные условия
-
- ' Controller' - Это исправлено как имя используемого устройства GPIO
- ' Output channel' - Это либо выходные данные в реальном времени с локального устройства GPIO, либо данные с внешних устройств. (see external data configuration)).
- ' Logic option' - Логическая операция над исходным значением по сравнению с пороговым значением, выберите <,>, или =
- ' Threshold' - Пороговое значение Trigger для выходных данных и исходных данных.
- ''' Hysteresis ''' - Порог и пороговое значение
-
Настройка внешних источников данных
Эта страница используется для настройки внешних источников данных.
![Externalio_config.jpg Externalio_config.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Externalio_config.jpg)
- External Input Channel Selection - Включение/отключение внешнего входного канала
- Source Base CanID - 11-битный HEX CanID устройства, из которого должны быть получены данные.
Пример: На рисунке это значение равно 0x200, что было адресом Speeduino Base Can, установленным в "конфигурации устройства"
- Data from outchannel - Номер исходящего канала (из исходящих каналов в реальном времени), данные НАЧИНАЮТСЯ в.
Если доступ к устройству осуществляется через CANBUS, то это смещение, добавленное к базовому адресу + 1 EG: на рисунке 7, это даст Can-адрес 0x208 или если прямое соединение со Speeduino собирает данные из внешнего канала 7 (tpsADC)
- no: of bytes - Количество байтов, которое имеют данные, выберите 1 или 2 (значение 1 байта имеет диапазон от 0 до 254, 2 байта от 0 до 1024).
Пример: На снимке видно 1. Это происходит из-за того, что внешний канал 7 (tpsADC) имеет длину всего 1 байт со значением от 0 до 254.
Страница тестирования аппаратных средств Hardware Test Page
Чтобы увидеть этот параметр, необходимо включить его в свойствах проекта
![Project_properties_select.jpg Project_properties_select.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Project_properties_select.jpg)
![Project_properties_gpio.jpg Project_properties_gpio.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Project_properties_gpio.jpg)
Затем на главном тире появится новая вкладка
![Hardware_test_tab_gpio.jpg Hardware_test_tab_gpio.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Hardware_test_tab_gpio.jpg)
Аппаратное обеспечение тестового вывода Test Output Hardware
Это позволит по отдельности включать/отключать доступные выходные порты. Доступность зависит от выбранной платы и конфигурации контактов. Для запуска тестирования нажмите кнопку "Enable test mode". Выходные порты, которые могут быть протестированы, будут не серыми и могут быть включены/выключены. После тестирования нажмите кнопку "Stop test mode" или просто закройте окно. Все активированные выходы будут отключены.
![Hardware_output_test.jpg Hardware_output_test.jpg](/speeduino/wiki.js/media/commit/346ecd0419b3f8330e5cb8ace6aa44d82df44afe/ru/Hardware_output_test.jpg)
Создание новых компоновок плат/конфигураций контактов Creating new board layouts/pin configurations
В GPIO можно легко добавлять новые типы плат. Требуется внести изменения в два файла, "Utils.ino" и файл "Tunerstudio.ini"
Utils.ino
В файле utils.ino представлены отдельные конфигурации для каждой опции платы НАПРИМЕР:
#if defined(CORE_AVR)
case 1: // mega2560 demo V0.001
pinOut[1] = 2; //
pinOut[2] = 3; //
pinOut[3] = 4; //
pinOut[4] = 5; //
pinOut[5] = 255; //
pinOut[6] = 255; //
pinOut[7] = 255; //
pinOut[8] = 255; //
pinOut[9] = 255; //
pinOut[10] = 255; //
pinOut[11] = 255; //
pinOut[12] = 255; //
pinOut[13] = 13; //
pinOut[14] = 255; //
pinOut[15] = 255; //
pinOut[16] = 255; //
pinIn[1] = 6;
pinIn[2] = 7;
pinIn[3] = 8;
pinIn[4] = 9;
pinIn[5] = 255;
pinIn[6] = 255;
pinIn[7] = 255;
pinIn[8] = 255;
pinIn[9] = 255;
pinIn[10] = 255;
pinIn[11] = 255;
pinIn[12] = 255;
pinIn[13] = 255;
pinIn[14] = 255;
pinIn[15] = 255;
pinIn[16] = 255;
pinAin[1] = A0;
pinAin[2] = A1;
pinAin[3] = A2;
pinAin[4] = A3;
pinAin[5] = A4;
pinAin[6] = A5;
pinAin[7] = A6;
pinAin[8] = A7;
pinAin[9] = A8;
pinAin[10] = A9;
pinAin[11] = A10;
pinAin[12] = A11;
pinAin[13] = A12;
pinAin[14] = A13;
pinAin[15] = A14;
pinAin[16] = A15;
break;
#endif
Это запись для позиции 1 платы STD mega2560.
Для добавления новой платы создайте новый корпус со всеми вышеуказанными контактами. Убедитесь, что вы изменили определение MCU, если он не является mega2560, на MCU, с которым вы компилируете (в настоящее время поддерживается только mega2560). Все неиспользуемые контакты должны иметь значение 255. EG: добавление новой записи под названием "mynewboard" в позицию 6.
#if defined(CORE_AVR)
case 6: // mynewboard
pinOut[1] = 2; //
pinOut[2] = 3; //
pinOut[3] = 255; //
pinOut[4] = 5; //
pinOut[5] = 255; //
pinOut[6] = 255; //
pinOut[7] = 255; //
pinOut[8] = 255; //
pinOut[9] = 255; //
pinOut[10] = 4; //
pinOut[11] = 255; //
pinOut[12] = 255; //
pinOut[13] = 13; //
pinOut[14] = 255; //
pinOut[15] = 255; //
pinOut[16] = 255; //
pinIn[1] = 6;
pinIn[2] = 7;
pinIn[3] = 8;
pinIn[4] = 255;
pinIn[5] = 255;
pinIn[6] = 255;
pinIn[7] = 255;
pinIn[8] = 255;
pinIn[9] = 255;
pinIn[10] = 9;
pinIn[11] = 255;
pinIn[12] = 255;
pinIn[13] = 255;
pinIn[14] = 255;
pinIn[15] = 255;
pinIn[16] = 255;
pinAin[1] = A0;
pinAin[2] = A1;
pinAin[3] = A2;
pinAin[4] = A11;
pinAin[5] = A4;
pinAin[6] = A7;
pinAin[7] = A6;
pinAin[8] = 255;
pinAin[9] = A8;
pinAin[10] = 255;
pinAin[11] = A10;
pinAin[12] = 255;
pinAin[13] = 255;
pinAin[14] = 255;
pinAin[15] = A14;
pinAin[16] = A15;
break;
#endif
Добавить, что в соответствующем пространстве то есть между 5 и 7 (в них существуют или в конце опции, если нет).
Сохранение и повторная загрузка файла в GPIO. Убедитесь, что используемое положение соответствует положению, которое в ini-файле моды видят далее.
Файл Tunerstudio ini
Находится в "reference" в папке загрузки микропрограммного обеспечения. Не используйте блокнот MS для редактирования этого файла!! Хороший редактор - Notepad++ несколько загрузок программного обеспечения.
#define PIN_LAYOUT = "ProMini GPIO v0.002", "Mega2560 GPIO v0.003", "STM32 BluePill GPIO V0.003", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
Чтобы добавить новую запись, просто удалите одну из "INVALID" и замените на имя платы НАПРИМЕР: измененный файл, добавляющий новую плату с именем "mynewboard"
#define PIN_LAYOUT = "ProMini GPIO v0.002", "Mega2560 GPIO v0.003", "STM32 BluePill GPIO V0.003", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "mynewboard", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
Это показывает, что новая запись является позицией 6 (promini - позиция 0). Конфигурационный элемент платы должен находиться в положении 6 в утилите. Когда вы сохраните измененный файл и перезагрузите его в Tunerstudio, новая плата появится в качестве опции.