精华内容
下载资源
问答
  • 最后参考的文章--------------------------->... 网上多通道传输方式很多都是说的DMA方式的,下面我介绍非DMA方式的多...stm32有多个ADC,比如有ADC1、ADC2,每个ADC又有16外部通道和两内部通道,每个通道都可...

    最后参考的文章--------------------------->:https://blog.csdn.net/jxwzh/article/details/80611774

    网上多通道传输方式很多都是说的DMA方式的,下面我介绍非DMA方式的多通道转换方式

    ADC的通道是什么

    stm32有多个ADC,比如有ADC1、ADC2,每个ADC又有16个外部通道和两个内部通道,每个通道都可以用来进行一个AD转换,也就是说就ADC1和ADC2来说,一共可以同时转换32个外部模拟量。

    那么,如果我要转化两个外部模拟量,比如一个水位传感器,一个灰度传感器,那么我可以使用ADC1的通道1和通道2来转化,当然也可以通道4和通道5或者其它都可以。通道的概念就是这ADC样。

    ADC如何非DMA多通道转换

    但是,在stm32中,众多通道用来存放结果的都是同一个寄存器!也就是说,我通道4和通道5都去转换的话,我再去取值的时候,取的就不一定是通道4还是通道5了!如果用DMA方式,设置他们的转换顺序的话就不会有这种问题,但是我们要非DMA方式,那么解决方案就是:

    我要取通道4的值的时候,指定通道4转换,然后取值,然后在指定通道5转换,然后取值。也就是说每次取值我都要重新配置一下以选择通道,那么这就要求,我们设置ADC的时候一定要选择单通道模式和单次模式,也就是下面这两条一定要disable

    ADC_InitStructure.ADC_ScanConvMode = DISABLE;   //不扫描,也就是口头上的单通道模式
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;  //单次扫描,每次转换完一次就不转换了,除非你再调用

    其他配置按照原来单通道的配置就行了

    然后用以下函数来取值:

    uint16_t read_adc_value(uint8_t ch)   
    {
        uint16_t adc_val = 0;
        
        ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );    //重新指定一下通道,1也就是多通道模式下                                                                                   //的转换顺序,但是我们是在单通道模式下,所以写个1就行了
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);        
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )){};
        
        adc_val = ADC_GetConversionValue(ADC1);    


        return adc_val;

    }

    初学者,有说的不对的地方或者说不合适地方,大佬们不吝赐教,感谢。

    展开全文
  • STM32F103 ADC管脚对应

    2017-03-20 11:27:32
  • STM32中最多有3个ADC模块,每模块对应通道不完全重叠。
  • 单片机 数字电压表(ADC0809)

    万次阅读 多人点赞 2018-06-02 11:42:44
    单片机 数字电压表(ADC0809) 、简述 采用模数转换的芯片ADC0809实现设计数字电压表。...ADC0809是可以将我们要测量的模拟电压信号量转换为数字量从而可以进行存储或显示的种转换器件。 文件打包:链接:...

    单片机 数字电压表(ADC0809)

    一、简述

        采用模数转换的芯片ADC0809实现设计数字电压表。例子中设计的数字电压表可以测量0~5V范围内的输入电压值,并且通过4位LED数码管显示采集的电压值,例子测量三个模拟值:4.995、2.5、0.005。

        ADC0809是可以将我们要测量的模拟电压信号量转换为数字量从而可以进行存储或显示的一种转换器件。

       文件打包:链接: https://pan.baidu.com/s/1F2E135Jw7TG3EmUVx3xKGg 提取码: 5ttz

    二、效果

    三、工程文件

    1、Keil工程

    2、仿真电路图

    四、源文件

    #include<reg51.h>
    #define uint unsigned int
    #define uchar unsigned char
    uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0-9的电平码
    uint volt,vtime; //电压值测定值 
    uchar addr;//测量地址位
    sbit LW1=P2^3; //对应第4个数码管
    sbit LW2=P2^2; //对应第3个数码管
    sbit LW3=P2^1; //对应第2个数码管
    sbit LW4=P2^0; //对应第1个数码管
    sbit LW5=P1^4;//指示当前显示的是第几个转换值
    sbit CLK=P2^4; //时钟信号
    sbit START=P2^5; //转换启动开关
    sbit EOC=P2^6;	//转换结束标志
    sbit OE=P2^7;//定义ADC0809各脚
    /**********************************************************/
    //函数名:delay(uint x)
    //功能:延时程序 改变测量地址 	
    //调用函数:
    //输入参数:x
    //输出参数:
    //说明:程序的延时时间为x乘以0.5ms 每5s改变测量地址位
    /**********************************************************/
    void delay(uint x)
    {
    	uchar y,z;
    	for(y=x;y>0;y--)
    		for(z=250;z>0;z--);//该步运行时间约为0.5ms
    		vtime++;
    		if(vtime==1000)
    		{
    			vtime=0;
    			addr++;
    			if(addr==3)	 //本例子一共有3个测量输入值,轮流读取这3个值并转换显示
    				addr=0;//以上语句实现测量地址位的改变		
    		}	
    }
    /**********************************************************/
    //函数名:ADC()
    //功能:数模转换程序
    //调用函数:
    //输入参数:
    //输出参数:
    //说明:将转换好的测定值保存在变量volt中
    /**********************************************************/
    void ADC()
    {
    	EA=1;//开中断
    
    	//确保进入正常AD转换状态?
    	START=0;
    	START=1;
    
    	START=0;//ad开始转换		
    	while(EOC==0); //等待转换结束
    	OE=1; //输出数据标志为真
    	
    	EA=0;//关中断
    	volt=P3;//获取转换值保存到volt中,(P3为转换后数据)
    	volt=volt*196;//转换值处理 (例子的满量程为5V,转换分辩率为8位即最大值是255,5/255=196mV,即1代表196mV)
    	
    	OE=0;//输出转换结束 (要在获取转换值之后)
    }
    /**********************************************************/
    //函数名:display()
    //功能:4位数码管显示
    //调用函数:delay(uint x)
    //输入参数:
    //输出参数:
    //说明:将处理后的电压值显示在4位数码管上
    /**********************************************************/
    void display()
    {
    	P0=0xff;//消隐 (相当于全部灭灯,清除上次显示效果)
    	LW1=0;
    	P0=~led[volt/10000]&0x7f;//带小数点1伏显示位
    	delay(2);
    	P0=0xff;
    	LW1=1;
    	LW2=0;
    	P0=~led[(volt/1000)%10];//100毫伏显示位
    	delay(2);
    	P0=0xff;
    	LW2=1; 
    	LW3=0;
    	P0=~led[(volt/100)%10];//10毫伏显示位
    	delay(2);
    	P0=0xff;
    	LW3=1;
    	LW4=0;
    	P0=~led[(volt/10)%10];//1毫伏显示位
    	delay(2);
    	P0=0xff;
    	LW4=1;
    	LW5=0;
    	P0=~led[addr+1];//显示电压测量位
    	delay(2);
    	LW5=1;//指示当前显示的是第几个转换值								
    }
    /**********************************************************/
    //主程序
    /**********************************************************/ 
    void main()
    {
    	EA=1;//开总中断		   
        TMOD=0x01;//设定定时计数工作方式
    	//为定时器初赋值
    	TH0=0XFF;
        TL0=0XB4;
    
    	ET0=1;//开定时器0中断 
    	TR0=1;//开启定时器0
    	while(1)
    	{
    		P1=addr;//装入测量地址
    		LW5=1;
    		ADC();//调用模数转换程序
    		display();//调用显示程序
    	}
    }
    /**********************************************************/
    //函数名:timer() interrupt 1
    //功能:定时中断0响应程序
    //调用函数:
    //输入参数:
    //输出参数:
    //说明:为ADC提供时钟信号
    /**********************************************************/
    void timer() interrupt 1
    {
    	//初值重置
    	TH0=0XFF;
        TL0=0XF0;
    	CLK=~CLK;//取反 产生时钟信号
    }
    

    五、总结

        ADC0809是一种有8路模拟输入、8位并行数字输出的逐次逼近式A/D器件。

    1、主要技术指标和特性
        (1) 分辨率:8位;
        (2) 转换时间:取决于芯片的时钟频率,转换1次所需时间;
        (3) 单一电源:+5V;

        (4) 模拟输入电压范围:单级性为0~+5V。

    2、引脚介绍

    管脚功能说明:
    IN0-IN7:模拟量输入通道。就是说它可以分时地分别对八个模拟量进行测量转换。
    ADDA-C:地址线。也就是通过这三根地址线的不同编码来选择对哪个模拟量进行测量转换。
    ALE:地址锁存允许信号。在低电平时向ADDA-C写地址,当ALE跳至高电平后ADDA-C上的数据被锁存
    START:启动转换信号。当它为上升沿后,将内部寄存器清0。当它为下降沿后,开始A/D转换。
    D0-D7:数据输出口。转换后的数字数据量就是从这输出给S52的。
    OE:输出允许信号,是对D0-D7的输出控制端,OE=0,输出端呈高阻态,OE=1,输出转换得到的数据。
    CLOCK:时种信号。ADC0809内部没有时钟电路,需由外部提供时钟脉冲信号。
    EOC:转换结束状态信号。EOC=0,正在进行转换。EOC=1,转换结束,可以进行下一步输出操作

    Vref(+)、Vref(-):参考电压。参考电压用来与输入的模拟量进行比较,作为测量的基准。一般Vref(+)=5v ,Vref(-)=0V。

    3、时序图与工作过程

        时序图:

    工作过程:

     ①在IN0-IN7上可分别接上要测量转换的8路模拟量信号。可只接一路。
     ②将ADDA-ADDC端给上代表选择测量通道的代码。如000(B)则代表通道0;001(B)代表通道1;111则代表通道7。
     ③将ALE由低电平置为高电平,从而将ADDA-ADDC送进的通道代码锁存,经译码后被选中的通道的模拟量送给内部转换单元。
     ④给START一个正脉冲。当上升沿时,所有内部寄存器清零。下降沿时,开始进行A/D转换;在转换期间,START保持低电平。
     ⑤EOC为转换结束信号。在上述的A/D转换期间,可以对EOC进行不断测量,当EOC为高电平时,表明转换工作结束。否则,表明正在进行A/D转换。
     ⑥当A/D转换结束后,将OE设置为1,这时D0-D7的数据便可以读取了。OE=0,D0-D7输出端为高阻态,OE=1,D0-D7端输出转换的数据。
        说明:ADC0809的转换工作是在时钟脉冲的条件下完成的,因此首先要在CLOCK端给它一个时钟信号,说明书上给出了可以接入的脉冲信号频率是在10KHz-1280KHz,典型值是640KHz。我们这里取值50KHz。
      时序图上的teoc时长为:从START上升沿开始后的8个时钟同期再加2微秒。这一点得注意,因为当START脉冲刚结束进入转换工作时,EOC还没有立即变为低电平而是过了8个时钟周期后才进入低电平的,所以再给出START脉冲后最好延时一会再进行EOC的检测。

      一个通道的转换时间一般为64个时钟周期,如时钟频率为640KHz时,时钟周期为1.5625微秒,一个通道的转换时间则为1.5625×64=100微秒,那么1秒种就可以转换1000000÷100=10000次。

    4、计算定时器初值:

        信号频率取值50KHz,晶振频率是12MHz。

        12MHz时钟频率下,12MHz = 12000KHz = 12000000Hz,一个时钟振荡周期就是1/12000000秒,亦即1/12微秒,标准MCS51系列单片机的一个机器周期是12个时钟振荡周期,也就是12 * (1/12) = 1微秒。

    要输出50KHz的矩形方波 周期 T = (1/50K)s 等宽 也就是占空比50% 高电平时间是(0.5/50K)s = 0.01 ms = 10us

     

    然而,实际上仿真时这个频率是太快了(不知道是否是计算方法错了),编程中没有使用该初值。

    六、Proteus相关操作

          1、电压探针元件(显示电压)

               

       2、自定义电源电压

            

    -------------------------------------------------以下是回复 Rainynightsunset 这位兄弟---------------------------

    下载打包文件之后:

    ========================以下回复  木子Jasmine 这位兄弟======================

    手动复位效果 (使用轮询方式检测按键有没有按下,因为外部中断引脚被使用了)

    测试代码以及仿真文件:链接: https://pan.baidu.com/s/1zC8uhzlbIFRBOkOWuWzAWQ 提取码: wr39

     

     

    ===================以下回复 Leon. 这位兄弟=======================

    将程序中的addr最值修改为8,如下:

    在仿真上,添加5个模拟输入

    效果:(注:想要查看电压,请加上电压探针元件)

     

     

    ============== ===== 以下回复    馨心愢忞   ========================

    简单的测量20v(采用分压法:先把电压除以4再进行转换,得到转换的值后再乘以4)

    测试例子:链接: https://pan.baidu.com/s/10RzT9lFVbB8db4CO7at_0A 提取码: zwem

    测试效果:

    分压测量20V说明:

     

    =======================以下回复 yikai0511validatetoken==============================

    以下例子是:按键设置最高电压,当前电压大于等于最高电压时蜂鸣器报警以及LED亮,测试环境为Win10

    电压为20V的可以自己设置的,上下限值同时设置暂时没弄好(感觉引脚不够用,需要复用引脚)

    例子打包:链接: https://pan.baidu.com/s/1RY18AeWCCsXXqlgUBeTv_w 提取码: pdf7

    仿真截图:

     

    效果:

     

    展开全文
  • 库函数版本的stm32f407 ADC1双通道采样。配置了ADC1的通道11和通道12,采样后的数据通过DMA传输到串口打印出来。
  • ADC通道采集

    千次阅读 2020-09-11 11:44:44
    接上篇的ADC通道采集,本篇主要讲解关于ADC通道采集,同样考虑减少CPU资源的占用,使用DMA通道传输。 大家可能感觉DMA有点难理解,刚开始学就使用DMA通道很费劲,但是用我的经验来说,DMA是学习32单片机必不可...

    接上一篇的ADC单通道采集,本篇主要讲解关于ADC多通道采集,同样考虑减少CPU资源的占用,使用DMA通道传输。
    大家可能感觉DMA有点难理解,刚开始学就使用DMA通道很费劲,但是用我的经验来说,DMA是学习32单片机必不可少的一步,在以后的工作项目开发中,需要考虑软件代码的可使用性,不能再想学校里的简单项目能跑通就行,工作中的要求是要稳定,程序如果不稳定可能用一段时间就会出现未知的BUG。因此,建议新的玩家开发时直接使用DMA,不管事ADC,还是USART等等都可以使用。

    不多说,直接上代码,有详细的注释。

    #define NumOfCHANNEL				1
    #define	DMA_SIZE						NumOfCHANNEL*40
    #define ADC1_PIN					GPIO_Pin_1
    #define ADC_CHANNEL1			ADC_Channel_1
    
    #define ADC2_PIN						GPIO_Pin_2
    #define ADC_CHANNEL2				ADC_Channel_2
    __IO uint16_t ADC_ConvertedValue[DMA_SIZE] = {0,0,0,0};
    __IO uint16_t ADC_Buffer[NumOfCHANNEL] = {0};
    
    volatile 	ADC adcvalue;
    
    
    static void ADC1_GPIO_Configuration(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
    
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    
        GPIO_InitStructure.GPIO_Pin = ADC2_PIN|ADC1_PIN;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
    }
    
    void ADC1_Configuration(void)
    {
        ADC_InitTypeDef	ADC_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
    
        ADC_DeInit(ADC1);
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//工作在独立模式
        ADC_InitStructure.ADC_ScanConvMode =ENABLE;//模数转换工作在扫描模式(多通道)
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//模数转换工作在连续
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//ADC 数据右对齐
        ADC_InitStructure.ADC_NbrOfChannel = 2;//进行规则转换的 ADC 通道的数目
        ADC_Init(ADC1, &ADC_InitStructure);
        RCC_ADCCLKConfig(RCC_PCLK2_Div8);//设置 ADC 时钟(ADCCLK)
        ADC_RegularChannelConfig(ADC1, ADC_CHANNEL2, 1, ADC_SampleTime_71Cycles5 );//设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
    	ADC_RegularChannelConfig(ADC1, ADC_CHANNEL1	, 2, ADC_SampleTime_71Cycles5 );//设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
    /*以上两行代码设置了通道1和通道2的传输优先级,数值越小优先级越高,也就是先进性通道2扫描,在进行通道1扫描*/
        ADC_DMACmd(ADC1, ENABLE);
    
        ADC_Cmd(ADC1, ENABLE);
    
        ADC_ResetCalibration(ADC1);//重置指定的ADC的校准寄存器
    
        while(ADC_GetResetCalibrationStatus(ADC1));//获取ADC重置校准寄存器的状态
    
        ADC_StartCalibration(ADC1);//开始指定ADC的校准状态
    
        while(ADC_GetCalibrationStatus(ADC1));//获取指定ADC的校准程序
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的ADC的软件转换启动功能 
    }
    
    void DMA_Configuration(void)
    {
        DMA_InitTypeDef DMA_InitStructure;
    
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
        DMA_DeInit(DMA1_Channel1);
        DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR;	//外设地址
        DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue;	//内存地址
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;		//外设作为数据传输的来源
        DMA_InitStructure.DMA_BufferSize = DMA_SIZE;		//DMA 通道的 DMA 缓存的大小
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;	//外设地址寄存器不变
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;	//内存地址寄存器递增
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;	//数据宽度为 16 位
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;	//数据宽度为 16 位
        DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;	//工作在循环缓存模式
        DMA_InitStructure.DMA_Priority = DMA_Priority_High;	//DMA通道拥有高优先级
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;	//DMA通道设置为内存到内存传输
        DMA_Init(DMA1_Channel1, &DMA_InitStructure);
        DMA_Cmd(DMA1_Channel1, ENABLE);
    
        /***** enable the Interrupt  ********/
        DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);//传输完成中断
    }
    
    static void DMA_NVIC_Configuration(void)
    {
        NVIC_InitTypeDef NVIC_InitStructure;
    
        /* Enable the TIM2 global Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn ;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    
        NVIC_Init(&NVIC_InitStructure);
    }
    
    void adc_init(void)
    {
        ADC1_GPIO_Configuration();
        DMA_Configuration();
        DMA_NVIC_Configuration();
        ADC1_Configuration();
    }
    
    
    void DMA1_Channel1_IRQHandler(void)
    {
        if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET)
        {
            
            DMA_ClearITPendingBit(DMA1_IT_TC1);
        }
    
    }
    
    

    看完代码以后,很多小伙伴会有一个疑问?
    ADC通道1通道2都使用DMA1的通道1进行传输,怎么进行区分呢?

    注释上很清楚

        ADC_RegularChannelConfig(ADC1, ADC_CHANNEL2, 1, ADC_SampleTime_71Cycles5 );//设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
    	ADC_RegularChannelConfig(ADC1, ADC_CHANNEL1	, 2, ADC_SampleTime_71Cycles5 );//设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
    /*以上两行代码设置了通道1和通道2的传输优先级,数值越小优先级越高,也就是先进性通道2扫描,在进行通道1扫描*/
    

    通道2先传输,通道1后传输
    那么在DMA设置的内存地址

        DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue;	//内存地址
        DMA_InitStructure.DMA_BufferSize = DMA_SIZE;		//DMA 通道的 DMA 缓存的大小
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;	//内存地址寄存器递增     
    

    也就是说ADC_ConvertedValue[0]是通道2的数据 ADC_ConvertedValue[1]是通道1的数据,后边顺序进行。
    在给你们来个处理函数吧。

    void ADC_ch2(void)
    {
    
    u16 adc_val;
            for(j = 0; j <40;)//每个通道采集40个数据 其中20个数据是通道2的 另外20个数据是通道1的
            {
                u32_sum += ADC_ConvertedValue[j];
                j=j+2;//仔细理解
            }
           adc_val=sum/20;//20次数据求平均值
    }
    

    这个处理函数一般在DMA的中断服务函数调用即可。
    欢迎讨论,指正。

    展开全文
  • STM32L151的ADC数据采集例程,对于学习STM32L151具有参考价值
  • STM32 ADC通道与多通道_DMA学习笔记

    千次阅读 2019-12-31 16:44:20
    部分ADC单路采集 下面我们将PC0引脚配置成AD1的通道10为例进行讲解。下面是ADC通道与GPIO对应表: 3.1首先我们应将PC0设置成模拟输入: #include "adc.h" /*为 何 定 义ADC1_DR_Address为((u32...
  • RT1064学习笔记(1)--ADC例程(ADC Demo)

    千次阅读 2020-01-11 15:51:08
    RT1064之ADC例程 Ps:本例程主要作用是,展示如何使用QTIMER模块来实现正交解码。 主板为:逐飞RT1064 + 母板
  • 通道ADC转换.zip

    2021-02-05 19:17:10
    通道ADC转换,学习来源b站:陆小果哥哥 /*GPIO 管脚的配置 选用 ADC通道 0 1 2 3 8 9 10 11 12 13 14 15, 分别对应的管脚为 PA0 PA1 PA2 PA3 PB0 PB1 PC0 PC1 PC2 PC3 PC4 PC5
  • stm32之ADC应用实例(单通道、多通道、基于DMA)

    万次阅读 多人点赞 2018-07-23 22:25:46
    网上资料很多,这里做一个详细的整合。(也不是很详细,但很通俗)。 所用的芯片内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,2个内部通道。 3个:代表ADC1、ADC2、ADC3(下图是芯片固件库...
  • 通过ADC注入通道的使用,可以实时获取4GPIO输入的AD采样值。
  • STM32CUBEMX配置教程(十一)STM32的ADC轮询模式扫描多个通道
  • ADC—多通道(DMA读取)
  • STM32F10x_ADC通道逐次转换(单次、单通道软件触发)

    万次阅读 多人点赞 2016-07-21 13:48:42
    分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:https://www.strongerhuang.com 我的知乎:...
  • stm32笔记7 - ADC

    2019-09-21 10:08:54
    ADC通道和引脚对应关系4. ADC引脚二、stm32 ADC基本概念1. 通道、stm32f4 ADC基本介绍 1. stm32F4 ADC主要特性 ● 可配置 12 位、10 位、8 位或 6 位分辨率 ● 在转换结束、注入转换结束以及发生...
  • STM32ADC的基本原理

    2021-01-20 03:07:37
    128KFlash,20KRAM每一个ADC控制器都有多个通道,例如ADC1的外部通道有16个,可以理解为有一个开关分别连接各个通道。每个通道的采样间隔和采样时间都可以设置。三。ADC通道与IO管脚对应表一般负参考电压接地,正...
  • stm32的DMA+ADC通道数据采集

    千次阅读 多人点赞 2019-11-15 20:58:37
    stm32只有一个规则转换数据寄存器DR,因此普通方法不能同时采集多个通道的数据,利用DMA功能一次可以最多采集16个通道的数据。
  • stm32DMA通道 ADC通道

    千次阅读 2014-10-18 16:21:30
    DMA: 1.使用DAC的时候,将转化后得到的模拟信号通过IO口输出的时候,为什么还将IO口配置能输入模式... //P:配置串口传输的字长,一个字符一个字符的接受
  • proteus中 基于STC89C51的ADC0809模数转换仿真

    千次阅读 多人点赞 2019-05-24 22:45:48
    (分辨率) 分辨率8 位,精度7 位,带8 模拟量输入通道,有通道地址译码锁存器,输出带三态数据锁存器。启动信号为脉冲启动方式,最大可调节误差为±1LSB。(转换精度) ADC0809 内部没有时钟电路,故CLK 时钟需...
  • DMA+ADC通道转换、多通道转换

    千次阅读 2017-07-01 18:38:55
    在stm32中,使用ADC时往往采用DMA传输方式,由DMA把转换的数据传输...ADC通道与GPIO对应表: ADC结构体成员变量: typedef struct { uint32_t ADC_Mode; FunctionalState ADC_ScanConvMode; FunctionalState A
  • 外设模块介绍1.1 PDB模块简介1.2 ADC通道1.3 ADC触发源1.4 PDB触发多个ADC通道的两种方式2. 例程2.1 例程功能介绍2.2 例程编写2.2.1 准备工作2.2.2 图形界面配置2.2.3 测试代码2.3 例程测试2.3.1 背靠背模式2.3.2 ...
  • 1--STM32 ADC1与ADC2 16通道DMA采集笔记

    千次阅读 2018-10-30 16:04:14
    最近在搞ADC,网上还是很多资源的, 以下为参考链接: 1、对STM32 ADC单次转换模式 连续转换模式 扫描模式的理解: https://www.cnblogs.com/zhanghankui/p/5192324.html/ 2、STM32F103ADC的工作模式和触发方式的...
  • 当涉及两路甚至多路adc通道时,常用的方法有两种dma方法和注入通道,本文采用后者。 adc初始化 void ADC_Config(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2...
  • STM32的ADC采样与多通道ADC采样

    万次阅读 多人点赞 2016-05-12 07:45:36
    通道采样 参考资料:《STM32库开发实战指南》 刘火良,杨森著原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压...
  • STM32F767多通道ADC采集+DMA传输

    千次阅读 2019-04-19 20:12:26
    #
  • nRF52832 — 多通道ADC接口的使用

    千次阅读 2017-09-14 21:26:11
    写在前面:因为楼主参与的项目中需要采集两路ADC,所以使用了ADC采集的多通道接口。感慨一下:Nordic的资料真的太少了~ 、调试历程: 首先分享一下调试的历程,可谓是一路坎坷~ 1、项目中需要采集两路ADC,就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,618
精华内容 2,647
关键字:

一个通道对应一个adc