Add readme
This commit is contained in:
parent
33710c2522
commit
39f45f78fa
105
README.md
Normal file
105
README.md
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
# I2C BB
|
||||||
|
|
||||||
|
I2C bitbang gpio driver using gpio_sys gpio driver
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
Installs `libi2c_bb.a` and `libi2c_bb.so` in the directory `$(PREFIX)/lib/`. It also installs the include header file `i2c.h` in the directory `$(PREFIX)/include/i2c_bb/`. The default value for `PREFIX` is: `PREFIX=usr`. To use another location for installation changing the value of the `PREFIX` variable is needed. E.g.:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
PREFIX=/usr/local/ make install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Uninstallation
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
Removes the files installed with the `install` make target.
|
||||||
|
> **NOTE:** If `PREFIX` variable was changed during installation process the same value needs to be set for uninstallation. E.g.:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
PREFIX=/usr/local/ make install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```C
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include <i2c_bb/i2c.h>
|
||||||
|
|
||||||
|
#define I2C_SLAVE_ADDR 0x48
|
||||||
|
#define BUFFER_SIZE 3
|
||||||
|
|
||||||
|
static const struct gpio_sys gpio_sda = {
|
||||||
|
.pin = 4,
|
||||||
|
.direction = 0, // out
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct gpio_sys gpio_scl = {
|
||||||
|
.pin = 24,
|
||||||
|
.direction = 0, // out
|
||||||
|
};
|
||||||
|
|
||||||
|
const static struct i2c_bb i2c_dev = {
|
||||||
|
.sda = &gpio_sda,
|
||||||
|
.scl = &gpio_scl,
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
char buffer[BUFFER_SIZE]
|
||||||
|
|
||||||
|
openlog("i2c_bb", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
|
||||||
|
|
||||||
|
res = i2c_open(&i2c_dev);
|
||||||
|
if(res != EXIT_SUCCESS) {
|
||||||
|
syslog(LOG_ERR, "Unable to open i2c device.\n");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer[0] = 0x01;
|
||||||
|
buffer[1] = 0xc1;
|
||||||
|
buffer[2] = 0x87;
|
||||||
|
|
||||||
|
// Write to register address 0x01 value 0xc187:
|
||||||
|
i2c_write(&i2c_dev, I2C_SLAVE_ADDR, buffer, BUFFER_SIZE);
|
||||||
|
|
||||||
|
buffer[0] = 0x00;
|
||||||
|
|
||||||
|
// Set register address 0x00:
|
||||||
|
i2c_write(&i2c_dev, addr, buffer, 1);
|
||||||
|
|
||||||
|
// Read from register 0x00 two bytes:
|
||||||
|
i2c_read(&i2c_dev, I2C_SLAVE_ADDR, buffer, 2);
|
||||||
|
|
||||||
|
i2c_close(&i2c_dev);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional make targets
|
||||||
|
|
||||||
|
| Target | Meaning |
|
||||||
|
| --------------- | ----------------------------------------------------------- |
|
||||||
|
| all | Build the code, assemble the static and shared library. |
|
||||||
|
| install | Install the libraries and necessary include header files. |
|
||||||
|
| uninstall | Uninstall the libraries and necessary include header files. |
|
||||||
|
| clean | Clean up build artifacts. |
|
||||||
|
| distclean | Remove all folders created during any build step. |
|
||||||
|
| build_unit_test | Build the unit tests. |
|
||||||
|
| exec_unit_test | Execute the unit tests. |
|
||||||
|
| coverage | Determine code coverage of the unit tests. |
|
||||||
|
| check | Static code analysis (cppcheck). |
|
@ -5,7 +5,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <i2c_bb.h>
|
#include <i2c.h>
|
||||||
|
|
||||||
|
|
||||||
static void write_bit(const struct i2c_bb *i2c, uint8_t bit);
|
static void write_bit(const struct i2c_bb *i2c, uint8_t bit);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include <utest.h>
|
#include <utest.h>
|
||||||
#include <mock_gpio.h>
|
#include <mock_gpio.h>
|
||||||
|
|
||||||
#include <i2c_bb.h>
|
#include <i2c.h>
|
||||||
|
|
||||||
UTEST(i2c_close, success)
|
UTEST(i2c_close, success)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user