Демонстрационная прошивка отладочного комплекта МТС NB-IoT
Файлы | Макросы | Перечисления | Функции

Файлы

файл  i2c_api.h
 

Макросы

#define I2C_SAFETY_TIMEOUT   2000000UL
 
#define NULL   ((void *)0)
 

Перечисления

enum  i2c_error_t {
  I2C_ERROR_NONE, I2C_ERROR_START_FAIL, I2C_ERROR_ADDR_FAIL, I2C_ERROR_READ_FAIL,
  I2C_ERROR_WRITE_FAIL
}
 

Функции

void init_i2c (I2C_TypeDef *i2c_inst, uint32_t sys_clk)
 Выполняет настройку модуля I2C для работы на стандартной частоте SDA, равной 100 кГц. Подробнее...
 
i2c_error_t i2c_read_with_pointer (I2C_TypeDef *i2c_inst, uint8_t i2c_addr, uint8_t pointer_byte, uint8_t read_length, uint8_t *read_buffer)
 Функция выполняет чтение регистра устройства I2C по правилам, общим для многих I2C-устройств. Подробнее...
 
i2c_error_t i2c_write_with_pointer (I2C_TypeDef *i2c_inst, uint8_t i2c_addr, uint8_t pointer_byte, uint16_t write_length, uint8_t *write_buffer)
 Функция выполняет запись регистра устройства I2C по правилам, общим для многих I2C-устройств. Подробнее...
 

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

Макросы

◆ I2C_SAFETY_TIMEOUT

#define I2C_SAFETY_TIMEOUT   2000000UL

Максимальное количество тактов, которое может продолжаться ожидание реакции модуля I2C на команду (например, генерация условия START). Необходимо для исключения зависания контроллера в случае непредвиденного состояния конечного автомата модуля.

См. определение в файле i2c_api.h строка 20

Функции

◆ i2c_read_with_pointer()

i2c_error_t i2c_read_with_pointer ( I2C_TypeDef *  i2c_inst,
uint8_t  i2c_addr,
uint8_t  pointer_byte,
uint8_t  read_length,
uint8_t *  read_buffer 
)

Функция выполняет чтение регистра устройства I2C по правилам, общим для многих I2C-устройств.

Многие I2C-устройства (в частности, термодатчик TMP75 и акселерометр LIS3DH) предоставляют доступ к своим внутренним регистрам следующим способом: после генерации состояния START ведущий адресует устройство в режиме записи согласно протоколу I2C и передает байт-индекс регистра, который требуется прочитать. После этого ведущий генерирует состояние повторного старта, адресует устройство в режиме чтения и далее выполняет чтение ранее адресованного регистра. После чтения доступ завершается состоянием STOP. Функция реализует описанный алгоритм доступа.

Аргументы
[in]i2c_instуказатель на блок I2C
[in]i2c_addrадрес устройства на шине I2C (семь бит, без бита чтение/запись)
[in]pointer_byteиндекс регистра устройства, из которого будет выполняться чтение
[in]read_lengthколичество байт, которое требуется прочесть
[out]read_bufferуказатель на массив, в который будет выполняться запись прочитанных данных
Возвращает
код ошибки; при успешном завершении - I2C_ERROR_NONE

См. определение в файле i2c_api.c строка 171

◆ i2c_write_with_pointer()

i2c_error_t i2c_write_with_pointer ( I2C_TypeDef *  i2c_inst,
uint8_t  i2c_addr,
uint8_t  pointer_byte,
uint16_t  write_length,
uint8_t *  write_buffer 
)

Функция выполняет запись регистра устройства I2C по правилам, общим для многих I2C-устройств.

Многие I2C-устройства (в частности, термодатчик TMP75 и акселерометр LIS3DH) предоставляют возможность записи в свои регистры следующим способом: после генерации состояния START ведущий адресует устройство в режиме записи согласно протоколу I2C, после чего передает байт-индекс регистра, в который требуется выполнить запись. После этого ведущий передает данные и завершает доступ состоянием STOP. Функция реализует описанный алгоритм доступа.

Аргументы
[in]i2c_instуказатель на блок I2C
[in]i2c_addrадрес устройства на шине I2C (семь бит, без бита чтение/запись)
[in]pointer_byteбайт-индекс регистра, в который будет выполняться запись
[in]write_lengthколичество байт, которые требуется записать
[in]write_bufferданные, которые требуется записать
Возвращает
код ошибки; при успешном завершении - I2C_ERROR_NONE

См. определение в файле i2c_api.c строка 251

◆ init_i2c()

void init_i2c ( I2C_TypeDef *  i2c_inst,
uint32_t  sys_clk 
)

Выполняет настройку модуля I2C для работы на стандартной частоте SDA, равной 100 кГц.

Предупреждения
Функция не включает тактирование модуля и не конфигурирует используемые порты. Эти действия должны быть сделаны отдельно, до ее вызова.
Аргументы
[in]i2c_instУказатель на модуль I2C.
[in]sys_clkЗначение тактовой частоты модуля (например, для I2C1 - тактирование шины APB1) в Герцах (например, 16 МГц = 16000000 Гц).
Предупреждения
Для корректной работы модуля I2C его тактовая частота должна быть не менее 2 и не более 50 МГц. В зависимости от настроек тактирования контроллера это может привести к необходимости скорректировать делители тактирования для той шины, к которой подключен конкретный модуль I2C, настраиваемый с помощью этой функции.

См. определение в файле i2c_api.c строка 310