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
Markdown
<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