RISCV_BSP_MOUNRIVER使用参考
1. 概述¶
RISCV开发环境基于MounRiver Studio,请参考RISCV开发环境使用指南安装开发环境和SDK模板
2. GPIO使用¶
2.1. 配置¶
Sysdecs配置:
使用gpio可通过sysdecs配置gpio padmux,如下将PAD_PWM_OUT00-01配置成gpio mode
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<padmux> [schematic_u32_u32_u32] PAD_UART0_RX PINMUX_FOR_PM_FUART_MODE_3 MDRV_PUSE_PM_UART_RX, PAD_UART0_TX PINMUX_FOR_PM_FUART_MODE_3 MDRV_PUSE_PM_UART_TX, PAD_PWM_OUT00 PINMUX_FOR_GPIO_MODE MDRV_PUSE_NA, PAD_PWM_OUT01 PINMUX_FOR_GPIO_MODE MDRV_PUSE_NA; [status_u8] 1;
2.2. 测试demo使用¶
1)打开gpio测试demo宏定义:__VER_GPIO__
2)测试demo路径
sc/driver/sysdriver/gpio/drv/pub/drv_gpio.h sc/driver/sysdriver/gpio/drv/src/gpio_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
pin脚名称与对应的gpioNum在sc/driver/sysdriver/gpio/hal/pcupid/pub/gpio.h中可查看
gpio output [gpioNum] [level] //设置gpio输出高低电平 [gpioNum]:gpio号,0-142 [level]:输出电平,0:低电平;1:高电平 gpio input/get [gpioNum] //设置gpio输入,打印电平 [gpioNum]:gpio号,0-142 gpio toggle [gpioNum] //反转gpio电平 [gpioNum]:gpio号,0-142 gpio state [gpioNum] //获取单个gpio输入输出状态 [gpioNum]:gpio号,0-142 gpio list [num_of_pins] //获取一定数量gpio输入输出状态 [num_of_pins]:gpio数量,0-142 gpio isr [gpioNum] [edge] //使能gpio中断 [gpioNum]:gpio号,0-142 [edge]:gpio中断类型,0:下降沿;1:上升沿;2:双边沿;3:低电平;4:高电平; gpio isrfree [gpioNum] //关闭gpio中断 [gpioNum]:gpio号,0-142
2.3. GPIO开发¶
参考RISCV_GPIO使用参考
3. ADC使用¶
3.1. ADCLP(10bit)¶
3.1.1.Sysdecs配置¶
使用adclp需要通过sysdecs配置打开adclp节点(无需配置padmux),以adclp0举例,将status_u8
改为1
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<adclp0> [reg_u32] 0x2002800; [interrupts_u32] INT_PM_IRQ_SAR_KP; [camclk_u16] CAMCLK_sar; [interrupts_en_u8] 1; [ref_vol_u32] 1800; [upper_bound_u16] 0x3FF; [lower_bound_u16] 0; [status_u8] 1;
3.1.2. 测试demo使用¶
1)打开adclp测试demo宏定义:__VER_ADCLP__
2)测试demo路径
sc/driver/sysdriver/saradc/drv/pub/drv_adclp.h sc/driver/sysdriver/saradc/drv/src/drv_adclp_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
adclp init [channel] //初始化指定的adclp通道 [channel] :采样通道, 可选0~4 adclp single [channel] //获取指定通道的采样结果 [channel] :采样通道, 可选0~4 adclp scan //获取全部通道的采样结果
3.2. ADCMP(12bit)¶
3.2.1.Sysdecs配置¶
使用adcmp需要通过sysdecs配置打开adcmp节点以及配置padmux,以adcmp0举例,将status_u8
改为1
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<adcmp0> [reg_u32] 0x200AC00, 0x200AE00, 0x2003C00, 0x2204600; [interrupts_u32] INT_PM_FIQ_ADCMP; [camclk_u16] CAMCLK_pm_pwm_adc; [dma_en_u8] 0; [dma_count_u32] 50; [clk_level_u8] 0; [ref_vol_u32] 1800; [regular_ch_u8] 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11; [inject_ch_u8] 12, 13, 14, 15, 16, 17, 18, 19, 20, 21; [external_res_u32] 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0; [upper_bound_u16] 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF; [lower_bound_u16] 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0; [status_u8] 1; <padmux> [schematic_u32_u32_u32] PAD_SAR_ADC0_00 PINMUX_FOR_PMADC0_MODE_1 MDRV_PUSE_PWMADC0, PAD_SAR_ADC0_01 PINMUX_FOR_PMADC1_MODE_1 MDRV_PUSE_PWMADC1, PAD_SAR_ADC0_02 PINMUX_FOR_PMADC2_MODE_1 MDRV_PUSE_PWMADC2, PAD_SAR_ADC0_03 PINMUX_FOR_PMADC3_MODE_1 MDRV_PUSE_PWMADC3, PAD_SAR_ADC0_04 PINMUX_FOR_PMADC4_MODE_1 MDRV_PUSE_PWMADC4, PAD_SAR_ADC0_05 PINMUX_FOR_PMADC5_MODE_1 MDRV_PUSE_PWMADC5, PAD_SAR_ADC0_06 PINMUX_FOR_PMADC6_MODE_1 MDRV_PUSE_PWMADC6, PAD_SAR_ADC0_07 PINMUX_FOR_PMADC7_MODE_1 MDRV_PUSE_PWMADC7, PAD_SAR_ADC0_08 PINMUX_FOR_PMADC8_MODE_1 MDRV_PUSE_PWMADC8, PAD_SAR_ADC0_09 PINMUX_FOR_PMADC9_MODE_1 MDRV_PUSE_PWMADC9, PAD_SAR_ADC0_10 PINMUX_FOR_PMADC10_MODE_1 MDRV_PUSE_PWMADC10, PAD_SAR_ADC0_11 PINMUX_FOR_PMADC11_MODE_1 MDRV_PUSE_PWMADC11, PAD_SAR_ADC0_12 PINMUX_FOR_PMADC12_MODE_1 MDRV_PUSE_PWMADC12, PAD_SAR_ADC0_13 PINMUX_FOR_PMADC13_MODE_1 MDRV_PUSE_PWMADC13, PAD_SAR_ADC0_14 PINMUX_FOR_PMADC14_MODE_1 MDRV_PUSE_PWMADC14, PAD_PM_GPIO0 PINMUX_FOR_PMADC15_MODE_1 MDRV_PUSE_PWMADC15, PAD_PM_GPIO1 PINMUX_FOR_PMADC16_MODE_1 MDRV_PUSE_PWMADC16, PAD_PM_GPIO2 PINMUX_FOR_PMADC17_MODE_1 MDRV_PUSE_PWMADC17, PAD_PM_GPIO3 PINMUX_FOR_PMADC18_MODE_1 MDRV_PUSE_PWMADC18, PAD_PM_GPIO6 PINMUX_FOR_PMADC19_MODE_1 MDRV_PUSE_PWMADC19, PAD_PM_ADC00_IN PINMUX_FOR_PMADC20_MODE_1 MDRV_PUSE_PWMADC20, PAD_PM_GPIO7 PINMUX_FOR_PMADC21_MODE_1 MDRV_PUSE_PWMADC21, PAD_PM_PWM0_OUT PINMUX_FOR_PM_ADC_INT_MODE_2 MDRV_PUSE_PMPWMADC_INT; [status_u8] 1;
3.2.2. 测试demo使用¶
1)打开adclp测试demo宏定义:__VER_ADCMP__
2)测试demo路径
sc/driver/sysdriver/saradc/drv/pub/drv_adcmp.h sc/driver/sysdriver/saradc/drv/src/drv_adcmp_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
adcmp single [group] [channel] [regular mode] [inject mode] //使能adcmp采样 [group]:指定group,可选0~1 [channel]:指定通道,group=0时channel可选0~22,group=1时channel可选0~1 [regular mode]:指定regular通道序列的采样模式,0-11:PWM_PN触发,12:SW触发,13:外部触发,14:freerun [inject mode]:指定inject通道序列的采样模式,0-11:PWM_PN触发,12:SW触发,13:外部触发 adcmp scan [group] [regular mode] [inject mode]//获取对应group全部通道的采样结果 [group]:指定group,可选0~1 [regular mode]:指定regular通道序列的采样模式,0-11:PWM_PN触发,12:SW触发,13:外部触发,14:freerun [inject mode]:指定inject通道序列的采样模式,0-11:PWM_PN触发,12:SW触发,13:外部触发
3.3. ADC开发¶
参考RISCV_ADCLP/RISCV_ADCMP使用参考
4. PWM使用¶
4.1.Sysdecs配置¶
使用pwm功能需要通过sysdecs配置打开对应pwmX节点, 并配置pwm相关padmux,以pwm0举例
使用dead time功能需要通过sysdecs配置打开pwm12~17节点, 并配置deadtime相关padmux,以pwm12举例
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<pwm0> [reg_u32_u16] 0x2203200 0x40; [interrupts_u32] INT_IRQ_PWM_GROUP0; [camclk_u16] CAMCLK_pwm; [group_u32] 0; [spwm_group_u32] 0xFFFF; [clk_level_u8] 0; [status_u8] 1; ...... <pwm12> [reg_u32_u16] 0x2205600 0x40; [interrupts_u32] INT_IRQ_PWM_GROUP3; [camclk_u16] CAMCLK_pwm; [group_u32] 3; [spwm_group_u32] 0xFFFF; [clk_level_u8] 0; [ddt_reg_u32] 0x2203600; [idle_status_u8] 0, 0; [status_u8] 1; <padmux> [schematic_u32_u32_u32] //pwm padmux PAD_GPIOC_00 PINMUX_FOR_PWM0_MODE_1 MDRV_PUSE_PWM0, PAD_GPIOC_01 PINMUX_FOR_PWM1_MODE_1 MDRV_PUSE_PWM1, PAD_GPIOC_02 PINMUX_FOR_PWM2_MODE_1 MDRV_PUSE_PWM2, PAD_GPIOC_03 PINMUX_FOR_PWM3_MODE_1 MDRV_PUSE_PWM3, PAD_GPIOC_04 PINMUX_FOR_PWM4_MODE_1 MDRV_PUSE_PWM4, PAD_GPIOC_05 PINMUX_FOR_PWM5_MODE_1 MDRV_PUSE_PWM5, PAD_GPIOC_06 PINMUX_FOR_PWM6_MODE_1 MDRV_PUSE_PWM6, PAD_GPIOC_07 PINMUX_FOR_PWM7_MODE_1 MDRV_PUSE_PWM7, PAD_GPIOC_08 PINMUX_FOR_PWM8_MODE_1 MDRV_PUSE_PWM8, PAD_OUTP_CH0 PINMUX_FOR_PWM9_MODE_1 MDRV_PUSE_PWM9, PAD_GPIOA_00 PINMUX_FOR_PWM10_MODE_2 MDRV_PUSE_PWM10, PAD_GPIOA_01 PINMUX_FOR_PWM11_MODE_2 MDRV_PUSE_PWM11, PAD_GPIOA_02 PINMUX_FOR_PWM12_MODE_2 MDRV_PUSE_PWM12, PAD_GPIOA_03 PINMUX_FOR_PWM13_MODE_2 MDRV_PUSE_PWM13, PAD_GPIOA_04 PINMUX_FOR_PWM14_MODE_2 MDRV_PUSE_PWM14, PAD_GPIOA_05 PINMUX_FOR_PWM15_MODE_2 MDRV_PUSE_PWM15, PAD_GPIOA_06 PINMUX_FOR_PWM16_MODE_2 MDRV_PUSE_PWM16, PAD_GPIOA_07 PINMUX_FOR_PWM17_MODE_2 MDRV_PUSE_PWM17, PAD_PM_I2C_SDA PINMUX_FOR_PM_PWM0_MODE_2 MDRV_PUSE_PWM18, PAD_PM_I2C_SCL PINMUX_FOR_PM_PWM1_MODE_2 MDRV_PUSE_PWM19, //dead time padmux PAD_GPIOE_17 PINMUX_FOR_PWM_COMP0_MODE_1 MDRV_PUSE_PWMOUT0_P, PAD_GPIOE_18 PINMUX_FOR_PWM_COMP0_MODE_1 MDRV_PUSE_PWMOUT0_N, PAD_GPIOE_23 PINMUX_FOR_PWM_COMP1_MODE_1 MDRV_PUSE_PWMOUT1_P, PAD_GPIOE_24 PINMUX_FOR_PWM_COMP1_MODE_1 MDRV_PUSE_PWMOUT1_N, PAD_GPIOA_00 PINMUX_FOR_PWM_COMP2_MODE_1 MDRV_PUSE_PWMOUT2_P, PAD_GPIOA_01 PINMUX_FOR_PWM_COMP2_MODE_1 MDRV_PUSE_PWMOUT2_N, PAD_GPIOA_08 PINMUX_FOR_PWM_COMP3_MODE_2 MDRV_PUSE_PWMOUT3_P, PAD_GPIOA_09 PINMUX_FOR_PWM_COMP3_MODE_2 MDRV_PUSE_PWMOUT3_N, PAD_EMMC_RST PINMUX_FOR_PWM_COMP4_MODE_1 MDRV_PUSE_PWMOUT4_P, PAD_EMMC_CLK PINMUX_FOR_PWM_COMP4_MODE_1 MDRV_PUSE_PWMOUT4_N, PAD_EMMC_D0 PINMUX_FOR_PWM_COMP5_MODE_1 MDRV_PUSE_PWMOUT5_P, PAD_EMMC_D5 PINMUX_FOR_PWM_COMP5_MODE_1 MDRV_PUSE_PWMOUT5_N; [status_u8] 1;
4.2. 测试demo使用¶
1)打开pwm测试demo宏定义:__VER_PWM__
2)测试demo路径
sc/driver/sysdriver/pwm/drv/pub/drv_pwm.h sc/driver/sysdriver/pwm/drv/src/drv_pwm_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
//pwm channel配置 pwm <channel> [channel_id] [period] [shift] [duty] [polarity] // 设定pwm指定通道的周期、占空比和极性 [channel_id]:指定pwm通道,可选0~19 [period]:设置pwm周期,高精度模式下以ns为单位,低精度模式下以hz为单位 [shift]:设置pwm相位偏移,高精度模式下以ns为单位,低精度模式下以hz为单位 [duty]:设置pwm占空比,实际占空比=duty-shift,高精度模式下以ns为单位,低精度模式下以hz为单位 [polarity]:设定pwm极性,0:normal,1:invert pwm <channel> [channel_id] [enable] //使能pwm [channel_id]:指定pwm通道,可选0~19 [enable]:1:enable,0:disable //pwm group配置 pwm <group> [group_id] [period] [shift] [duty] [polarity] // 设定group内所有pwm通道的周期、占空比和极性 [group_id]:指定group,可选0~3 [period]:设置group内所有pwm通道的周期,高精度模式下以ns为单位,低精度模式下以hz为单位 [shift]:设置group内所有pwm通道的相位偏移,高精度模式下以ns为单位,低精度模式下以hz为单位 [duty]:设置group内所有pwm通道的占空比,实际占空比=duty-shift,高精度模式下以ns为单位,低精度模式下以hz为单位 [polarity]:设定group内所有pwm通道的极性,0:normal,1:invert pwm <update> [group_id] //将group的配置更新到寄存器中 [group_id]:指定group,可选0~3 pwm <group> [group_id] [enable] //使能group内所有pwm [group_id]:指定group,可选0~3 [enable]:1:enable,0:disable //pwm group的stop、round功能 pwm <stop> [group_id] [stop_en] //急停功能 [group_id]:指定group,可选0~3 [enable]:1:enable,波形停止;0:disable,波形恢复 pwm <round> [group_id] [round_num] //指定输出pwm的脉冲数 [group_id]:指定group,可选0~3 [round_num]:脉冲数量 //dead time pwm <ddt> [channel_id] [p_ddt] [n_ddt] //设定死区时间 [channel_id]:指定pwm通道,可选12~17 [p_ddt]:设置pwm通道分出正向波形的死区时间,以ns为单位 [n_ddt]:设置pwm通道分出反向波形的死区时间,以ns为单位 pwm <ddt> [channel_id] [enable] [channel_id]:指定pwm通道,可选12~17 [enable]:1:enable,0:disable
4.3. PWM开发¶
参考RISCV_PWM使用参考
5. I2C使用¶
5.1.Sysdecs配置¶
使用i2c需要通过sysdecs配置打开对应i2cX节点, 并配置padmux, 如下配置为i2c0举例:
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pocupid-default.sys:
<i2c0> [reg_u32_u16] 0x2222800 0x200; [interrupts_u8] INT_IRQ_MIIC; [camclk_u16] CAMCLK_miic0; [dma_u8] 1; [output_mode_u8] 2; [speed_u32] 200000; [t_hd_sto_u16] 0; [t_su_sta_u16] 0; [t_hd_sta_u16] 0; [t_su_sto_u16] 0; [status_u8] 1; <padmux> [schematic_u32_u32_u32] PAD_GPIOE_00 PINMUX_FOR_I2C0_MODE_1 MDRV_PUSE_I2C0_SCL, PAD_GPIOE_01 PINMUX_FOR_I2C0_MODE_1 MDRV_PUSE_I2C0_SDA; [status_u8] 1;
5.2. 测试demo使用¶
1)打开i2c测试demo宏定义__VER_I2C__
2)测试demo路径
sc/driver/sysdriver/i2c/drv/pub/drv_iic.h sc/driver/sysdriver/i2c/drv/src/drv_iic_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
i2c [r/w] [port] [slave] [format] <data...> <speed> //i2c读写 [r/w]:读或写 [port]:i2c通道 [slave]:从地址 [format]:i2c数据格式 <data...>:i2c数据 <speed>:i2c读写速度
5.3. I2C开发¶
参考RISCV_I2C使用参考
6. IR使用¶
6.1. Sysdecs配置¶
使用ir需要通过sysdecs配置打开对应irX节点, 并配置padmux, 以ir0为例:
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<ir0> [reg_u32_u16] 0x22CE200 0x200; [interrupts_u32_u32] INT_FIQ_IR_1 0xFFFF; [camclk_u32] CAMCLK_ir_nonpm0; [status_u8] 1; <padmux> [schematic_u32_u32_u32] PAD_GPIOC_00 PINMUX_FOR_IR0_IN_MODE_1 MDRV_PUSE_IR, PAD_GPIOC_01 PINMUX_FOR_IR1_IN_MODE_1 MDRV_PUSE_IR1, PAD_GPIOC_02 PINMUX_FOR_IR2_IN_MODE_1 MDRV_PUSE_IR2, PAD_GPIOC_03 PINMUX_FOR_IR3_IN_MODE_1 MDRV_PUSE_IR3, PAD_PM_GPIO2 PINMUX_FOR_PM_IR_IN_MODE_1 MDRV_PUSE_IR4; [status_u8] 1;
6.2. 测试demo使用¶
1)打开ir测试demo宏定义__VER_IR__
2)测试demo路径
sc/driver/sysdriver/ir/drv/pub/drv_ir.h sc/driver/sysdriver/ir/drv/src/drv_ir_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
ir [group] [decode_mode] [customer code(16bit)]//使能IR接收信号并解码 [group]:指定group,可选0~4 [decode_mode]:解码模式,1:full,2:raw,3:rc5 [customer code(16bit)]:自定义16bit解码
6.3. IR开发¶
参考RISCV_IR使用参考
7. MSPI使用¶
7.1. 配置¶
Sysdecs配置:
使用mspi需要通过sysdecs配置打开mspiX节点,配置padmux,以mspi0 mode1为例:
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<mspi0> [reg_u32_u16] 0x2222000 0x200; [interrupts_u8] INT_IRQ_MSPI_1; [camclk_u16] CAMCLK_mspi1; [dma_u8] 0; [cs_num_u8] 2; [cs_ext_u32] PAD_UNKNOWN; [pad_mux_u16] 0; [4to3_mode_u8] 0; [clk_out_mode_u32] 0; [status_u8] 1; <padmux> [schematic_u32_u32_u32] PAD_GPIOE_14 PINMUX_FOR_MSPI0_MODE_1 MDRV_PUSE_SPI0_CK, PAD_GPIOE_15 PINMUX_FOR_MSPI0_MODE_1 MDRV_PUSE_SPI0_CZ, PAD_GPIOE_16 PINMUX_FOR_MSPI0_MODE_1 MDRV_PUSE_SPI0_DI, PAD_GPIOE_17 PINMUX_FOR_MSPI0_MODE_1 MDRV_PUSE_SPI0_DO, [status_u8] 1;
7.2. 测试demo使用¶
1)打开mspi测试demo宏定义__VER_MSPI__
2)测试demo路径
sc/driver/sysdriver/mspi/drv/pub/drv_mspi.h sc/driver/sysdriver/mspi/drv/src/drv_mspi_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
spi [r/e/w] [port] [cs] [speed] //spi读/写/擦除 [r/e/w]:读/写/擦除 [port]:mspi通道 [cs]:片选 [speed]:通讯速率
7.3. SPI开发¶
参考RISCV_SPI使用参考
8. UART使用¶
8.1. 配置¶
Sysdecs配置:
使用uart需要通过sysdecs配置打开uartX节点, 配置padmux, 以fuart mode2为例:
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<fuart> [reg_u32] 0x2220400, 0x2220600; [interrupts_u32] INT_IRQ_FUART, INT_IRQ_UART_MERGE, INT_IRQ_UART_MERGE; [camclk_u16] CAMCLK_fuart; [pad_u16] 2; [sctpen_u8] 0; [dma_u8] 0; [digmux_u8] 1; [status_u8] 1; <padmux> [schematic_u32_u32_u32] PAD_GPIOC_02 PINMUX_FOR_FUART_MODE_2 MDRV_PUSE_FUART_RX, PAD_GPIOC_03 PINMUX_FOR_FUART_MODE_2 MDRV_PUSE_FUART_TX, PAD_GPIOC_04 PINMUX_FOR_FUART_MODE_2 MDRV_PUSE_FUART_CTS, PAD_GPIOC_05 PINMUX_FOR_FUART_MODE_2 MDRV_PUSE_FUART_RTS; [status_u8] 1;
8.2. 测试demo使用¶
1)uart测试demo默认打开,不用配置宏
2)测试demo路径
sc/driver/sysdriver/uart/drv/pub/drv_uart.h sc/driver/sysdriver/uart/drv/src/drv_uart_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
uart [uartID] //uart读写 [uartID]:uart通道, uart0~uart8加上fuart和pm_uart
8.3. UART开发¶
参考RISCV_UART使用参考
9. Capture使用¶
9.1.Sysdecs配置¶
使用capture功能需要通过sysdecs配置打开对应captureX节点, 并配置capture相关padmux,以capture0举例
sc\driver\sysdriver\sysdesc\hal\pcupid\pub\pcupid-default.sys:
<capture0> [reg_u32] 0x22CE000; [interrupts_u32] INT_IRQ_CAPTURE; [camclk_u16] CAMCLK_pwm_capture; [channel_u8] 0, 1; [pulse_cal_mode_u8] 0; [pulse_cal_chan_u8] 0; [deglitch_u32] 0; [status_u8] 1; <padmux> [schematic_u32_u32_u32] PAD_OUTP_CH0 PINMUX_FOR_PWMIN0_MODE_1 MDRV_PUSE_PWMIN0, PAD_OUTN_CH0 PINMUX_FOR_PWMIN1_MODE_1 MDRV_PUSE_PWMIN1, PAD_OUTP_CH1 PINMUX_FOR_PWMIN2_MODE_1 MDRV_PUSE_PWMIN2, PAD_OUTN_CH1 PINMUX_FOR_PWMIN3_MODE_1 MDRV_PUSE_PWMIN3, PAD_OUTP_CH2 PINMUX_FOR_PWMIN4_MODE_1 MDRV_PUSE_PWMIN4, PAD_OUTN_CH2 PINMUX_FOR_PWMIN5_MODE_1 MDRV_PUSE_PWMIN5, PAD_OUTP_CH3 PINMUX_FOR_PWMIN6_MODE_1 MDRV_PUSE_PWMIN6, PAD_OUTN_CH3 PINMUX_FOR_PWMIN7_MODE_1 MDRV_PUSE_PWMIN7, PAD_GPIOE_10 PINMUX_FOR_PWMIN8_MODE_3 MDRV_PUSE_PWMIN8, PAD_GPIOD_00 PINMUX_FOR_PWMIN9_MODE_2 MDRV_PUSE_PWMIN9, PAD_GPIOE_14 PINMUX_FOR_PWMIN10_MODE_3 MDRV_PUSE_PWMIN10, PAD_GPIOE_16 PINMUX_FOR_PWMIN11_MODE_3 MDRV_PUSE_PWMIN11; [status_u8] 1;
9.2. 测试demo使用¶
1)打开pwm测试demo宏定义:__VER_CAPTURE__
2)测试demo路径
sc/driver/sysdriver/capture/drv/pub/drv_capture.h sc/driver/sysdriver/capture/drv/src/drv_capture_test.c
3)测试指令
按如上配置后编译烧入riscv固件, 连接riscv串口可使用如下命令行进行测试:
capture <config> [group] [channel] [edge] [enable] //设定capture指定group和channel的边沿捕获方式并使能 [group] 指定capture的group,可选0~7 [channel]:指定capture通道,group0可选0~1,group1可选2~3,group2可选4~5,group3可选6~7,group4可选8,group5可选9,group6可选10,group7可选11 capture <period> [group] [channel] //捕获pwm周期的频率和占空比 [group] 指定capture的group,可选0~7 [channel]:指定capture通道,group0可选0~1,group1可选2~3,group2可选4~5,group3可选6~7,group4可选8,group5可选9,group6可选10,group7可选11 capture <pulse> [group] [channel] //捕获脉冲数量 [group] 指定capture的group,可选0~7 [channel]:指定capture通道,group0可选0~1,group1可选2~3,group2可选4~5,group3可选6~7,group4可选8,group5可选9,group6可选10,group7可选11
9.3. Capture开发¶
参考RISCV_Capture使用参考