本文目录一览

1,求助STM32F407 如何采集外接的一个16位AD数据信号

用spi接口的16位的采集芯片,那么单片机通过spi和AD转换芯片通信,希望对您能够有用。
高速ad的采集容易受到各种干扰,比如工频干扰。过滤的目的就是为了去掉干扰,提高测量精度。

求助STM32F407 如何采集外接的一个16位AD数据信号

2,STM32F407宏定义定义的地址的疑惑

具体查看STM32数据手册的存储器映像那一页。0x40000000是整个片内外设的基地址,GPIOA在APB2总线上,APB2的偏移是0x10000,GPIOA在APB2上的偏移是0x800。

STM32F407宏定义定义的地址的疑惑

3,stm32 AD转换器的数据寄存器是怎样的16个通道共用一个地址还

stm32的数据寄存器是规则通道共用一个ADC_DR,注入通道有各自的寄存器ADC_JDR。
你也说了,是寄存器组(多个寄存器),不是寄存器。比如adc1,它的寄存器起始地址是0x40012400,然后别的寄存器依次往后排,因为寄存器是32位的,所以后一个寄存器地址比前一个大0x4,这就造成了一个adc的寄存器地址是一个范围。

stm32 AD转换器的数据寄存器是怎样的16个通道共用一个地址还

4,为什么stm32寄存器组的起始地址是一个范围而不是一个确定的值

你也说了,是寄存器组(多个寄存器),不是寄存器。比如ADC1,它的寄存器起始地址是0x40012400,然后别的寄存器依次往后排,因为寄存器是32位的,所以后一个寄存器地址比前一个大0x4,这就造成了一个ADC的寄存器地址是一个范围。

5,如何读stm32f407 id

四、做软件加密时注意1,不要在程序中直接出现id地址,例如STM32:1FFF7A10 1FFF7A14 1FFF7A18 STM8: 0x4865~0x48702, 利用校验和或是crc对程序区进行校验,防止改程序
F4有96位ID,存储的起始地址是0x1FFF7A10,用下面的方法可以获取ID。void cpuidGetId(void) mcuID[0] = *(__IO u32*)(0x1FFF7A10); mcuID[1] = *(__IO u32*)(0x1FFF7A14); mcuID[2] = *(__IO u32*)(0x1FFF7A18);}
stm32f407开发板上有板载的st-link吗?要是有,将st-link的接口插到电脑的usb口上,然后装驱动。如果没有板载的st-link,需要外接一个st-link,先找个st-link,将其连接到电脑的usb口上,然后再安装驱动。

6,STM32的GPIO 7个寄存器地址是多少 映射地址怎么设置

以GPIOA为例:GPIOA 的基地址是怎么算出来的呢?因为 GPIO 都是挂载在 APB2 总线之上,所以它的基地址是由 APB2 总线的基地址+GPIOA 在 APB2 总线上的偏移地址决定的。同理依次类推,我们便可以算出 GPIOA 基地址了。这里设计到总线的一些知识,我们在后面会讲到。下面我们打开 stm32f10x.h 定位到 GPIO_TypeDef 定义处:typedef struct__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;} GPIO_TypeDef;然后定位到:#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)可以看出,GPIOA 是将 GPIOA_BASE 强制转换为 GPIO_TypeDef 指针,这句话的意思是,GPIOA 指向地址 GPIOA_BASE,GPIOA_BASE 存放的数据类型为 GPIO_TypeDef。然后双击“GPIOA_BASE”选中之后右键选中“Go to definition of ” ,便可一查看 GPIOA_BASE的宏定义:#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)依次类推,可以找到最顶层:#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)#define PERIPH_BASE ((uint32_t)0x40000000)所以我们便可以算出 GPIOA 的基地址位:GPIOA_BASE= 0x40000000+0x10000+0x0800=0x40010800这些都可以在《STM32开发指南-库函数版本_V1.3》(P.123)4.6节 【MDK 中寄存器地址名称映射分析】中找到,《STM32 中文参考手册 V10》中的寄存器地址映射表(P159)介绍的更详细,我想你应该有这两个手册吧?没有的话就下载吧,我已经上传了,费用。。。就不收了。不过话说回来啊,楼上的 08274061 说的其实没错,不看手册想学好32真的很难,我也在学32,刚好看到这一节,刚好碰见你的问题,就顺便解答了~~好好学吧同学~~很抱歉,回答者上传的附件已失效

7,请教使用stm32f407进行AD采样的问题

简单给你注释了下 : // AD IO口配置 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // 修改自己用的端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure)
官方例程,简单给你注释了下 : // ad io口配置 gpio_inittypedef gpio_initstructure; gpio_initstructure.gpio_pin = gpio_pin_4; // 修改自己用的端口 gpio_initstructure.gpio_mode = gpio_mode_ain; gpio_init(gpioa, &gpio_initstructure); //ad 初始化 dac_initstructure.dac_trigger = dac_trigger_software; //软件触发 dac_initstructure.dac_wavegeneration = dac_wavegeneration_noise; dac_initstructure.dac_lfsrunmask_triangleamplitude = dac_lfsrunmask_bits8_0; dac_initstructure.dac_outputbuffer = dac_outputbuffer_enable; dac_init(dac_channel_1, &dac_initstructure); dac_cmd(dac_channel_1, enable); //使能 dac_softwaretriggercmd(dac_channel_1, enable); //开始转换

8,请教使用stm32f407进行AD采样的

官方例程,简单给你注释了下 : // AD IO口配置 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // 修改自己用的端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); //AD 初始化 DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software; //软件触发 DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_Noise; DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(DAC_Channel_1, &DAC_InitStructure); DAC_Cmd(DAC_Channel_1, ENABLE); //使能 DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE); //开始转换
// ad io口配置 gpio_inittypedef gpio_initstructure; gpio_initstructure.gpio_pin = gpio_pin_4; // 修改自己用的端口 gpio_initstructure.gpio_mode = gpio_mode_ain; gpio_init(gpioa, &gpio_initstructure); //ad 初始化 dac_initstructure.dac_trigger = dac_trigger_software; //软件触发 dac_initstructure.dac_wavegeneration = dac_wavegeneration_noise; dac_initstructure.dac_lfsrunmask_triangleamplitude = dac_lfsrunmask_bits8_0; dac_initstructure.dac_outputbuffer = dac_outputbuffer_enable; dac_init(dac_channel_1, &dac_initstructure); dac_cmd(dac_channel_1, enable); //使能 dac_softwaretriggercmd(dac_channel_1, enable); //开始转换

9,STM32F072多通道ADC采集两路数据相同怎么解决

1. 请参照附件档 (STM32?s ADC modesand their applications).2. 请参照以下网址:ADC modeIndependent-mode 和 Multi-mode (Dual-mode or Triple-mode)Independent mode 表示此 ADC 独立运作。multi-mode 表示ADC同时合作执行。Independent modeADC 通道配置 通道可分成 regular, injected 二组,每个通道能任意属於哪一组。@Regular group会依序被转换,但顺序可自由配置,最多 16 个。可以选择 ADC 开始运作时就进行转换或等待外来触发转换。有二种控制条件,组合出四种模式:1.Single Channel Single conversion mode: 单一通道进行一次转换。2.Single Channel Continuous conversion mode: 单一通道持续进行转换。3&4.Scan mode: 也分为转换一次与连续转换,但因为 data register 只有一个,所以要用 DMA 避免资料遗失。DMA: 每个通道转换完成都发出一个 DMA request, 可设定为每当 DMA 发生就触发一次中断,即可读出每个通道所转换的值,也可以全部转换後一次读取全部通道的值。@Injected group最多 4 个通道,且只能设为等待触发而转换。(插队)触发时若正在转换规则通道则会暂停而先处理注入通道,完毕後恢复原运作。如果转换注入通道过程中规则通道转换被触发,不会中止注入通道转换,而是转换完毕才进行规则通道转换。Auto-injected mode 可设注入通道转换於规则通道 scan 完成後,可实现一个 iteration 执行 20 次转换。Discontinuous mode: 见regular group,但在 injected group 强迫每批只能一个通道(n=1)。Multi Mode有别於STM32F407,STM32F429可以将3个ADC都开成Multi Mode,也就是说原本Multi Mode只有Dual Mode,现在多了Triple Mode.ADC1, ADC2 ADC3分别担任 master & 两个slave.1.Injected simultaneous modeDual Mode:-两个 ADCs 同时触发而转换 injected groups.Triple Mode:-三个 ADCs 同时触发而转换 injected groups.2.Regular simultaneous modeDual Mode:-2 ADCs 外部讯号同时触发,一起对所负责通道依序转换,结果存在 ADC1 DR.-禁止二个 ADCs 同时对同一通道转换以免误差。Triple Mode.以上两者的差别在於不同的group3.Interleaved modeDual Mode:透过两个以上的ADC交互转换同一个通道可以达到更高的取样频率由於同使只能有一个ADC对同一个通道做采样,因此必须要增加两个cycle的Delay time以免 phase overlap.Triple Mode.4.Alternate trigger modeDual Mode:只能用在双方的 injected groups, 用同样外部讯号轮流接受触发。如单数次触发到 ADC1 injected group; 双数次触发到 ADC2 injected group.Triple Mode.

10,STM32F407怎么对ADC采集的12位数据进行FFT

FFT算法,需要你自己做了,网上有现成的例子。你要做的是:配置好ADC采用通道;再根据需要配置一个定时器触发ADC采样通道,读取数据存到缓存中;根据缓存中的数据做FFT算法;主要问题是:这个定时器设置的周期需要你自己决定,因为多久做一次FFT,需要多少采样数据都是你来决定的
1.adc对应管脚介绍|---管脚------对应adc----||---管脚------对应adc----||pa0 <---> adc123_in0 || pa1 <---> adc123_in1 ||pa2 <---> adc123_in2 || pa3 <---> adc123_in3 ||pa4 <---> adc12_in4 || pa5 <---> adc12_in5 ||pa6 <---> adc12_in6 || pa7 <---> adc12_in7 ||pb0 <---> adc12_in8 || pb1 <---> adc12_in9 ||pc4 <---> adc12_in14 || pc5 <---> adc12_in15 ||pc0 <---> adc123_in10|| pc1 <---> adc123_in11||pc2 <---> adc123_in12|| pc3 <---> adc123_in13||pf3 <---> adc3_in9 || pf4 <---> adc3_in14 ||pf5 <---> adc3_in15 || pf6 <---> adc3_in4 ||pf7 <---> adc3_in5 || pf8 <---> adc3_in6 ||pf9 <---> adc3_in7 || pf10<---> adc3_in8 |2.配置查询模式如下void adc_configuration(void)gpio_inittypedef gpio_initstructure;adc_inittypedef adc_initstructure;rcc_ahb1periphclockcmd(rcc_ahb1periph_gpioa, enable);rcc_apb2periphclockcmd(rcc_apb2periph_adc1, enable);//初始化gpioa的pin_0为模拟量输入gpio_initstructure.gpio_pin = gpio_pin_0;gpio_initstructure.gpio_mode = gpio_mode_an;gpio_initstructure.gpio_pupd = gpio_pupd_nopull ;gpio_init(gpioa, &gpio_initstructure);adc_deinit();adc_initstructure.adc_resolution = adc_resolution_12b; //精度为12位 adc_initstructure.adc_scanconvmode = disable; //扫描转换模式失能,单通道不用adc_initstructure.adc_continuousconvmode = enable; //连续转换使能adc_initstructure.adc_externaltrigconvedge = adc_externaltrigconvedge_none; //不用外部触发,软件触发转换adc_initstructure.adc_externaltrigconv = adc_externaltrigconv_t1_cc1;adc_initstructure.adc_dataalign = adc_dataalign_right; //数据右对齐,低字节对齐adc_initstructure.adc_nbrofconversion = 1; //规定了顺序进行规则转换的adcadc_initstructure.adc_nbrofconversion = 1; //规定了顺序进行规则转换的adc通道的数目adc_init(adc1, &adc_initstructure);adc_regularchannelconfig(adc1, adc_channel_0, 1, adc_sampletime_3cycles);//adc,通道,1转换,所选通道的采样周期adc_cmd(adc1, enable); //使能adc_softwarestartconv(adc1); //软件启动转换}unsigned short getadcvalue(void)return adc_getconversionvalue(adc1);

文章TAG:基地STM32F407  ADC1基地址是多少  求助STM32F407  如何采集外接的一个16位AD数据信号  
下一篇