1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| #include "bitters.h"
#include "bitters/rpi.h"
#include "bitters/gpio.h"
#include "bitters/spi.h"
int main() {
/* Device configuration (GPIO/SPI)*/
struct bitters_gpio_cfg reset_cfg = { .dir = BITTERS_GPIO_DIR_OUT,
.defval = 1,
.label = "reset", };
struct bitters_spi_cfg spi0_cfg = { .mode = BITTERS_SPI_MODE_0,
.transfert = BITTERS_SPI_TRANSFERT_MSB,
.word = BITTERS_SPI_WORDSIZE(8),
.speed = 3000000, };
/* Get device handler */
bitters_gpio_pin_t reset = BITTERS_GPIO_PIN_INITIALIZER(BITTERS_RPI_GPIO_CHIP,
BITTERS_RPI_P1_15);
bitters_spi_t spi0 = BITTERS_SPI_INITIALIZER(BITTERS_RPI_SPI0, 0);
/* Initialise library and enable devices */
bitters_init();
bitters_gpio_pin_enable(&reset , &reset_cfg);
bitters_spi_enable(&spi0, &spi0_cfg);
/* Send a reset pulse */
bitters_gpio_pin_write(&reset, 1);
bitters_delay_us(100);
bitters_gpio_pin_write(&reset, 0);
/* Perform SPI transfert */
uint8_t data[8];
const struct bitters_spi_transfert xfr[] = {
{ .tx = "cmd", .len = 3 },
{ .rx = data, .len = sizeof(data) }
};
bitters_spi_transfert(spi->dev, xfr, 2);
return 0;
}
|