Od wersji 0.2.0 domyślnym backendem jest bezpośrednie API
EasyMCP2221.Device.
Blinka pozostaje backendem zgodności wybieranym przez
MCP2221_BACKEND=blinka albo parametr CLI --backend blinka.
MCP2221A ma trzy wejścia ADC o natywnej rozdzielczości 10 bitów. EasyMCP2221
zwraca je jednym wywołaniem ADC_read() jako wartości 0..1023. Warstwa
publiczna projektu zachowuje także pole raw_16bit kompatybilne z
CircuitPython; jest ono wyliczane dokładnie jako raw_10bit * 64.
Backend otwiera jedno urządzenie HID na proces, synchronizuje operacje blokadą i ustawia skończony timeout odczytu. Po błędzie odczytu zamyka uchwyt, ponownie otwiera urządzenie i wykonuje najwyżej jedną próbę ponowną. Mutacje GPIO i DAC nie są automatycznie powtarzane, ponieważ ich efekt mógł już wystąpić.
Nie jest wykonywane save_config(). Funkcje pinów i źródło odniesienia są
ustawiane wyłącznie w SRAM, więc uruchomienie adaptera nie zapisuje pamięci
Flash układu.
| Zmienna | Domyślna wartość | Znaczenie |
|---|---|---|
MCP2221_BACKEND |
easy |
easy albo zgodnościowy blinka |
MCP2221_REFERENCE_VOLTAGE |
3.3 |
zmierzone VDD używane do przeliczenia ADC |
MCP2221_DEVICE_INDEX |
0 |
indeks urządzenia dla danego VID/PID |
MCP2221_USB_SERIAL |
puste | opcjonalny numer seryjny USB |
MCP2221_SCAN_SERIAL |
false |
skanowanie Flash, tylko gdy serial nie jest enumerowany |
MCP2221_OPEN_TIMEOUT |
1.0 |
czas otwierania urządzenia w sekundach |
MCP2221_READ_TIMEOUT_MS |
250 |
maksymalny czas pojedynczego odczytu HID |
MCP2221_COMMAND_RETRIES |
0 |
powtórzenia wewnętrzne komendy USB |
scan_serial może zakłócać inne aktywne urządzenia. Dla jednego MCP2221A
należy pozostawić je wyłączone i używać indeksu 0.
Urządzenie powinno być widoczne jako 04d8:00dd. Konto uruchamiające usługę
musi należeć do plugdev, a reguła udev powinna przyznać dostęp zarówno do
urządzenia USB, jak i hidraw.
SUBSYSTEM=="usb", ATTR{idVendor}=="04d8", ATTR{idProduct}=="00dd", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", MODE="0660", GROUP="plugdev", TAG+="uaccess"
Po zmianie reguły:
sudo udevadm control --reload-rules
sudo udevadm trigger
Moduł jądra hid_mcp2221 może przejąć urządzenie i kolidować z dostępem
userspace. Jeżeli jest załadowany i występują opóźnienia lub błąd otwierania,
należy wybrać jeden model sterowania; ten projekt wymaga dostępu przez hidapi.
lsusb -d 04d8:00dd
usb-adc-mcp2221 health
usb-adc-mcp2221 adc 1 --samples 3
curl http://127.0.0.1:8214/health
curl http://127.0.0.1:8214/api/v1/adc
curl http://127.0.0.1:8202/api/v1/hardware/sensors/batch
health wykonuje rzeczywistą komendę HID. Sama obecność wpisu USB nie jest już
traktowana jako działający pomiar.
MCP2221A wykonuje komendy przez raporty USB HID. Dokumentacja EasyMCP2221 podaje praktyczny limit zależny od kontrolera hosta, kabla i koncentratora: około 500 komend/s na xHCI i około 333 komend/s na eHCI. Odczyt HUI co 500 ms jest więc bezpieczny, ale nie należy tworzyć osobnego połączenia ani procesu dla każdego żądania.
Na wejściach GP1–GP3 zalecany jest szeregowy rezystor 330 Ω chroniący przed przypadkowym przełączeniem pinu w wyjście. Wejście nie jest izolowane i nie może bezpośrednio przyjmować sygnału 0–10 V ani 4–20 mA.