ОСРВ MULTEX-ARM
Полное описание

Интерфейс I2C. Подробнее...

Функции

bool i2cInit (unsigned int n, unsigned int set, unsigned int clk)
 Инициализация канала I2C. Подробнее...
 
STATUS i2cRead (unsigned int n, unsigned int addr, void *data, unsigned int len)
 Чтение данных по шине I2C в режиме ведущего устройства. Подробнее...
 
STATUS i2cRegisterRead (unsigned int n, unsigned int devAddr, unsigned int regAddr, unsigned int regLen, void *data, unsigned int dataLen)
 Чтение регистра адресуемого устройства на шине I2C в режиме ведущего устройства. Подробнее...
 
STATUS i2cRegisterWrite (unsigned int n, unsigned int devAddr, unsigned int regAddr, unsigned int regLen, const void *data, unsigned int dataLen)
 Запись в регистр адресуемого устройства на шине I2C в режиме ведущего устройства. Подробнее...
 
STATUS i2cWrite (unsigned int n, unsigned int addr, const void *data, unsigned int len)
 Отправка данных по шине I2C в режиме ведущего устройства. Подробнее...
 

Макросы выбора каналов I2C

#define I2C_0   0
 
#define I2C_1   1
 
#define I2C_2   2
 
#define I2C_3   3
 
#define I2C_4   4
 

Макросы выбора набора выходных линий I2C

#define I2C_GPIO_ADDITIONAL   1
 
#define I2C_GPIO_DEFAULT   0
 

Макросы выбора частоты сигнала CLK модуля I2C

#define I2C_CLK_100_kHz   100000
 
#define I2C_CLK_400_kHz   400000
 
#define I2C_CLK_FAST   I2C_CLK_400_kHz
 
#define I2C_CLK_NORMAL   I2C_CLK_100_kHz
 

Подробное описание

Настройка аппаратного модуля I2C.

Подключение:

#include <i2c.h> 
См. также
Общее описание работы с интерфейсом I2C в разделе I2C.

Макросы

◆ I2C_0

#define I2C_0   0

Индекс для I2C0.

◆ I2C_1

#define I2C_1   1

Индекс для I2C1.

◆ I2C_2

#define I2C_2   2

Индекс для I2C2.

◆ I2C_3

#define I2C_3   3

Индекс для I2C3.

◆ I2C_4

#define I2C_4   4

Индекс для I2C4.

◆ I2C_CLK_100_kHz

#define I2C_CLK_100_kHz   100000

Частота сигнала CLK модуля I2C 100 кГц.

◆ I2C_CLK_400_kHz

#define I2C_CLK_400_kHz   400000

Частота сигнала CLK модуля I2C 400 кГц.

◆ I2C_CLK_FAST

#define I2C_CLK_FAST   I2C_CLK_400_kHz

Высокая частота сигнала CLK.

◆ I2C_CLK_NORMAL

#define I2C_CLK_NORMAL   I2C_CLK_100_kHz

Нормальная частота сигнала CLK (значение по умолчанию).

◆ I2C_GPIO_ADDITIONAL

#define I2C_GPIO_ADDITIONAL   1

Выбор дополнительного набора линий модуля I2C.

◆ I2C_GPIO_DEFAULT

#define I2C_GPIO_DEFAULT   0

Выбор основного набора линий модуля I2C. В большинстве случаев это единственный набор линий.

Функции

◆ i2cInit()

bool i2cInit ( unsigned int  n,
unsigned int  set,
unsigned int  clk 
)

Настройка и запуск выбранного канала I2C.

Аргументы
nНомер канала I2C. Для определения номера канала рекомендуется использовать один из макросов.
setНабор линий ввода/вывода, подключаемых к аппаратному модулю I2C. Рекомендуется выбирать один из наборов, описанных в группе макросов. Название выбранного порта и номера линий, подключенных к модулю можно увидеть в отладочном выводе функции в консоли. Какие именно выводы используются на плате, следует выяснить, изучив схему этой платы.
clkЧастота работы шины I2C в герцах. Рекомендуется выбирать одну из частот, определённых в группе макросов, либо задать значение частоты самостоятельно. Реальная частота работы будет равна либо меньше заданной, если точное значение частоты выставить не возможно.
Возвращает
true если инициализация прошла успешна, модуль запущен, иначе false.

◆ i2cRead()

STATUS i2cRead ( unsigned int  n,
unsigned int  addr,
void *  data,
unsigned int  len 
)

Чтение данных в буфер data в режиме ведущего устройства MASTER. Функция дожидается окончания приёма данных. Перед началом чтения нового массива данных функция ожидает окончания предыдущей транзакции.

Аргументы
nНомер канала I2C. Для определения номера канала рекомендуется использовать один из макросов.
addrАдрес устройства на шине данных I2C.
dataПолучаемые данные.
lenДлина получаемых данных (количество байт).
Возвращает
STATUS

◆ i2cRegisterRead()

STATUS i2cRegisterRead ( unsigned int  n,
unsigned int  devAddr,
unsigned int  regAddr,
unsigned int  regLen,
void *  data,
unsigned int  dataLen 
)

Копирование адреса во внутренний буфер драйвера и запуск обмена с ведомым в режиме ведущего устройства MASTER. Функция является надстройкой над i2cWrite() с изменением направления передачи данных после отправки адреса регистра ведомому устройству. Номер регистра передаётся как первый байт(ы) данных.

Аргументы
nНомер канала I2C. Для определения номера канала рекомендуется использовать один из макросов.
devAddrАдрес устройства на шине данных I2C.
regAddrНомер регистра, в который записываются данные.
regLenДлина адреса регистра.
dataПолучаемые данные.
dataLenДлина принимаемых данных (количество байт) без учёта адреса регистра.
Возвращает
OK Если транзакция прошла без ошибок, иначе ERROR.
STATUS

◆ i2cRegisterWrite()

STATUS i2cRegisterWrite ( unsigned int  n,
unsigned int  devAddr,
unsigned int  regAddr,
unsigned int  regLen,
const void *  data,
unsigned int  dataLen 
)

Копирование данных во внутренний буфер драйвера и запуск отправки буфера в режиме ведущего устройства MASTER. Функция является надстройкой над i2cWrite(). Номер регистра передаётся как первый байт(ы) данных.

Аргументы
nНомер канала I2C. Для определения номера канала рекомендуется использовать один из макросов.
devAddrАдрес устройства на шине данных I2C.
regAddrНомер регистра, в который записываются данные.
regLenДлина адреса регистра.
dataПередаваемые данные.
dataLenДлина передаваемых данных (количество байт) без учёта адреса регистра.
Возвращает
OK Если пакет отправлен без ошибок, иначе ERROR.

◆ i2cWrite()

STATUS i2cWrite ( unsigned int  n,
unsigned int  addr,
const void *  data,
unsigned int  len 
)

Копирование данных во внутренний буфер драйвера и запуск отправки буфера в режиме ведущего устройства MASTER. Функция не дожидается окончания отправки. Перед началом отправки нового массива данных функция ожидает окончания предыдущей транзакции.

Аргументы
nНомер канала I2C. Для определения номера канала рекомендуется использовать один из макросов.
addrАдрес устройства на шине данных I2C.
dataПередаваемые данные.
lenДлина передаваемых данных (количество байт).
Возвращает
OK Если пакет отправлен без ошибок, иначе ERROR.