embox

Форк
0
/
l3g4200d_i2c.c 
51 строка · 1.0 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @date 06.02.2020
6
 * @author Alexander Kalmuk
7
 */
8
#include <stdint.h>
9
#include <framework/mod/options.h>
10
#include <drivers/i2c/i2c.h>
11

12
#include "l3g4200d.h"
13
#include "l3g4200d_transfer.h"
14

15
#define L3G4200D_I2C_ADDR  0x69
16
#define L3G4200D_I2C_BUS   OPTION_GET(NUMBER, i2c_bus)
17

18
struct l3g4200d_dev {
19
	int i2c_bus;
20
	int i2c_addr;
21
};
22

23
struct l3g4200d_dev l3g4200d_dev0 = {
24
	.i2c_bus  = L3G4200D_I2C_BUS,
25
	.i2c_addr = L3G4200D_I2C_ADDR
26
};
27

28
int l3g4200d_hw_init(struct l3g4200d_dev *dev) {
29
	/* Do nothing */
30
	return 0;
31
}
32

33
int l3g4200d_readb(struct l3g4200d_dev *dev, int offset, uint8_t *ret) {
34
	if (i2c_bus_write(dev->i2c_bus, dev->i2c_addr,
35
	        (uint8_t *) &offset, 1) < 0) {
36
		return -1;
37
	}
38
	if (i2c_bus_read(dev->i2c_bus, dev->i2c_addr, ret, 1) < 0) {
39
		return -1;
40
	}
41
	return 0;
42
}
43

44
int l3g4200d_writeb(struct l3g4200d_dev *dev,
45
	    int offset, uint8_t val) {
46
	uint16_t tmp = (offset & 0xFF) | (val << 8);
47
	if (i2c_bus_write(dev->i2c_bus, dev->i2c_addr, (void *) &tmp, 2)) {
48
		return -1;
49
	}
50
	return 0;
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.