FPIOA HAL 接口文档#
硬件介绍#
K230 内部集成了 FPIOA(Field Programmable IO Array)控制器,用于管理芯片引脚的功能复用。该控制器支持最多 64 个引脚,每个引脚可配置多种不同的功能,包括但不限于 GPIO、UART、SPI、I2C、PWM 等外设功能。
数据结构说明#
fpioa_func_t#
描述:定义所有可用的引脚功能,包括 GPIO0~GPIO63 以及各种外设功能(UART、SPI、I2C、PWM等)。
fpioa_iomux_cfg_t#
描述:引脚配置结构体,包含以下配置位:
st:输入施密特触发器控制使能ds:驱动电流控制(4位)pd:下拉使能pu:上拉使能oe:输出使能ie:输入使能msc:电压选择io_sel:复用功能选择(3位)di:当前PAD输入数据
函数接口说明#
int drv_fpioa_get_pin_cfg(int pin, uint32_t* value);#
功能:获取指定引脚的配置寄存器值。
参数:
pin:引脚编号,范围[0, 63]value:用于存储配置值的指针
返回值:
0:成功-1:失败
int drv_fpioa_set_pin_cfg(int pin, uint32_t value);#
功能:设置指定引脚的配置寄存器值。
参数:
pin:引脚编号,范围[0, 63]value:要设置的配置值
返回值:
0:成功-1:失败
int drv_fpioa_get_pin_func(int pin, fpioa_func_t* func);#
功能:获取指定引脚当前配置的功能。
参数:
pin:引脚编号,范围[0, 63]func:用于存储功能类型的指针
返回值:
0:成功-1:失败
int drv_fpioa_set_pin_func(int pin, fpioa_func_t func);#
功能:设置指定引脚的功能。如果该功能已经分配给其他引脚,会先取消其他引脚的配置。
参数:
pin:引脚编号,范围[0, 63]func:要设置的功能类型
返回值:
0:成功-1:失败(引脚不支持该功能)
int drv_fpioa_func_available_pins(fpioa_func_t func, int pins[FPIOA_PIN_FUNC_ALT_NUM]);#
功能:获取指定功能可以分配到的所有引脚。
参数:
func:功能类型pins:用于存储引脚编号的数组,最多4个
返回值:
可用引脚的数量
int drv_fpioa_pin_supported_funcs(int pin, fpioa_func_t funcs[FPIOA_PIN_MAX_FUNCS]);#
功能:获取指定引脚支持的所有功能。
参数:
pin:引脚编号,范围[0, 63]funcs:用于存储功能类型的数组,最多5个
返回值:
0:成功-1:失败
int drv_fpioa_get_func_name(fpioa_func_t func, char* buf, size_t buf_size);#
功能:获取指定功能的名称字符串。
参数:
func:功能类型buf:用于存储名称的缓冲区buf_size:缓冲区大小
返回值:
0:成功-1:失败
int drv_fpioa_get_pin_func_name(int pin, char* buf, size_t buf_size);#
功能:获取指定引脚当前功能的名称。
参数:
pin:引脚编号buf:用于存储名称的缓冲区buf_size:缓冲区大小
返回值:
0:成功-1:失败
int drv_fpioa_get_pin_alt_func_names(int pin, char* buf, size_t buf_size);#
功能:获取指定引脚所有可选功能的名称,以 “/” 分隔。
参数:
pin:引脚编号buf:用于存储名称的缓冲区buf_size:缓冲区大小
返回值:
0:成功-1:失败
int drv_fpioa_get_func_assigned_pin(fpioa_func_t func);#
功能:获取指定功能当前分配到的引脚编号。
参数:
func:功能类型
返回值:
>=0:分配该功能的引脚编号-1:该功能未分配或无效
引脚参数配置函数#
以下函数用于配置引脚的电气特性参数:
int drv_fpioa_set_pin_st(int pin, int value);#
功能:设置引脚的施密特触发器使能。
int drv_fpioa_get_pin_st(int pin);#
功能:获取引脚的施密特触发器使能状态。
int drv_fpioa_set_pin_ds(int pin, int value);#
功能:设置引脚的驱动电流强度(0-15)。
int drv_fpioa_get_pin_ds(int pin);#
功能:获取引脚的驱动电流强度。
int drv_fpioa_set_pin_pd(int pin, int value);#
功能:设置引脚的下拉电阻使能。
int drv_fpioa_get_pin_pd(int pin);#
功能:获取引脚的下拉电阻使能状态。
int drv_fpioa_set_pin_pu(int pin, int value);#
功能:设置引脚的上拉电阻使能。
int drv_fpioa_get_pin_pu(int pin);#
功能:获取引脚的上拉电阻使能状态。
int drv_fpioa_set_pin_oe(int pin, int value);#
功能:设置引脚的输出使能。
int drv_fpioa_get_pin_oe(int pin);#
功能:获取引脚的输出使能状态。
int drv_fpioa_set_pin_ie(int pin, int value);#
功能:设置引脚的输入使能。
int drv_fpioa_get_pin_ie(int pin);#
功能:获取引脚的输入使能状态。
参数:
pin:引脚编号,范围[0, 63]value:要设置的值(0 或 1,ds 为 0-15)
返回值:
>=0:成功(get 函数返回当前值)-1:失败
使用示例#
请参考src/rtsmart/libs/testcases/rtsmart_hal/test_fpioa.c
