UNPKG

i2c-ftdi-d2xx

Version:

i2c protocol implementation with ftdi-d2xx on standard boards that features no level translators on SDA and SCL

119 lines (83 loc) 2.78 kB
<a name="readme-top"></a> <!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/orcasemi/i2c-ftdi-d2xx"> <img src="images/logo.svg" alt="Logo" width="400" height="100"> </a> <h3 align="center">i2c-ftdi-d2xx</h3> <p align="center"> Interface library for I2C protocol over FTDI-D2XX </p> </div> ## Installation ``` npm install --save i2c-ftdi-d2xx ``` ## Basic Usage ``` const ftdi = require("i2c-ftdi-d2xx"); const devices = await ftdi.list(); await ftdi.open({serial_number: devices[0]}); const SLAVE = ANY_NUMBER; const TARGET = ANY_NUMBER; const DATA = ANY_NUMBER; let res; res = await read({slave: SLAVE, target: TARGET}); res = await write({slave: SLAVE, target: TARGET, data: DATA}); ftdi.close() ``` ## Burst usage ``` const ftdi = require("i2c-ftdi-d2xx"); const devices = await ftdi.list(); await ftdi.open({serial_number: devices[0]}); const SLAVE = ANY_NUMBER; const TARGET = ANY_NUMBER; const N = ANY_NUMBER; const DATA = [ANY_NUMBER, ANY_NUMBER]; let res; res = await read({slave: SLAVE, target: TARGET, n:N}); res = await write({slave: SLAVE, target: TARGET, data: DATA}); ftdi.close() ``` ## Field/Register Based Usage ``` const ftdi = require("i2c-ftdi-d2xx"); const devices = await ftdi.list(); await ftdi.open({serial_number: devices[0]}); await ftdi.setRegisterMap({registerMap: VALID_REGISTER_MAP}) const SLAVE = ANY_NUMBER; const TARGET_REGISTER = VALID_REGISTER_NAME; const TARGET_FIELD = VALID_FIELD_NAME; const DATA = ANY_NUMBER; let res; res = await read({slave: SLAVE, target: TARGET_REGISTER}); res = await write({slave: SLAVE, target: TARGET_REGISTER, data: DATA}); res = await read({slave: SLAVE, target: TARGET_FIELD}); res = await write({slave: SLAVE, target: TARGET_FIELD, data: DATA}); ftdi.close() ``` ## Advanced Usage ``` const ftdi = require("i2c-ftdi-d2xx"); const devices = await ftdi.list(); await ftdi.open({serial_number: devices[0]}); const SLAVE = ANY_NUMBER; const READ_TARGET = [ANY_NUMBER, VALID_REGISTER_NAME, VALID_FIELD_NAME]; const WRITE_TARGET = {ANY_NUMBER: ANY_NUMBER, VALID_REGISTER_NAME: ANY_NUMBER, VALID_FIELD_NAME: ANY_NUMBER}; await ftdi.setRegisterMap({registerMap: VALID_REGISTER_MAP}) let res; res = await read({slave: SLAVE, target: READ_TARGET}); res = await write({slave: SLAVE, target: WRITE_TARGET}); ftdi.close() ``` <!-- LICENSE --> ## License Distributed under the TheUnlicense License. See `LICENSE.txt` for more information. ## Development TODO ## Publish npm version patch|minor|major npm login npm publish