历史上的今天
返回首页

历史上的今天

今天是:2025年04月20日(星期日)

正在发生

2021年04月20日 | STM32 AD交替触发模式程序

2021-04-20 来源:eefocus

简介:今天配置了STM32 AD的交替触发模式,采样基本做到1us一个样本了。通道10 1.5周期,使用交替模式,采样时间小于7.5 ADCclock 。

void Adc_Init(u16 period)


{


GPIO_InitTypeDef GPIO_InitStruct;


TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);


GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;


GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;


GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AIN;


GPIO_Init(GPIOC,&GPIO_InitStruct);


RCC->APB2ENR|=1<<9; //ADC1时钟使能


RCC->APB2ENR|=1<<10; //ADC2时钟使能


RCC->APB2RSTR|=1<<9; //ADC1复位


RCC->APB2RSTR&=~(1<<9);//复位结束


RCC->APB2RSTR|=1<<10; //ADC2复位


RCC->APB2RSTR&=~(1<<10);//复位结束


RCC->CFGR&=~(3<<14); //分频因子清零


RCC->CFGR|=2<<14; //SYSCLK/DIV2=12M ADC时钟设置为12M,ADC最大时钟不能超过14M!


ADC1->CR1=0x00070000;


ADC1->CR2=0x00180100;


ADC1->SQR3=0x0000000A;


ADC1->SMPR1=0x00000000;


ADC1->SMPR2=0x00000000;


ADC2->CR1=0x00000000;


ADC2->CR2=0x00180100;


ADC2->SQR3=0x0000000A;


ADC2->SMPR1=0x00000000; //通道10 1.5周期,使用交替模式,采样时间小于7.5 ADCclock


ADC2->SMPR2=0x00000000;


ADC1_DMA_Config((u32)&(ADC_conver),320);


ADC1->CR2|=1<<0; //开启AD转换器


ADC1->CR2|=1<<3; //使能复位校准


while(ADC1->CR2&1<<3); //等待校准结束


ADC1->CR2|=1<<2; //开启AD校准


while(ADC1->CR2&1<<2); //等待校准结束


ADC2->CR2|=1<<0; //开启AD转换器


ADC2->CR2|=1<<3; //使能复位校准


while(ADC2->CR2&1<<3); //等待校准结束


ADC2->CR2|=1<<2; //开启AD校准


while(ADC2->CR2&1<<2); //等待校准结束


TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);


TIM_TimeBaseStructure.TIM_Period =period-1; //计数器值


TIM_TimeBaseStructure.TIM_Prescaler =0;//预分频值,1分频


TIM_TimeBaseStructure.TIM_ClockDivision =0x0; //采样分频72mhz


TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数


TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);//初始化定时器结构体


TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);


TIM_Cmd(TIM3,ENABLE);


}


void ADC1_DMA_Config(u32 MemoryAddress,u16 num)


{


DMA_InitTypeDef DMA_InitStructure;


RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);


DMA_DeInit(DMA1_Channel1);


DMA_InitStructure.DMA_PeripheralBaseAddr=0x40012400+0x4c;


DMA_InitStructure.DMA_MemoryBaseAddr=MemoryAddress;


DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;


DMA_InitStructure.DMA_BufferSize=num;


DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;


DMA_InitStructure.DMA_Priority=DMA_Priority_VeryHigh;


DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word;


DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word;


DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;


DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;


DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;


DMA_Init(DMA1_Channel1,&DMA_InitStructure);


DMA_Cmd(DMA1_Channel1 ,ENABLE);


}


50k时的波形


100k时


10k时


推荐阅读

史海拾趣

Davicom公司的发展小趣事

随着产品技术的不断成熟和市场竞争的加剧,Davicom开始积极拓展市场,加强品牌建设。公司加大市场推广力度,积极参加国内外各类展会和论坛,与潜在客户建立联系。同时,Davicom还注重提高产品质量和服务水平,赢得了客户的信任和好评。

ADMOS公司的发展小趣事

在电子行业的早期,ADMOS公司以其前瞻性的技术视野和不懈的研发努力,成功开发出一款高效能、低能耗的功率管理芯片。这款芯片在市场上迅速获得了认可,为ADMOS公司赢得了良好的口碑。这一技术突破不仅奠定了ADMOS在功率管理领域的领先地位,也为公司的后续发展奠定了坚实的基础。

Galil Motion Control Inc公司的发展小趣事

面对不断变化的市场需求和技术趋势,ADMOS公司始终保持着对创新的热情和追求。公司投入大量资源用于研发新的技术和产品,不断推出具有创新性和竞争力的产品。这些创新成果不仅提升了ADMOS在市场上的竞争力,也为公司的未来发展指明了方向。

中微股份(Cmsemicon)公司的发展小趣事

在刻蚀设备领域取得成功后,中微并没有满足于现状,而是积极拓展多领域,实现业务多元化。2012年,公司完成了首台MOCVD设备的研制,成功进入薄膜沉积领域。2016年,公司又完成了首台ICP刻蚀设备的研制,进一步巩固了在刻蚀设备领域的领先地位。此外,公司还在环保领域有所布局,成功研制出首台VOC设备。这些举措不仅丰富了公司的产品线,也为公司带来了更多的市场机遇。

集创北方(CHIPONE)公司的发展小趣事

作为一家专注于显示芯片设计的企业,集创北方始终将技术创新作为核心竞争力。从早期的LED驱动芯片到后来的AMOLED驱动芯片,再到国内率先推出的TDDI芯片ICNL9920,集创北方不断推出具有竞争力的产品,满足了市场对于高质量显示芯片的需求。

Aten International公司的发展小趣事

在全球能源危机和环保意识日益增强的背景下,绿色能源成为了电子行业的一大发展趋势。Aten International积极响应环保号召,研发出了一系列绿色能源解决方案,包括智能型电源分配器和节能感测软件等。这些产品不仅能够有效降低能源消耗,还能提供实时的能源管理与效能指标,为企业实现绿色生产提供了有力支持。

问答坊 | AI 解惑

散分散分,关于摄像头的问题

哪位大虾有用OV7620,CMOS图像采集传感器做一个摄像头的驱动电路阿? 小弟拜谢了…

查看全部问答>

T264移植到dm642遇到的问题

把从网上下载的T264源码移植到dm642上,过程是这样的 1、直接编译T264 的源码(包括了T264.Pjt和 T264lib.pjt)可以通过,说明程序没有问题 2.加入了DM642的视频硬件文件之后出现了很多问题,有 offset too large       ...…

查看全部问答>

微软对于Wince中TCP/IP协议的定义范围~急!急!急!

我刚刚接手开发的手机邮件工作,很多东西都不明白-_-!    微软在Wince5.0 的内核发布中提到,支持TCP/IP协议,没有详细的说明,我想问一下是否包括SMTP和POP3呢?…

查看全部问答>

FlashLoaderDemo烧写不了

用kei for arm 3.8a生成hex文件时358k,而开发板上的机子ROM容量是128k,怎么烧的进去? 即使是hex文件容量是120k,还是会有在烧写的时候会出现address not allowed?…

查看全部问答>

allegro 建封装的问题

想问下allegro在建封装的时候,assembly top 边框的尺寸怎么计算啊,silkscreen 边框的尺寸怎么计算? 谢谢…

查看全部问答>

晶振的地线的接法

请教大家一个问题,晶振的地线怎样接不会对其他地线产生干扰?…

查看全部问答>

PID算法问题

用AD采样后,有一个数字量,现在要用PID…

查看全部问答>

MSP430之我见

MSP430被业内称为省电王,对此殊荣当之无愧。通过用MSP430来做产品设计,还有看MSP430的芯片手册,明显的感觉TI将电源管理系统做到极致。极大的砍掉了不同模式、功能下多余的硬件耗能模块,极大地砍掉了不同模块、功能下必须保留的硬件模块的多余耗 ...…

查看全部问答>

不知道怎样初始化xx2799,从而可以用g2553读取键值,实现相应功能,求大神帮忙

不知道怎么弄基于msp430g2553来检测xx2799按键的程序,知道x2799有按键按下,key引脚拉低,键值存到寄存器reg_keyvaluey里,但不知道怎样初始化xx2799,从而可以用g2553读取键值,实现相应功能…

查看全部问答>

CCS5编译错误,求解!

CCS5编译错误,求解! 各位高手:    我才开始用TMS320F28020,使用CCS5.1;新建项目,选取型号,选取调试器,完毕后自动生成main.c,没做任何编辑直接编译;出现错误提示: program:c:\\ti\\ccsv5\\tools\\compiler\\c2000\\bin\\cl2 ...…

查看全部问答>