问答

汇集网友智慧,解决技术难题

gaolf_2000

TA的家园币:122  

  • CIU32F003J5S6的ADC怎么达不到1M的速度?才133k呢?

    配置主频16M,AHB,APB1分频,ADC时钟为PCLK的1分频,采样3周期,只做1个通道的转换,软件触发,查询等待转换结束,voidsystem_clock_config(void){/*设置Flash读访问等待时间*/std_flash_set_latency(FLASH_LATENCY_0CLK);//16M/*使能RCH*/std_rcc_rch_enable();while(std_rcc_get_rch_ready()!=RCC_CSR1_RCHRDY);/*设置系统时钟源为RCH*/std_rcc_set_sysclk_source(RCC_SYSCLK_SRC_RCHDIV3);//16Mwhile(std_rcc_get_sysclk_source()!=RCC_SYSCLK_SRC_STATUS_RCHDIV3);/*设置AHB分频因子*/std_rcc_set_ahbdiv(RCC_HCLK_DIV1);/*设置APB分频因子*/std_rcc_set_apbdiv(RCC_PCLK_DIV1);/*配置系统时钟全局变量*/SystemCoreClock=RCH_VALUE/3;}voidadc_init(void){/*使能ADC时钟*/std_rcc_apb2_clk_enable(RCC_PERIPH_CLK_ADC);/*ADC_CK时钟为PCLK的1分频*/std_adc_clock_config(ADC_CK_DIV1);/*软件触发ADC*/std_adc_trig_sw();/*单次转换模式*/std_adc_conversion_mode_config(ADC_SINGLE_CONVER_MODE);/*采样时间配置,3个周期*/std_adc_sampt_time_config(ADC_SAMPTIME_3CYCLES);/*选择通道0*/std_adc_fix_sequence_channel_enable(ADC_CHANNEL_0);/*配置wait模式,避免数据未及时读取,转换溢出*/std_adc_wait_mode_enable();std_adc_internal_channel_vbgr_enable();/*使能ADC*/std_adc_enable();/*等待ADC使能状态稳定*/delayus(ADC_EN_DELAY);}利用一个IO口指示转换时间,在IO口高电平时间约为7.5us,相当于转换速度133kDEBUGIO_HIGH();std_adc_fix_sequence_channel_disable(ADC_CHANNEL_VBGR);std_adc_fix_sequence_channel_enable(ADC_CHANNEL_0);std_adc_start_conversion();while(std_adc_get_flag(ADC_FLAG_EOC)==0U);std_adc_clear_flag(ADC_FLAG_EOC);adc_buff[adc_counts]=std_adc_get_conversion_value();adc_counts++;DEBUGIO_LOW();

    ADC 速度 CIU32F003 ST rc BLE

    2025-06-30 0
  • AT32f423电池供电数据寄存器ERTC_BPRx半字操作不成功

    参照库里面的voidertc_bpr_data_write(ertc_dt_typedt,uint32_tdata){__IOuint32_treg=0;reg=ERTC_BASE+0x50+(dt*4);*(__IOuint32_t*)reg=data;}uint32_tertc_bpr_data_read(ertc_dt_typedt){__IOuint32_treg=0;reg=ERTC_BASE+0x50+(dt*4);return(*(__IOuint32_t*)reg);}写的:voidertc_bpr_16bitdata_write(uint16_tdt,uint16_tdata){__IOuint16_treg=0;reg=ERTC_BASE+0x50+(dt*2);*(__IOuint16_t*)reg=data;}uint16_tertc_bpr_16bitdata_read(uint16_tdt){__IOuint16_treg=0;reg=ERTC_BASE+0x50+(dt*2);return(*(__IOuint16_t*)reg);}时钟使能了,访问也使能了,但还是写不进去,读出来都是0xffff,不明白原因crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK,TRUE);pwc_battery_powered_domain_access(TRUE);

    2023-11-02 16
  • AT32f323电池供电数据寄存器ERTC_BPRx半字操作不成功

    参照库里面的voidertc_bpr_data_write(ertc_dt_typedt,uint32_tdata){__IOuint32_treg=0;reg=ERTC_BASE+0x50+(dt*4);*(__IOuint32_t*)reg=data;}uint32_tertc_bpr_data_read(ertc_dt_typedt){__IOuint32_treg=0;reg=ERTC_BASE+0x50+(dt*4);return(*(__IOuint32_t*)reg);}写的:voidertc_bpr_16bitdata_write(uint16_tdt,uint16_tdata){__IOuint16_treg=0;reg=ERTC_BASE+0x50+(dt*2);*(__IOuint16_t*)reg=data;}uint16_tertc_bpr_16bitdata_read(uint16_tdt){__IOuint16_treg=0;reg=ERTC_BASE+0x50+(dt*2);return(*(__IOuint16_t*)reg);}时钟使能了,访问也使能了,但还是写不进去,读出来都是0xffff,不明白原因crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK,TRUE);pwc_battery_powered_domain_access(TRUE);

    2023-11-02 0