embox

Форк
0
/
hts221_i2c.c 
52 строки · 1005.0 Байт
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @date 21.04.2023
6
 * @author Andrew Bursian
7
 */
8

9
#include <stdint.h>
10
#include <framework/mod/options.h>
11
#include <drivers/i2c/i2c.h>
12

13
#include "hts221.h"
14
#include "hts221_transfer.h"
15

16
#define HTS221_I2C_ADDR  0x5f
17
#define HTS221_I2C_BUS   OPTION_GET(NUMBER, i2c_bus)
18

19
struct hts221_dev {
20
	int i2c_bus;
21
	int i2c_addr;
22
};
23

24
struct hts221_dev hts221_dev0 = {
25
	.i2c_bus  = HTS221_I2C_BUS,
26
	.i2c_addr = HTS221_I2C_ADDR
27
};
28

29
int hts221_hw_init(struct hts221_dev *dev) {
30
	/* Do nothing */
31
	return 0;
32
}
33

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

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

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

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

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

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