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;
}

results matching ""

    No results matching ""