- 方向
- 驱动模式
- 驱动强度
- 功能选择
- GPIO 客户端 API
方向
设置 GPIO 的方向。配置为输入的 GPIO 为只读,而配置为输出的 GPIO 可读可写。驱动模式
GPIO 可配置为具有内部上下拉电路(上拉、下拉或无上下拉)以及不同的驱动强度。驱动模式的设置取决于引脚与电路板的连接方式。 无论 FUNC SEL 字段如何设置,焊盘都会被设置为使用内部弱上拉、下拉、保持器(keeper)或无上下拉功能:驱动强度
驱动强度控制 GPIO 焊盘的输出电压和阻抗。配置取决于硬件设计要求。值越高,引脚的最大频率、能耗和 EMI 产生量也越高。此外,它还取决于外部上拉或下拉的强度以及线路特性。 驱动强度可以是:功能选择
用于选择路由到 GPIO 焊盘的模块。默认设置为通用功能(function 0)。 IQ-8275 中引脚复用选项的示例:RTSS [48] 用于 CAN(func=0)或 EMAC(func=1)。 有关每个 GPIO 引脚分配和复用功能的更多信息,- 请参阅 QCS9075 + PMM8650AU Pin Assignment and GPIO Configuration Spreadsheet。
- 请参阅 QCS8275 + PMM8620AU Pin Assignment and GPIO Configuration Specification Spreadsheet。
GPIO 客户端 API
sail_gpio_config_pin (int ngpio, GPIOConfigType cfg)
sail_gpio_config_pin() 函数允许客户端为 GPIO 事务调用配置 GPIO。
客户端必须注册 GPIO 结构,例如方向、驱动模式、驱动强度和功能选择。
- 原型:
void sail_gpio_config_pin(int ngpio, GPIOConfigType *cfg); - 参数:
- 返回值:无
sail_gpio_config_group(int *ngpio, GPIOConfigType *cfg, uint8 nSize)
配置一组 GPIO 的上下拉、方向、驱动强度和功能。
- 原型:
void sail_gpio_config_group(int *ngpio, GPIOConfigType *cfg, uint8 nSize; - 参数:
- 返回值:无
sail_gpio_ReadPin
该读取函数读取 GPIO 引脚的已编程输出值。- 原型:
GPIOValueType sail_gpio_ReadPin (int ngpio); - 参数:
- 返回值:
- 如果输入为 1,返回 GPIO_HIGH
- 如果输入为 0,返回 GPIO_LOW
sail_gpio_WritePin
编程或写入 GPIO 引脚的输出值。- 原型:
GPIOValueType sail_gpio_ReadPin (int ngpio); - 参数:
- 返回值:
- 如果输入为 1,返回 GPIO_HIGH
- 如果输入为 0,返回 GPIO_LOW
vSailGPIOWakeUpConfig
vSailGPIOWakeUpConfig 是一个 GPIO 配置函数,专门用于设置 SAIL 电源控制器唤醒输入路径上的特定 GPIO 引脚。
- 原型:
static void vSailGPIOWakeUpConfig() - 参数:
- 返回值:无
- 请参阅 QCS9075 + PMM8650AU Pin Assignment and GPIO Configuration Spreadsheet。
- 请参阅 QCS8275 + PMM8620AU Pin Assignment and GPIO Configuration Specification Spreadsheet。
sail_gpio_ReadPinOutput
用于读取 GPIO 输出值的接口。- 原型:
GPIOValueType sail_gpio_ReadPinOutput(int ngpio); - 参数:
- 返回值:
- 如果输出为 1,返回 GPIO_HIGH
- 如果输出为 0,返回 GPIO_LOW
中断配置
GPIO 驱动提供用于配置、启用和触发中断以及读取和清除中断状态的接口。在接收任何 GPIO 中断之前,需要在通用中断控制器(GIC)和顶层模式复用器(TLMM)硬件上对其进行配置和启用。GIC 上的中断在 TLMM 驱动初始化期间启用,因为它并非特定于某个 GPIO。直连
直连旨在为以较高频率运行的处理器提供低延迟中断。GPIO 中断配置 API
必要时,客户端调用 uGPIOSummaryInt_EnableInterrupt 在 TLMM 上启用中断。中断首先进行配置,然后使用uGPIOSummaryInt_RegisterInterrupt 函数进行注册。
uGPIOSummaryInt_ConfigureInterrupt()
允许客户端在指定的 GPIO 引脚上设置中断触发方式。触发方式为以下之一: GPIO 汇总中断触发类型- 原型:
static void uGPIOSummaryInt_ConfigureInterrupt(int nGPIO, int nTrigger, int nRawStatusEn, int nTargetProc); - 参数:
- 返回值:无
uGPIOSummaryInt_RegisterInterrupt()
在 TLMM 上注册 GPIO 中断。- 原型:
int uGPIOSummaryInt_RegisterInterrupt( uint32 nGPIO, uGPIOIntTriggerType eTrigger, uGPIOINTISR isr, uGPIOINTISRCtx param); - 参数:
- 返回值:
- UGPIOINT_SUCCESS (0) - ISR 注册成功时返回此值。
- UGPIOINT_ERROR (-1) - uGPIOInt 驱动无法注册中断服务程序(ISR)时返回的错误。
uGPIOSummaryInt_EnableInterrupt()
在中断控制器上为特定 GPIO 启用中断。- 原型:
int uGPIOSummaryInt_EnableInterrupt( uint32 nGPIO); - 参数:
- 返回值:
- UGPIOINT_SUCCESS (0) - ISR 注册成功时返回此值。
- UGPIOINT_ERROR (-1) - uGPIOInt 驱动无法注册中断服务程序(ISR)时返回的错误。
uGPIOSummaryInt_DisableInterrupt()
在中断控制器上为特定 GPIO 禁用中断。- 原型:
int uGPIOSummaryInt_DisableInterrupt( uint32 nGPIO); - 参数:
- 返回值:
- UGPIOINT_SUCCESS (0) - ISR 注册成功时返回此值。
- UGPIOINT_ERROR (-1) - uGPIOInt 驱动无法注册中断服务程序(ISR)时返回的错误。

