当前位置: 首页 > 文档资料 > YoC 编程基础 >

PIN

优质
小牛编辑
116浏览
2023-12-01

说明

  在 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(例)

定义
PA00
PA11
PA22
PA33
PA44
PA55
PB06
PB17
PB28
PB39
PA610
PA711
PA812
PA913
PA1014
PA1115
PA1216
PA1317
PA1418
PA1519
PA1620
PA1721
PA1822
PA1923
PA2024
PA2125
PA2226
PA2327
PA2428
PA2529
PA2630
PA2731
PC032
PC133

pin_func(例)

定义
PA0_ETB_TRIG00
PA0_JTAG_TCK2
PA1_ETB_TRIG10
PA1_JTAG_TMS2
PA2_SPI0_MISO2
PA2_UART0_SIROUT3
............
PC1_PWM_CH112
PC1_ADC_A153
PIN_FUNC_GPIO4

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_LV00级速度
PIN_SPEED_LV11级速度
PIN_SPEED_LV22级速度
PIN_SPEED_LV33级速度

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_LV00级驱动能力
PIN_DRIVE_LV11级驱动能力
PIN_DRIVE_LV22级驱动能力
PIN_DRIVE_LV33级驱动能力

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_TXUART发送引脚
PIN_UART_RXUART接收引脚
PIN_UART_CTSUART CTS引脚
PIN_UART_RTSUART RTS引脚

csi_pin_iic_t枚举说明

  • 功能描述:
    • 用于查找iic设备具体的某一个引脚。
类型说明
PIN_IIC_SCLIIC时钟引脚
PIN_IIC_SDAIIC数据引脚

csi_pin_spi_t枚举说明

  • 功能描述:
    • 用于查找spi设备具体的某一个引脚。
类型说明
PIN_SPI_MISOSPI MISO引脚
PIN_SPI_MOSISPI MOSI引脚
PIN_SPI_SCKSPI时钟引脚
PIN_SPI_CSSPI片选引脚

csi_pin_i2s_t枚举说明

  • 功能描述:
    • 用于查找I2S设备具体的某一个引脚。
类型说明
PIN_I2S_MCLKI2S MCLK引脚
PIN_I2S_SCLKI2S SCLK引脚
PIN_I2S_WSCLKI2S WSCLK引脚
PIN_I2S_SDAI2S数据引脚

示例

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