一、实验目的
了解AD转换的基础知识,学习了基于DMA专递方式的ADC采集软件的编制及控制流程。 二、实验内容
板子加电后,通过串口1延时间隔显示ADC1的通道11的测量结果。 三、实验仪器、设备
计算机、开发板、keil软件 四、应用知识
用到的几处需要关注的知识:
DMA:在这个例程用到了ADC转换结果采用DMA传递方式。直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。
ADC规则组:STM32的ADC通道选择有两种方式,一种是规则组,一种是注入组,简单来讲就是规则组设置后,可以按照设置的通道顺序对各通道进行依次采集。方便于对多路ADC通道的自动采集。注入组最多设置4个通道,简单来讲就是需要触发才能采集设置的通道ADC值。本实验选择了采用规则组,设置了一个通道进行自动采集。
五、程序设计
根据任务要求,程序内容主要包括:
1. 初始化串口1,用于ADC1通道11采集值的输出显示。 2. ADC1通道11的初始化配置。
3. 间隔时间将采集到的ADC值通过串口1发送出去。 整个工程包含4类源文件:
FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。 stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。 stm32f10x_dma.c ST公司的标准库,包含了关于对于DMA设置的函数。 stm32f10x_adc.c ST公司的标准库,包含了和ADC有关的函数。
stm32f10x_USART.c ST公司的标准库,包含了关于对USART设置的函数。 Misc.c ST公司的标准库,包含了关于中断设置的函数。 CMSYS—是关于CORETEX-M3平台的系统函数及定义 USER—main.c 例程的主函数。
主函数如下:
RCC_Configuration(void)用于配置系统时钟设置,及外设时钟使能。
ADC_Configuration函数用于配置ADC1的通道11,因为只用了ADC1所以采用了ADC独立模式,设置通道11进入规则组,规则组里的通道只有1个,就是通道1,转换用了扫描方式,软件触发,转换结果采用DMA方式传递到2字节长度的缓存区里(ADC_ConvertedValue),默认的ADCCLK为36MHz,采样周期是55.5+12.5时钟周期,相当于采样时间是间隔(68/36)us。
void Usart1_Init(void)用于配置串口1。
通过JLINK将代码下载至开发板,并使用串口线将开发板与PC连接,运行串口助手软件。设置如下:
通过USB线给开发板加电。串口助手软件会收到如下的信息:
因篇幅问题不能全部显示,请点此查看更多更全内容