PIN
说明
在 SOC 设计中,IOCTL(IO controller)作为 APB 的外设,提供了 IO cell 和外设交换数据的通道, 除此之外,还可以配置输入输出的方向,IO cell 复用功能(ALT)选择,驱动能力大小,上拉/下拉和其他 IO cell 的属性 功能 通过配置管脚复用控制寄存器,来选择管脚作为其复用的一种功能,还可以调整其他属性如上拉(或 下拉),驱动能力增强等,IOCTL 模块具有以下特点 连接 IO cell 和外设 支持功能模式或者测试模式 支持 IO CELL 的 GPIO 功能或者其他复用(ALT)功能 可配置 IO cell 其他属性,如驱动能力,上下拉使能 支持 test mode 的特殊使用
接口列表
PIN的CSI接口说明如下所示:
函数 | 说明 |
---|---|
csi_pin_set_mux | 设置PIN的复用功能 |
csi_pin_get_mux | 获取PIN的复用功能 |
csi_pin_mode | 设置PIN的模式 |
csi_pin_speed | 设置PIN的速度 |
csi_pin_wakeup | 设置PIN的唤醒功能 |
csi_pin_drive | 设置PIN的驱动能力 |
csi_pin_get_gpio_devidx | 通过pin name找GPIO端口号 |
csi_pin_get_uart_devidx | 通过pin name查找UART设备号 |
csi_pin_get_iic_devidx | 通过pin name查找IIC设备号 |
csi_pin_get_spi_devidx | 通过pin name查找SPI设备号 |
csi_pin_get_i2s_devidx | 通过pin name查找I2S设备号 |
csi_pin_get_gpio_channel | 通过pin name获取通道号 |
csi_pin_get_pwm_channel | 通过pin name获取PWM通道 |
csi_pin_get_adc_channel | 通过pin name获取ADC通道 |
csi_pin_get_pinname_by_gpio | 通过PIN端口号与通道号获取pin name |
PIN的CSI接口在用户对接时是否必须适配的说明如下所示:(pinmux文件)
函数 | 是否必须适配 |
---|---|
csi_pin_set_mux | 必须 |
csi_pin_get_mux | 必须 |
csi_pin_mode | 必须 |
csi_pin_speed | 非必须 |
csi_pin_wakeup | 非必须 |
csi_pin_drive | 非必须 |
csi_pin_get_gpio_devidx | 必须 |
csi_pin_get_uart_devidx | 非必须 |
csi_pin_get_iic_devidx | 非必须 |
csi_pin_get_spi_devidx | 非必须 |
csi_pin_get_i2s_devidx | 非必须 |
csi_pin_get_gpio_channel | 必须 |
csi_pin_get_pwm_channel | 非必须 |
csi_pin_get_adc_channel | 必须 |
csi_pin_get_pinname_by_gpio | 必须 |
接口详细说明
csi_pin_set_mux
csi_error_t csi_pin_set_mux(pin_name_t pin_name, pin_func_t pin_func)
功能描述:
- 设置PIN为复用功能。
参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。枚举定义详见pin_name。
- pin_func: 复用功能编号,每一款芯片都有自己的复用编号。枚举定义详见pin_func。
返回值:
- 错误码csi_error_t。
使用示例:
/* 将PA2引脚设置为UART0发送复用功能 */ csi_error_t ret; ret = csi_pin_set_mux(PA2, PA2_UART0_TX); if (ret != CSI_OK) { return -1; }
pin_name(例)
定义 | 值 |
---|---|
PA0 | 0 |
PA1 | 1 |
PA2 | 2 |
PA3 | 3 |
PA4 | 4 |
PA5 | 5 |
PB0 | 6 |
PB1 | 7 |
PB2 | 8 |
PB3 | 9 |
PA6 | 10 |
PA7 | 11 |
PA8 | 12 |
PA9 | 13 |
PA10 | 14 |
PA11 | 15 |
PA12 | 16 |
PA13 | 17 |
PA14 | 18 |
PA15 | 19 |
PA16 | 20 |
PA17 | 21 |
PA18 | 22 |
PA19 | 23 |
PA20 | 24 |
PA21 | 25 |
PA22 | 26 |
PA23 | 27 |
PA24 | 28 |
PA25 | 29 |
PA26 | 30 |
PA27 | 31 |
PC0 | 32 |
PC1 | 33 |
pin_func(例)
定义 | 值 |
---|---|
PA0_ETB_TRIG0 | 0 |
PA0_JTAG_TCK | 2 |
PA1_ETB_TRIG1 | 0 |
PA1_JTAG_TMS | 2 |
PA2_SPI0_MISO | 2 |
PA2_UART0_SIROUT | 3 |
...... | ...... |
PC1_PWM_CH11 | 2 |
PC1_ADC_A15 | 3 |
PIN_FUNC_GPIO | 4 |
csi_pin_get_mux
pin_func_t csi_pin_get_mux(pin_name_t pin_name)
功能描述:
- 获取PIN的复用功能。
参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
返回值:
- 复用功能编号。
使用示例:
/* 获取PA2引脚复用功能*/ pin_func_t pin_func; pin_func = csi_pin_get_mux(PA2); return pin_func;
csi_pin_mode
csi_error_t csi_pin_mode(pin_name_t pin_name, csi_pin_mode_t mode)
- 功能描述:
- 设置PIN的模式。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- mode:工作模式,枚举定义详见csi_pin_mode_t。
- 返回值:
- 错误码csi_error_t。
csi_pin_mode_t
类型 | 说明 |
---|---|
GPIO_MODE_PULLNONE | 悬空输入 |
GPIO_MODE_PULLUP | 上拉输入 |
GPIO_MODE_PULLDOWN | 下拉输入 |
GPIO_MODE_OPEN_DRAIN | 开漏输出 |
GPIO_MODE_PUSH_PULL | 推挽输出 |
csi_pin_speed
csi_error_t csi_pin_speed(pin_name_t pin_name, csi_pin_speed_t speed)
功能描述:
- 设置PIN的速度。
参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- speed:响应速度,枚举定义详见csi_pin_speed_t。
返回值:
- 错误码csi_error_t。
csi_pin_speed_t(0级为最低速,依次类推)
类型 | 说明 |
---|---|
PIN_SPEED_LV0 | 0级速度 |
PIN_SPEED_LV1 | 1级速度 |
PIN_SPEED_LV2 | 2级速度 |
PIN_SPEED_LV3 | 3级速度 |
csi_pin_wakeup
csi_error_t csi_pin_wakeup(pin_name_t pin_name, bool enable)
功能描述:
- 设置PIN的唤醒功能。
参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- enable: 使能标记位。
返回值:
- 错误码csi_error_t。
csi_pin_drive
csi_error_t csi_pin_drive(pin_name_t pin_name, csi_pin_drive_t drive)
功能描述:
- 设置PIN的驱动能力。
参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- drive:驱动能力,枚举定义详见csi_pin_drive_t。
返回值:
- 错误码csi_error_t。
csi_pin_drive_t(0级驱动能力最弱,依次类推)
类型 | 说明 |
---|---|
PIN_DRIVE_LV0 | 0级驱动能力 |
PIN_DRIVE_LV1 | 1级驱动能力 |
PIN_DRIVE_LV2 | 2级驱动能力 |
PIN_DRIVE_LV3 | 3级驱动能力 |
csi_pin_get_gpio_devidx
uint32_t csi_pin_get_gpio_devidx(pin_name_t pin_name)
- 功能描述:
- 通过pin name查找GPIO端口号。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- GPIO端口号。(PORTA为0,PORTB为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_uart_devidx
uint32_t csi_pin_get_uart_devidx(pin_name_t pin_name)
- 功能描述:
- 通过pin name查找UART设备号 。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- UART设备号。(UART0为0,UART1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_iic_devidx
uint32_t csi_pin_get_iic_devidx(pin_name_t pin_name)
- 功能描述:
- 通过pin name查找IIC设备号。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- IIC设备号。(IIC0为0,IIC1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_spi_devidx
uint32_t csi_pin_get_spi_devidx(pin_name_t pin_name)
- 功能描述:
- 通过pin name查找SPI设备号。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- SPI设备号。(SPI0为0,SPI1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_i2s_devidx
uint32_t csi_pin_get_i2s_devidx(pin_name_t pin_name)
- 功能描述:
- 通过pin name查找I2S设备号。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- I2S设备号。(I2S0为0,I2S1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_gpio_channel
uint32_t csi_pin_get_gpio_channel (pin_name_t pin_name)
- 功能描述:
- 通过pin name获取GPIO通道号。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- GPIO通道号。(PA0为0,PA1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_pwm_channel
uint32_t csi_pin_get_pwm_channel (pin_name_t pin_name)
- 功能描述:
- 通过pin name获取PWM通道 。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- PWM通道 。(PWM_CH0为0,PWM_CH1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_adc_channel
uint32_t csi_pin_get_adc_channel (pin_name_t pin_name)
- 功能描述:
- 通过pin name获取ADC通道 。
- 参数:
- pin_name: pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
- 返回值:
- ADC通道 。(ADC_A0为0,ADC_A1为1,依次类推,失败返回0xFFFFFFFFU)。
csi_pin_get_pinname_by_gpio
pin_name_t csi_pin_get_pinname_by_gpio(uint8_t gpio_idx, uint8_t channel)
- 功能描述:
- 通过PIN端口号与通道号获取pin name。
- 参数:
- gpio_idx:GPIO端口号。
- channel:GPIO通道号。
- 返回值:
- pin name,每一款芯片都有自己的pin name,与芯片手册pin name一一对应。
csi_pin_uart_t枚举说明
- 功能描述:
- 用于查找UART设备具体的某一个引脚。
类型 | 说明 |
---|---|
PIN_UART_TX | UART发送引脚 |
PIN_UART_RX | UART接收引脚 |
PIN_UART_CTS | UART CTS引脚 |
PIN_UART_RTS | UART RTS引脚 |
csi_pin_iic_t枚举说明
- 功能描述:
- 用于查找iic设备具体的某一个引脚。
类型 | 说明 |
---|---|
PIN_IIC_SCL | IIC时钟引脚 |
PIN_IIC_SDA | IIC数据引脚 |
csi_pin_spi_t枚举说明
- 功能描述:
- 用于查找spi设备具体的某一个引脚。
类型 | 说明 |
---|---|
PIN_SPI_MISO | SPI MISO引脚 |
PIN_SPI_MOSI | SPI MOSI引脚 |
PIN_SPI_SCK | SPI时钟引脚 |
PIN_SPI_CS | SPI片选引脚 |
csi_pin_i2s_t枚举说明
- 功能描述:
- 用于查找I2S设备具体的某一个引脚。
类型 | 说明 |
---|---|
PIN_I2S_MCLK | I2S MCLK引脚 |
PIN_I2S_SCLK | I2S SCLK引脚 |
PIN_I2S_WSCLK | I2S WSCLK引脚 |
PIN_I2S_SDA | I2S数据引脚 |
示例
将PA1引脚设置为GPIO功能、上拉输入、低速响应、低驱动能力。
int main(void){
csi_error_t ret;
ret = csi_pin_set_mux(PA1, PIN_FUNC_GPIO);
if (ret != CSI_OK) {
return -1;
}
ret = csi_pin_set_mode(PA1, GPIO_MODE_PULLUP);
if (ret != CSI_OK) {
return -1;
}
ret = csi_pin_speed(PA1, PIN_SPEED_LV0);
if (ret != CSI_OK) {
return -1;
}
ret = csi_pin_drive(PA1, PIN_DRIVE_LV0);
if (ret != CSI_OK) {
return -1;
}
return 1;
}