问答

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

21ic问答首页 - TAG - AT32F407
  • DAC问题 sos

    [color=rgb(68, 68, 68)][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]用Work_Bench创建了一个AT的工程,在做实验时能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。[/size][/font][/backcolor][/color] [color=rgb(68, 68, 68)][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]四、DAC问题,初始化代码没有问题,初始化代码如下:[/size][/font][/backcolor][/color][font=Tahoma, Microsoft Yahei, Simsun][color=#444444][backcolor=rgb(242, 249, 253)][size=16px]void wk_dac_init(void) { /* add user code begin dac_init 0 */ /* add user code end dac_init 0 */ gpio_init_type gpio_init_struct; gpio_default_para_init(&gpio_init_struct); /* add user code begin dac_init 1 */ /* add user code end dac_init 1 */ /*gpio------------------------------------------------------------------------------*/ /* configure the OUT1 pin */ gpio_init_struct.gpio_pins = DAC1_PIN; gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG; gpio_init_struct.gpio_pull = GPIO_PULL_NONE; gpio_init(DAC1_GPIO_PORT, &gpio_init_struct); /* configure the OUT2 pin */ gpio_init_struct.gpio_pins = DAC2_PIN; gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG; gpio_init_struct.gpio_pull = GPIO_PULL_NONE; gpio_init(DAC2_GPIO_PORT, &gpio_init_struct); /*dac OUT1 init--------------------------------------------------------------------*/ dac_trigger_enable(DAC1_SELECT, TRUE); dac_trigger_select(DAC1_SELECT, DAC_SOFTWARE_TRIGGER); dac_wave_generate(DAC1_SELECT, DAC_WAVE_GENERATE_TRIANGLE); /*Triangular amplitude select------------------------------------------------------*/ dac_mask_amplitude_select(DAC1_SELECT, DAC_LSFR_BITB0_AMPLITUDE_4095);//DAC_LSFR_BIT10_AMPLITUDE_3);// dac_output_buffer_enable(DAC1_SELECT, TRUE); dac_dma_enable(DAC1_SELECT, TRUE); dac_enable(DAC1_SELECT, TRUE); /*dac OUT2 init--------------------------------------------------------------------*/ dac_trigger_enable(DAC2_SELECT, TRUE); dac_trigger_select(DAC2_SELECT, DAC_SOFTWARE_TRIGGER); dac_wave_generate(DAC2_SELECT, DAC_WAVE_GENERATE_TRIANGLE); /*Triangular amplitude select------------------------------------------------------*/ dac_mask_amplitude_select(DAC2_SELECT, DAC_LSFR_BITA0_AMPLITUDE_2047);//DAC_LSFR_BIT90_AMPLITUDE_1023);//DAC_LSFR_BIT20_AMPLITUDE_7);// dac_output_buffer_enable(DAC2_SELECT, TRUE); dac_enable(DAC2_SELECT, TRUE); /* add user code begin dac_init 2 */ /* add user code end dac_init 2 */ } 初始化后PA_4,PA_5没有动静,将这两行放入一段代码中, dac_software_trigger_generate(DAC1_SELECT); dac_software_trigger_generate(DAC2_SELECT); DAC三角波就出来了,速度非常慢,我选择的是软件触发,就将这两行放到AT32F403a_407_int.c中的tick函数中,结果是能出来稍快一点的三角波,并且比较圆滑。看厂家提供的工程是采用time2触发DAC,如果仅仅用软件触发我的方法肯定不对,但应该如何写呢? 谢谢 [/size][/backcolor][/color][/font]

    AT32F407 dac输出 DAC pi gp GPIO

    765浏览量 0回复量 关注量
  • AT32F407多路ADC问题 sos

    [i=s] 本帖最后由 zhjb1 于 2024-11-13 17:42 编辑 [/i] [color=#444444][color=rgb(68, 68, 68)][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]用Work_Bench创建了一个AT的工程,在做实验室能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。[/size][/font][/backcolor][/size][/font][/backcolor][/color][/color][color=#444444][color=rgb(68, 68, 68)][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]二、多路ADC采样[/size][/font][/backcolor][/size][/font][/backcolor][/color][/color] [color=#444444][color=rgb(68, 68, 68)][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]在AT_WORK_BENCH中设置了ADC1的IN1,IN2,IN3,IN6,IN7,其中IN7连接内部温度传感器。[/size][/font][/backcolor][/size][/font][/backcolor][/color][/color] [color=#444444][color=rgb(68, 68, 68)][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]AWB生成的代码看着挺好也非常漂亮,初始化代码如下:[/size][/font][/backcolor][/size][/font][/backcolor][/color][/color] [backcolor=rgb(255, 255, 255)][backcolor=rgb(242, 249, 253)][font=Tahoma, Microsoft Yahei, Simsun][color=#444444][size=16px]/**[/size] [size=16px] * [url=home.php?mod=space&uid=247401]@brief[/url] init adc1 function.[/size] [size=16px] * @param none[/size] [size=16px] * @retval none[/size] [size=16px] */[/size] [size=16px]void wk_adc1_init(void)[/size] [size=16px]{[/size] [size=16px] /* add user code begin adc1_init 0 */[/size] [size=16px] /* add user code end adc1_init 0 */[/size] [size=16px] gpio_init_type gpio_init_struct;[/size] [size=16px] adc_base_config_type adc_base_struct;[/size] [size=16px] gpio_default_para_init(&gpio_init_struct);[/size] [size=16px] /* add user code begin adc1_init 1 */[/size] [size=16px] /* add user code end adc1_init 1 */[/size] [size=16px] /*gpio--------------------------------------------------------------------*/ [/size] [size=16px] /* configure the IN1 pin */[/size] [size=16px] gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;[/size] [size=16px] gpio_init_struct.gpio_pins = ADC0_PIN;[/size] [size=16px] gpio_init(ADC0_GPIO_PORT, &gpio_init_struct);[/size] [size=16px] /* configure the IN2 pin */[/size] [size=16px] gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;[/size] [size=16px] gpio_init_struct.gpio_pins = ADC1_PIN;[/size] [size=16px] gpio_init(ADC1_GPIO_PORT, &gpio_init_struct);[/size] [size=16px] /* configure the IN3 pin */[/size] [size=16px] gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;[/size] [size=16px] gpio_init_struct.gpio_pins = ADC2_PIN;[/size] [size=16px] gpio_init(ADC2_GPIO_PORT, &gpio_init_struct);[/size] [size=16px] /* configure the IN6 pin */[/size] [size=16px] gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;[/size] [size=16px] gpio_init_struct.gpio_pins = ADC3_PIN;[/size] [size=16px] gpio_init(ADC3_GPIO_PORT, &gpio_init_struct);[/size] [size=16px] /* configure the IN7 pin */[/size] [size=16px] gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;[/size] [size=16px] gpio_init_struct.gpio_pins = ADC4_PIN;[/size] [size=16px] gpio_init(ADC4_GPIO_PORT, &gpio_init_struct);[/size] [size=16px] crm_adc_clock_div_set(CRM_ADC_DIV_6);[/size] [size=16px] adc_tempersensor_vintrv_enable(TRUE);[/size] [size=16px] /*adc_common_settings-------------------------------------------------------------*/ [/size] [size=16px] adc_combine_mode_select(ADC_INDEPENDENT_MODE);[/size] [size=16px] /*adc_settings--------------------------------------------------------------------*/ [/size] [size=16px] adc_base_default_para_init(&adc_base_struct);[/size] [size=16px] adc_base_struct.sequence_mode = TRUE;[/size] [size=16px] adc_base_struct.repeat_mode = TRUE;[/size] [size=16px] adc_base_struct.data_align = ADC_RIGHT_ALIGNMENT;[/size] [size=16px] adc_base_struct.ordinary_channel_length = 5;[/size] [size=16px] adc_base_config(ADC1, &adc_base_struct);[/size] [size=16px] /* adc_ordinary_conversionmode-------------------------------------------- */[/size] [size=16px] adc_ordinary_channel_set(ADC1, ADC_CHANNEL_1, 1, ADC_SAMPLETIME_1_5);[/size] [size=16px] adc_ordinary_channel_set(ADC1, ADC_CHANNEL_2, 2, ADC_SAMPLETIME_1_5);[/size] [size=16px] adc_ordinary_channel_set(ADC1, ADC_CHANNEL_3, 3, ADC_SAMPLETIME_1_5);[/size] [size=16px] adc_ordinary_channel_set(ADC1, ADC_CHANNEL_6, 4, ADC_SAMPLETIME_1_5);[/size] [size=16px] adc_ordinary_channel_set(ADC1, ADC_CHANNEL_16, 5, ADC_SAMPLETIME_1_5);[/size] [size=16px] adc_ordinary_conversion_trigger_set(ADC1, ADC12_ORDINARY_TRIG_SOFTWARE, TRUE);[/size] [size=16px] adc_ordinary_part_mode_enable(ADC1, FALSE);[/size] [size=16px] adc_dma_mode_enable(ADC1, TRUE);[/size] [size=16px] /**[/size] [size=16px] * Users need to configure ADC1 interrupt functions according to the actual application.[/size] [size=16px] * 1. Call the below function to enable the corresponding ADC1 interrupt.[/size] [size=16px] * --adc_interrupt_enable(...)[/size] [size=16px] * 2. Add the user's interrupt handler code into the below function in the at32f403a_407_int.c file.[/size] [size=16px] * --void ADC1_2_IRQHandler(void)[/size] [size=16px] */[/size] [size=16px] adc_enable(ADC1, TRUE);[/size] [size=16px] /* adc calibration-------------------------------------------------------- */[/size] [size=16px] adc_calibration_init(ADC1);[/size] [size=16px] while(adc_calibration_init_status_get(ADC1));[/size] [size=16px] adc_calibration_start(ADC1);[/size] [size=16px] while(adc_calibration_status_get(ADC1));[/size] [size=16px] /* add user code begin adc1_init 2 */[/size] [size=16px] /* add user code end adc1_init 2 */[/size] [size=16px]}[/size] [size=16px]初始化之后在main中定时调用下边的ADC函数:[/size] [size=16px]//Test ADCs[/size] [size=16px]void adcTest(void){[/size] [size=16px] int i;[/size] [size=16px] adc_calibration_start(ADC1);//dma_trans_complete_flag = 0;这条语句也不行[/size] [size=16px] adc_ordinary_software_trigger_enable(ADC1, TRUE);[/size] [size=16px] //while(!dma_trans_complete_flag);[/size] [size=16px] while(!adc_calibration_status_get(ADC1));//adc_calibration_status_get(ADC1)[/size] [size=16px] for(i=0;i<5;i++){[/size] [size=16px] adcx[i]=adc_combine_ordinary_conversion_data_get();//adc_preempt_conversion_data_get(ADC1,i);//adc1_ordinary_valuetab[i];//(double)adc1_ordinary_value;[/i][/i][/size][i][i] [size=16px] }[/size] [size=16px]}[/size] [size=16px]在STM例程中获得组数据不用循环赋值,只需要:[/size] [size=16px]HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC_Result,ADC_NUMOFCHANNEL);[/size] [size=16px]而在WB中用那条语句也不通,上述语句倒是显示数据了,前4个通道为固定值1236(等效0~4095),第5个听到位0064稍有变化,在1个bit之间,基本稳定。所有5个通道数值***不变,无论你加电位器与否。[/size] 暂时没有辙了,发帖求助。 声明:用STM代码移植过来可以成功,但希望WB能成功。 先谢谢了 [/i][/i][/color][/font][/backcolor][/backcolor]

    f407 多路ADC AT32F407 pi IO

    685浏览量 0回复量 关注量
  • stm32f107的程序可以直接烧入at32f407吗?

    [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]有个stm32f107的产品 ,不想重新开发,想直接替换芯片和程序可以吗?[/size][/font][/backcolor][/color]

    芯片 开发 直接 STM32F107 AT32F407 国产芯片

    16660浏览量 10回复量 关注量
  • 问AT32F407中TMR6,TMR7和DAC同步问题 sos

    看到开发手册中说与dac同步是TMR6和TMR7特有的?但是看到DAC中发现TMR2之类的TRGOUT信号,都可以触发dac,与这此定时器的触发信号相比,TMR6/7的TRGOUT有特别吗,能否给个时序图。另外 ,TMR6/7溢出事件同样可以做为DMA请求,那是否同样与DMA具备同步。另外,手册中DMA请求表9-3,有TMR6/DAC_CH2,和TMR6_UP/DAC_CH2.这里的TMR6_UP是指什么,找不到另外的说明。

    AT32F407 DAC DMA DM 信号 go

    1424浏览量 0回复量 关注量
  • AT32F407 网口经常死掉,???

    AT32F407 网口经常会死掉,原厂开发板测试,用TCP 不停收发数据(10MS间隔,100BYTE),1-3小时后 网口就死了,其他外设都是好的,,网口死后,不会产生中断了void EMAC_IRQHandler(void){},网口不能收也不能发了,

    AT32F407 ID 测试 开发板 开发 TE

    1195浏览量 2回复量 关注量
  • AT32F407移植问题 仿真和下载 sos

    芯片AT32F407VGT,MDK534,jlink V9.下载时提示 No Coreter-M SW Device Found, 网上复位引脚接地在松开,可以下载。 jlink v9 不能仿真。请问是否需要专用的调试工具。 程序 指示灯点亮

    AT32F407 移植 仿真 link ic TE

    2369浏览量 0回复量 关注量