 |
思澈科技软件开发工具包
2.20
|
|
I2C HAL 提供用于访问 I2C 外设寄存器的基本 API。 主要功能包括:
- 仅限主模式 (I2C Master)。
- 最多支持 6 个实例,并且3个在HCPU上,3个在 LCPU 上使用。
- 10 位和 7 位地址支持。
- DMA/中断模式支持
- 内存模式访问
使用 I2C HAL 驱动程序
I2C 可以支持使用 DMA 和中断模式,它们需要在 I2C 启动之前进行配置。
将 I2C HAL 与内存模式和轮询一起使用的示例:
uint16_t DevAddress, MemAddress, MemAddSize, Size;
uint32_t Timeout;
uint8_t *pData;
{
return ;
}
DevAddress = 0x76;
MemAddress = 0x10;
MemAddSize = I2C_MEMADD_SIZE_8BIT;
pData = (uint8_t *)malloc(256);
Size = 256;
Timeout = 100;
HAL_I2C_Mem_Write(&i2c_Handle, DevAddress, MemAddress, MemAddSize, pData, Size, Timeout);
HAL_I2C_Mem_Read(&i2c_Handle, DevAddress, MemAddress, MemAddSize, pData,Size, Timeout);
...
Sample for using I2C HAL with register mode and DMA:
uint16_t DevAddress, Size;
uint8_t *pData;
dma_set.Instance = I2C1_DMA_INSTANCE;
dma_set.dma_irq = I2C1_DMA_IRQ;
dma_set.request = I2C1_DMA_REQUEST;
DevAddress = 0x76;
pData = malloc(256);
Size = 256;
...
I2C_TypeDef * Instance
Definition: bf0_hal_i2c.h:213
uint8_t core
Definition: bf0_hal_i2c.h:236
Definition: bf0_hal_dma.h:73
@ HAL_I2C_MODE_MASTER
Definition: bf0_hal_i2c.h:169
@ HAL_OK
Definition: bf0_hal_def.h:75
HAL_StatusTypeDef HAL_I2C_DMA_Init(I2C_HandleTypeDef *hi2c, struct dma_config *dma_rx, struct dma_config *dma_tx)
Initializes the I2C according to the specified parameters with dma mode in the I2C_InitTypeDef and in...
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Transmit in master mode an amount of data in non-blocking mode with DMA.
DMA_HandleTypeDef * hdmatx
Definition: bf0_hal_i2c.h:230
uint32_t AddressingMode
Definition: bf0_hal_i2c.h:87
__IO HAL_I2C_ModeTypeDef Mode
Definition: bf0_hal_i2c.h:242
#define CORE_ID_LCPU
Definition: bf0_hal_rcc.h:75
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Write an amount of data in blocking mode to a specific memory address.
uint32_t GeneralCallMode
Definition: bf0_hal_i2c.h:90
DMA_HandleTypeDef * hdmarx
Definition: bf0_hal_i2c.h:232
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Set the priority of an interrupt.
HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Read an amount of data in blocking mode from a specific memory address.
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
uint32_t dma_rcc
Definition: bf0_hal_dma.h:75
uint32_t ClockSpeed
Definition: bf0_hal_i2c.h:77
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
Initializes the I2C according to the specified parameters in the I2C_InitTypeDef and initialize the a...
I2C_InitTypeDef Init
Definition: bf0_hal_i2c.h:215
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Receive in master mode an amount of data in non-blocking mode with DMA.
Definition: bf0_hal_i2c.h:212
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
Initialize the DMA according to the specified parameters in the DMA_InitTypeDef and initialize the as...