STM32F407与AD9283实现100MSPS高速ADC

1.DCMI的简介

DCMI (Digital Camera Interface) 是一种专用于采集摄像头数据的硬件接口,广泛应用于嵌入式系统中。DCMI 支持多种图像数据格式,包括黑白图像、YUV、RGB 以及压缩的 JPEG 数据流。它能够与多种摄像头模块兼容,适用于不同类型的图像传感器。

DCMI 的主要工作原理基于行同步信号 (HSYNC) 和帧同步信号 (VSYNC),这两个信号用于确保数据的有序接收和同步。DCMI 可以直接将摄像头捕获的图像数据传输到系统的内存中,而无需经过大量的外部处理。对于一些支持内置预处理功能的摄像头模块,如调整大小、滤波等,DCMI 可以直接接收预处理后的图像数据,简化系统设计。

由于 DCMI 接口提供了高效、低延迟的数据传输能力,且支持多种图像格式,因此它在嵌入式图像处理应用中,特别是在需要处理视频流或高分辨率图像的应用场景中,被广泛采用。

2.AD9283

  • 低功耗:90 mW(100 MSPS)
  • 片内基准电压源和采样保持
  • 475 MHz模拟带宽
  • 信噪比:
    46.5 dB(100 MSPS,41 kHz输入频率)
  • 1 Vp-p模拟输入范围
  • +3.0 V单电源供电(2.7 V 至 3.6 V)
  • 省电模式:4.2 mW

AD9283 是一款高度集成的 8 位单芯片采样模数转换器 (ADC),内置片内采样保持电路,专门针对低成本、低功耗、小尺寸和易用性进行了优化。它在 100 MSPS(百万样本每秒)的高速转换速率下工作,能够在整个工作范围内保持优异的动态性能,使其非常适合对速度和精度要求较高的应用场景。

核心特性与优势

  1. 低功耗设计:AD9283 仅需一个 3.0V 单电源(工作范围为 2.7V 至 3.6V),这使其在能源敏感的应用中非常实用。此外,该 ADC 还支持省电模式,在此模式下总功耗可以降至仅 4.2 mW,适合需要超低功耗的便携设备或电池供电系统。

  2. 片内参考电压源:该 ADC 在大多数应用中不需要外部参考电压源或驱动器件。这不仅简化了系统设计,减少了外围组件,还提升了整体系统的稳定性和可靠性。

  3. 数字输出兼容性:AD9283 的数字输出是 TTL/CMOS 兼容的,且具有单独的输出电源引脚,支持 3.3V 或 2.5V 逻辑接口。这意味着该芯片可以方便地与多种微控制器和数字电路集成,提供灵活的接口配置,适应不同系统的需求。

  4. 编码器输入兼容性:AD9283 的编码器输入同样是 TTL/CMOS 兼容的,确保与常见的时钟源和控制信号电路的兼容性,从而增强了设计的灵活性。

  5. 封装与温度范围:AD9283 采用 20 引脚表面贴装塑料封装 (SSOP),这种封装形式不仅节省了电路板空间,还增强了芯片的机械稳定性和热性能。它的工作温度范围广泛,涵盖了 -40°C 到 +85°C 的工业温度范围,确保其在各种环境条件下的可靠工作。

AD9283 由于其高性能和低功耗的特性,非常适合应用在诸如无线通信设备、便携式仪器、数据采集系统、成像设备、以及其他需要高采样率与精度的应用中。其小尺寸和易用性使得它在现代紧凑型电子设备中得到了广泛应用。

3.引脚

  • PWRDWN (引脚 1): 电源下降引脚,控制芯片的省电模式。当此引脚被拉低时,芯片进入省电模式,降低功耗。

  • VREFOUT (引脚 2): 内部参考电压输出引脚,用于输出片内产生的基准电压。如果不使用外部基准电压,可以使用这个输出作为其他电路的参考。

  • VREFIN (引脚 3): 参考电压输入引脚。用户可以选择外部参考电压通过这个引脚输入,以替代内部基准电压。

  • GND (引脚 4, 7, 10, 17): 地引脚,连接到电源地。

  • VD (引脚 5, 9): 模拟电源电压引脚,通常连接到3.0V的电源。为芯片的模拟部分提供电源。

  • AIN# (引脚 6): 差分模拟输入的反相信号。用于输入模拟信号的负极部分,在单端模式下可以接地。

  • AIN (引脚 8): 模拟输入引脚,接收待转换的模拟信号(正极)。

  • ENCODE (引脚 11): 时钟输入引脚,用于向ADC提供时钟信号,该时钟决定了ADC的采样速率。

  • D7 (引脚 12) 到 D0 (引脚 20): 这8个引脚(D0-D7)为数字输出引脚,用于输出转换后的数字数据,D7是最高有效位(MSB),D0是最低有效位(LSB)。

  • VDD (引脚 15): 数字电源电压引脚,为芯片的数字部分提供电源。

    #include "ad9220_dcmi.h"
    
    uint32_t adc_convert_value[ADC_DMA_DATA_LENGTH]; 
    
    void MCO1_GPIO_Config(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;
    	RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);
    
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PA8 输出
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; 
    	GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed; 
    	GPIO_Init(GPIOA, &GPIO_InitStructure);
    }
    
    void dcmi_gpio_init(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;
    
    	RCC_AHB1PeriphClockCmd( DCMI_VSYNC_GPIO_CLK | DCMI_HSYNC_GPIO_CLK | DCMI_PIXCLK_GPIO_CLK|
    							DCMI_D0_GPIO_CLK| DCMI_D1_GPIO_CLK| DCMI_D2_GPIO_CLK| DCMI_D3_GPIO_CLK|
    							DCMI_D4_GPIO_CLK| DCMI_D5_GPIO_CLK| DCMI_D6_GPIO_CLK| DCMI_D7_GPIO_CLK| 
    							DCMI_D8_GPIO_CLK| DCMI_D9_GPIO_CLK| DCMI_D10_GPIO_CLK| DCMI_D11_GPIO_CLK, ENABLE);
    
    	/*初始化控制/同步信号线*/
    	GPIO_InitStructure.GPIO_Pin = DCMI_VSYNC_GPIO_PIN;//初始化帧同步信号线
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽
    	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;//上拉
    	GPIO_Init(DCMI_VSYNC_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_VSYNC_GPIO_PORT, DCMI_VSYNC_PINSOURCE, DCMI_VSYNC_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_HSYNC_GPIO_PIN ;//初始化行同步信号线
    	GPIO_Init(DCMI_HSYNC_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_HSYNC_GPIO_PORT, DCMI_HSYNC_PINSOURCE, DCMI_HSYNC_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_PIXCLK_GPIO_PIN ;//初始化像素时钟信号线
    	GPIO_Init(DCMI_PIXCLK_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_PIXCLK_GPIO_PORT, DCMI_PIXCLK_PINSOURCE, DCMI_PIXCLK_AF);
    
    	/*初始化数据信号线*/
    	GPIO_InitStructure.GPIO_Pin = DCMI_D0_GPIO_PIN ;
    	GPIO_Init(DCMI_D0_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D0_GPIO_PORT, DCMI_D0_PINSOURCE, DCMI_D0_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D1_GPIO_PIN ;
    	GPIO_Init(DCMI_D1_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D1_GPIO_PORT, DCMI_D1_PINSOURCE, DCMI_D1_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D2_GPIO_PIN ;
    	GPIO_Init(DCMI_D2_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D2_GPIO_PORT, DCMI_D2_PINSOURCE, DCMI_D2_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D3_GPIO_PIN ;
    	GPIO_Init(DCMI_D3_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D3_GPIO_PORT, DCMI_D3_PINSOURCE, DCMI_D3_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D4_GPIO_PIN ;
    	GPIO_Init(DCMI_D4_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D4_GPIO_PORT, DCMI_D4_PINSOURCE, DCMI_D4_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D5_GPIO_PIN ;
    	GPIO_Init(DCMI_D5_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D5_GPIO_PORT, DCMI_D5_PINSOURCE, DCMI_D5_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D6_GPIO_PIN ;
    	GPIO_Init(DCMI_D6_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D6_GPIO_PORT, DCMI_D6_PINSOURCE, DCMI_D6_AF);
    
    	GPIO_InitStructure.GPIO_Pin = DCMI_D7_GPIO_PIN ;
    	GPIO_Init(DCMI_D7_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D7_GPIO_PORT, DCMI_D7_PINSOURCE, DCMI_D7_AF);
    	
    	GPIO_InitStructure.GPIO_Pin = DCMI_D8_GPIO_PIN ;
    	GPIO_Init(DCMI_D8_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D8_GPIO_PORT, DCMI_D8_PINSOURCE, DCMI_D8_AF);
    	
    	GPIO_InitStructure.GPIO_Pin = DCMI_D9_GPIO_PIN ;
    	GPIO_Init(DCMI_D9_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D9_GPIO_PORT, DCMI_D9_PINSOURCE, DCMI_D9_AF);
    	
    	GPIO_InitStructure.GPIO_Pin = DCMI_D10_GPIO_PIN ;
    	GPIO_Init(DCMI_D10_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D10_GPIO_PORT, DCMI_D10_PINSOURCE, DCMI_D10_AF);
    	
    	GPIO_InitStructure.GPIO_Pin = DCMI_D11_GPIO_PIN ;
    	GPIO_Init(DCMI_D11_GPIO_PORT, &GPIO_InitStructure);
    	GPIO_PinAFConfig(DCMI_D11_GPIO_PORT, DCMI_D11_PINSOURCE, DCMI_D11_AF);	
    }
    
    
    void ad9220_dcmi_dma_init(void)
    {
    	DCMI_InitTypeDef DCMI_InitStructure;
    	DMA_InitTypeDef  DMA_InitStructure;
    	
    	/*** 配置DCMI接口 ***/
    	/* 使能DCMI时钟 */
    	RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);
    
    	/* DCMI 配置*/ 
    	DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;	
    	DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;	
    	DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;		
    	DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;			
    	DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;			
    	DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;	
    	DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_12b;
    	DCMI_Init(&DCMI_InitStructure); 	
    
    
    	DMA_InitStructure.DMA_Channel = DMA_Channel_1;  						
    	DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;				
    	DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&adc_convert_value;	
    	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;					
    	DMA_InitStructure.DMA_BufferSize =ADC_DMA_DATA_LENGTH; 					
    	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;		
    	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;					
    	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;	
    	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;			
    	DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;							
    	DMA_InitStructure.DMA_Priority = DMA_Priority_High;
    	DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;					
    	DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
    	DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_INC8;
    	DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
    
    	DMA_Init(DMA2_Stream1, &DMA_InitStructure);/*DMA初始化 */
    		
    	/* DMA2_Stream1 enable 开启 DMA */
    	DMA_Cmd(DMA2_Stream1,ENABLE);
    	while(DMA_GetCmdStatus(DMA2_Stream1) != ENABLE){}
    	
    	/* 配置中断 */
    	//注:这里应使用DMA来做中断触发,不用DCMI中断
     	
    }
    
    void dcmi_capture_control(FunctionalState state)
    {
    	DMA_Cmd(DMA2_Stream1, state);	//DMA2,Stream1
    	DCMI_Cmd(state); 				//DCMI采集数据
    	DCMI_CaptureCmd(state);			//DCMI捕获
    }
    
    void dcmi_dma_nvic_init(void)
    {
    	NVIC_InitTypeDef NVIC_InitStructure;
    	
    	NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream1_IRQn;		//DMA2 流 1 中断
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先级
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;		//子优先级
    	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;				//使能外部中断通道
    	NVIC_Init(&NVIC_InitStructure);//配置
    	//配置 DMA2 stream1 中断
    	DMA_ITConfig(DMA2_Stream1, DMA_IT_TC, ENABLE); //DMA_IT_TC:传输完成中断;	ENABLE:允许中断
    }
    
    void HSYNC_VSYNC_init(void)
    {    	 
    	GPIO_InitTypeDef  GPIO_InitStructure;
    
    	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOE时钟
    
    	//GPIOF9,F10初始化设置
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;//LED0和LED1对应IO口
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
    	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
    	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
    	GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIO
    
    	GPIO_SetBits(GPIOE,GPIO_Pin_0 | GPIO_Pin_1);//GPIOE0,E1设置高
    }
    
    #ifndef __AD9220_DCMI_H
    #define	__AD9220_DCMI_H
    
    #include "stm32f4xx.h"
    
    #define DCMI_DR_ADDRESS       (uint32_t)&DCMI->DR //宏定义 DCMI 数据寄存器的地址
    
    #define ADC_DMA_DATA_LENGTH 1024
    
    //DMCI 接口相关 IO 宏定义
    //VSYNC
    #define DCMI_VSYNC_GPIO_PORT        	GPIOB
    #define DCMI_VSYNC_GPIO_CLK         	RCC_AHB1Periph_GPIOB
    #define DCMI_VSYNC_GPIO_PIN         	GPIO_Pin_7
    #define DCMI_VSYNC_PINSOURCE        	GPIO_PinSource7
    #define DCMI_VSYNC_AF			          GPIO_AF_DCMI
    //HSYNC
    #define DCMI_HSYNC_GPIO_PORT        	GPIOA
    #define DCMI_HSYNC_GPIO_CLK         	RCC_AHB1Periph_GPIOA
    #define DCMI_HSYNC_GPIO_PIN         	GPIO_Pin_4
    #define DCMI_HSYNC_PINSOURCE        	GPIO_PinSource4
    #define DCMI_HSYNC_AF			          GPIO_AF_DCMI
    //PIXCLK
    #define DCMI_PIXCLK_GPIO_PORT        	GPIOA
    #define DCMI_PIXCLK_GPIO_CLK         	RCC_AHB1Periph_GPIOA
    #define DCMI_PIXCLK_GPIO_PIN         	GPIO_Pin_6
    #define DCMI_PIXCLK_PINSOURCE        	GPIO_PinSource6
    #define DCMI_PIXCLK_AF			          GPIO_AF_DCMI
    
    //数据信号线 D0-D11
    #define DCMI_D0_GPIO_PORT        	GPIOC
    #define DCMI_D0_GPIO_CLK         	RCC_AHB1Periph_GPIOC
    #define DCMI_D0_GPIO_PIN         	GPIO_Pin_6
    #define DCMI_D0_PINSOURCE        	GPIO_PinSource6
    #define DCMI_D0_AF			        GPIO_AF_DCMI
    
    #define DCMI_D1_GPIO_PORT        	GPIOC
    #define DCMI_D1_GPIO_CLK         	RCC_AHB1Periph_GPIOC
    #define DCMI_D1_GPIO_PIN         	GPIO_Pin_7
    #define DCMI_D1_PINSOURCE        	GPIO_PinSource7
    #define DCMI_D1_AF			        GPIO_AF_DCMI
    
    #define DCMI_D2_GPIO_PORT        	GPIOC
    #define DCMI_D2_GPIO_CLK         	RCC_AHB1Periph_GPIOC
    #define DCMI_D2_GPIO_PIN         	GPIO_Pin_8
    #define DCMI_D2_PINSOURCE        	GPIO_PinSource8
    #define DCMI_D2_AF			        GPIO_AF_DCMI
    
    #define DCMI_D3_GPIO_PORT        	GPIOC
    #define DCMI_D3_GPIO_CLK         	RCC_AHB1Periph_GPIOC
    #define DCMI_D3_GPIO_PIN         	GPIO_Pin_9
    #define DCMI_D3_PINSOURCE        	GPIO_PinSource9
    #define DCMI_D3_AF			        GPIO_AF_DCMI
    
    #define DCMI_D4_GPIO_PORT        	GPIOE
    #define DCMI_D4_GPIO_CLK         	RCC_AHB1Periph_GPIOE
    #define DCMI_D4_GPIO_PIN         	GPIO_Pin_4
    #define DCMI_D4_PINSOURCE        	GPIO_PinSource4
    #define DCMI_D4_AF			        GPIO_AF_DCMI
    
    #define DCMI_D5_GPIO_PORT        	GPIOB
    #define DCMI_D5_GPIO_CLK         	RCC_AHB1Periph_GPIOB
    #define DCMI_D5_GPIO_PIN         	GPIO_Pin_6
    #define DCMI_D5_PINSOURCE        	GPIO_PinSource6
    #define DCMI_D5_AF			        GPIO_AF_DCMI
    
    #define DCMI_D6_GPIO_PORT        	GPIOE
    #define DCMI_D6_GPIO_CLK         	RCC_AHB1Periph_GPIOE
    #define DCMI_D6_GPIO_PIN         	GPIO_Pin_5
    #define DCMI_D6_PINSOURCE        	GPIO_PinSource5
    #define DCMI_D6_AF			        GPIO_AF_DCMI
    
    #define DCMI_D7_GPIO_PORT        	GPIOE
    #define DCMI_D7_GPIO_CLK         	RCC_AHB1Periph_GPIOE
    #define DCMI_D7_GPIO_PIN         	GPIO_Pin_6
    #define DCMI_D7_PINSOURCE        	GPIO_PinSource6
    #define DCMI_D7_AF			        GPIO_AF_DCMI
    
    #define DCMI_D8_GPIO_PORT        	GPIOC
    #define DCMI_D8_GPIO_CLK         	RCC_AHB1Periph_GPIOC
    #define DCMI_D8_GPIO_PIN         	GPIO_Pin_10
    #define DCMI_D8_PINSOURCE        	GPIO_PinSource10
    #define DCMI_D8_AF			        GPIO_AF_DCMI
    
    #define DCMI_D9_GPIO_PORT        	GPIOC
    #define DCMI_D9_GPIO_CLK         	RCC_AHB1Periph_GPIOC
    #define DCMI_D9_GPIO_PIN         	GPIO_Pin_12
    #define DCMI_D9_PINSOURCE        	GPIO_PinSource12
    #define DCMI_D9_AF			        GPIO_AF_DCMI
    
    #define DCMI_D10_GPIO_PORT        	GPIOB
    #define DCMI_D10_GPIO_CLK         	RCC_AHB1Periph_GPIOB
    #define DCMI_D10_GPIO_PIN         	GPIO_Pin_5
    #define DCMI_D10_PINSOURCE        	GPIO_PinSource5
    #define DCMI_D10_AF			        GPIO_AF_DCMI
    
    #define DCMI_D11_GPIO_PORT        	GPIOD
    #define DCMI_D11_GPIO_CLK         	RCC_AHB1Periph_GPIOD
    #define DCMI_D11_GPIO_PIN         	GPIO_Pin_2
    #define DCMI_D11_PINSOURCE        	GPIO_PinSource2
    #define DCMI_D11_AF			        GPIO_AF_DCMI
    
    void MCO1_GPIO_Config(void);//配置 MCO1 输出
    void dcmi_gpio_init(void);//初始化 DCMI 接口使用的 GPIO
    void ad9220_dcmi_dma_init(void);//配置 DCMI/DMA 接收 AD9220 数据
    void dcmi_capture_control(FunctionalState state);//开启或关闭DCMI采集
    void dcmi_dma_nvic_init(void);//配置 DMA 中断
    void HSYNC_VSYNC_init(void);
    
    #endif /* __AD9220_DCMI_H */
    
    

    4.实物图

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值