打印
[应用相关]

STM32 DMA 和 ADC 使用要点

[复制链接]
854|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Vitality1|  楼主 | 2015-2-9 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、DMA普通模式和循环模式的区别
   循环模式:用于处理一个环形的缓冲区,每轮传输结束时数据传输 的配置会自动地更新为初始状态,DMA传输会连续不断地进行。
   普通模式:在DMA传输结束时,DMA通道被自动关闭,进一步的 DMA请求将不被满足。

2、DMA传输需要指定的条件:
   传输源:DMA控制器从传输源读出数据;
   传输目标:DMA控制器将数据传输的目标;
   触发信号:用于触发一次数据传输的动作,执行一个单位的传输源至传输目标的数据传输。可以用来控制传输的启动条件。

沙发
Vitality1|  楼主 | 2015-2-9 17:21 | 只看该作者
1、STM32的内部温度传感器
   STM32内部温度传感器与ADC的通道16相连,与ADC配 合使用实现温度测量。测量范围–40~125℃,精度 ± 1.5℃
   操作流程:
   1)、设置ADC相关参数
   // ADC1 configuration -----------------------------
   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_InitStructure.ADC_NbrOfChannel = 1;
   ADC_Init(ADC1, &ADC_InitStructure);

使用特权

评论回复
板凳
Vitality1|  楼主 | 2015-2-9 17:21 | 只看该作者
  2)、选中ADC1的通道16作为输入,设置采样时间17.1us ( Ncycle × tADC = 17.1靤 )。
   // ADC1 regular channel16 Temp Sensor configuration
   ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_55Cycles5);

   3)、设置寄存器ADC_CR2中的TSVREFE位激活温度传感器
   // Enable the temperature sensor and vref internal channel
   ADC_TempSensorVrefintCmd(ENABLE);
   

使用特权

评论回复
地板
Vitality1|  楼主 | 2015-2-9 17:21 | 只看该作者
4)、转换采样值为温度
   ADC转换结束以后,读取ADC_DR寄存器中的结果,转换温度值计算公式如下:
           V25 - VSENSE
   T(℃) = ------------  + 25
            Avg_Slope
      V25:  温度传感器在25℃时 的输出电压,典型值1.43 V。
     VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换关系为:  
                       ADC_ConvertedValue * Vdd
             VSENSE = --------------------------
                       Vdd_convert_value(0xFFF)
     Avg_Slope:温度传感器输出电压和温度的关联参数,典型值4.3 mV/℃。

     //Converted Temperature
     Vtemp_sensor = ADC_ConvertedValue * Vdd / Vdd_convert_value;
     Current_Temp = (V25 - Vtemp_sensor)/Avg_Slope + 25;

使用特权

评论回复
5
Vitality1|  楼主 | 2015-2-9 17:22 | 只看该作者
2、VDDA的电压范围
    STM32的数据手册规定,VDD与VDDA之间的压差不能大于300mV。ADC的工作电压范围在2.4V~3.6V,供电电压VDD范围在2.0V~3.6V.

使用特权

评论回复
6
mmuuss586| | 2015-2-9 19:20 | 只看该作者

楼主应该分享下,多通道ADC转换的例程;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

421

帖子

9

粉丝