/SWI-Lib

Arduino библиотека для подключения к чипам внутри Lightning

Primary LanguageC++MIT LicenseMIT

SWI Library

Header Picture

Содержание

Описание

  • Библиотека для Arduino IDE, сделана в виде класса. Позволяет получить информацию из аксессуара с разъемом Lightning. Подобный функционал реализует iCopy
  • Протокол реализован программно (софтверно), использует несколько стандартных функций Arduino IDE.
pinMode();
digitalRead();
digitalWrite();
delayMicroseconds();
  • Для наблюдения за сигналами можно использовать мою версию декодер SWI-Protocol-Decoder.
  • Необходимо использовать согласователь уровней, например TXS0108E(HW-221) или подобный, иначе спалите контроллер аксессуара!
  • Есть подсчет контрольной суммы CRC8 принятых данных.

Поддерживаемые платы

  • Список плат и ядер, с которыми работает библиотека. Проверен мной лично. Не забывайте про согласование уровней!
Плата Ядро Согласователь
STM32F103C8T6 Arduino_STM32 TXS0108E
STM32F103C8T6 Arduino_Core_STM32 TXS0108E
STM32F401CCU6 Arduino_STM32 TXS0108E
STM32F401CCU6 Arduino_Core_STM32 TXS0108E
STM32F411CEU6 Arduino_STM32 TXS0108E
STM32F411CEU6 Arduino_Core_STM32 TXS0108E
STM32_F4VE Arduino_Core_STM32 TXS0108E
ESP8266 WeMos D1 Mini Arduino ESP8266 TXS0108E
ESP8266 WeMos D1 R2 Arduino ESP8266 TXS0108E
ESP32 Devkit V4 arduino-esp32 TXS0108E
Arduino Nano Встроенное TXS0108E
Arduino Uno Встроенное TXS0108E
Arduino Leonardo R3 Встроенное TXS0108E
Arduino Pro Micro Встроенное TXS0108E
Arduino Pro Mini Встроенное TXS0108E

API

Инициализация

  • Создать объект с именем (в данном случае SWI), указав вывод микроконтроллера к которому подключен контакт ID0 или ID1 (он же ID_BUS, он же ACC_ID).
SWI SWI (uint8_t pin);

Доступные методы

  • Проверить соединение с чипом в аксессуаре. Запрашивает CHIP_ID и проверяет первый байт на значение 0x75. Костыль, но работает.
bool isLightningConnected(void);
  • Запрос значений ChipID побайтово. Допустимые num_byte от 1 до 6.
byte getLightningChipID(uint8_t num_byte);
  • Запрос значения VID.
byte getLightningVID(void);
  • Запрос значения PID.
byte getLightningPID(void);
  • Запрос значения VER.
byte getLightningVER(void);
  • Запрос значения AV.
byte getLightningAV(void);
  • Запрос значения IDSN побайтово. Допустимые num_byte от 5 до 10.
byte getLightningIDSN(uint8_t num_byte);
  • Запрос значений ASN.
char* getLightningASN(void);
  • Запрос значений MSN.
char* getLightningMSN(void);
  • Запрос побайтово регистра который не описан должным образом. Допустимые num_byte от 1 до 4.
byte getLightningUnknownPack(uint8_t num_byte);

Установка

Скачать ZIP-архив нужной версии из раздела Releases. Запустить Arduino IDE. Выбрать Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку. В появившемся окне выбрать скаченный архив. Наглядная инструкция. Не забудьте изучить скетч из примеров.

Подключение аксессуара

Connecting Picture

  • Для устойчивой связи, необходимо подключить подтягивающий резисторы номиналом 4.7кОм - 10кОм, между питанием и линией данных, на каждой стороне согласователя. TXS0108E имеет встроенные резисторы, но их может быть недостаточно из-за большого номинала.
  • Подключать USB линию нет необходимости. Чип в кабеле работает от фантомного питания 2.5В.
  • Использовать напряжение питания чипа выше 2.6В нельзя!.

Ссылки