《嵌入式系统》课程设计报告基于STM32的简易数字电压表_第1页
《嵌入式系统》课程设计报告基于STM32的简易数字电压表_第2页
《嵌入式系统》课程设计报告基于STM32的简易数字电压表_第3页
《嵌入式系统》课程设计报告基于STM32的简易数字电压表_第4页
《嵌入式系统》课程设计报告基于STM32的简易数字电压表_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号2014-2015学年 第二学期1208020121嵌入式系统课程设计报告题目:基于stm32的简易数字电压表专业:网络工程班级:网络工程12(1)姓名:指导教师:成绩:计算机学院 2015年 5 月 22日目录1. 设计内容及要求11.1. 设计内容11.2. 设计要求12. 概要设计22.1. 硬件电路22.2. 实验板中的连线图22.3. stm32介绍32.4. 主要函数说明83. 设计过程或程序代码103.1. 设计过程103.2. 程序代码124. 设计结果与分析16参考文献17计算机学院 嵌入式系统课程设计报告1. 设计内容及要求1.1. 设计内容 本文以arm系列的stm3

2、2芯片为核心设计了一个简易数字电压表。简易数字电压表采用模数转换思想来实现,通过硬件电路和软件程序相结合,可输出自定义测量电压,通过调节模数转换电位器使在一定范围内可任意改变。输出的电压格式和精度的改变通过软件控制,输出电压的大小的改变通过硬件实现。介绍了的生成原理、硬件电路和软件部分的设计原理。该简易数字电压表具有体积小、价格低、性能稳定、功能齐全的优点。1、将一模拟电压信号输入到a/d转换器的任一通道。2、a/d转换器将输入的模拟电压值转换成数字量。3、根据学习开发板所用a/d转换器的类型,将转换成的数字量通过一定的算法转换成相应的电压值。4、将转换成电压值通过学习开发板上的lcd显示屏进

3、行显示,要求显示一位小数。1.2. 设计要求 利用stm32f103内部a/d及2.8寸tft液晶屏,设计完成一个数字电压表。要求:数字电压表可测量0-5v输入电压,电压值通过液晶屏显示。工作原理及设计思路:简易数字电压表的设计由a/d转换.数据处理及显示控制等组成。利用stm32f103内部a/d转换器将模拟电压转换成数字量,经stm32f103计算将数字量转换成对应的电压值,并通过液晶屏输出。 数字电压表的基本组成部分是a/d变换器+电子计数器。通常,被测直流电压经a/d转换器变为与之成正比的闸门时间,在此闸门时间内计数,用数字显示被测电压值。可见a/d变换器是dvm的核心部件。本课设上采

4、用的是单片a/d转换器(含模拟电路与数字电路)集成在一片芯片上,配以lcd或led数字器件后能显示a/d转换结果的集成电路。它们均属于大规模的集成电路,能以最简的方式构成dvm。在此采用icl7106a/d转换器。但由于stm32f103内部集成了a/d转换器,所以不需要外围的a/d转换器,这就体现了stm32得集成特性。2. 概要设计2.1. 硬件电路设计的核心stm32嵌入式处理器的硬件电路如图1所示图1 stm32嵌入式处理器的硬件电路2.2. 实验板中的连线图连线图如图2所示。图2 硬件连接图。2.3. stm32介绍 stm32f103xx增强型系列使用高性能的arm cortex-

5、m3 32位的risc内核,工作频率为72mhz,内置高速存储器(高达128k字节的闪存和20k字节的sram),丰富的增强i/o端口和联接到两条apb总线的外设。所有型号的器件都包含2个12位的adc、3个通用16位定时器和一个pwm定时器,还包含标准和先进的通信接口:多达2个i2c和spi、3个usart、一个usb和一个can。stm32f103xx增强型系列工作于-40c至+105c的温度范围,供电电压2.0v至3.6v,一系列的省电模式保证低功耗应用的要求。 完整的stm32f103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相

6、同。下面给出了该系列产品中所有外设的基本介绍。这些丰富的外设配置,使得stm32f103xx增强型微控制器适合于多种应用场合: 电机驱动和应用控制 医疗和手持设备 pc外设和gps平台 工业应用:可编程控制器、变频器、打印机和扫描仪 警报系统,视频对讲,和暖气通风空调系统 arm的cortex-m3核心并内嵌闪存和sram arm的cortex-m3处理器是最新一代的嵌入式arm处理器,它为实现mcu的需要提供了低成本的平 台、缩减的管脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。 arm的cortex-m3是32位的risc处理器,提供额外的代码效率,在通常8和16位系

7、统的存储空间上得 到了arm核心的高性能。 stm32f103xx增强型系列拥有内置的arm核心,因此它与所有的arm工具和软件兼容。 图一是该系列产品的功能框图。 内置闪存存储器 高达128k字节的内置闪存存储器,用于存放程序和数据。 内置sram 多达20k字节的内置sram,cpu能以0等待周期访问(读/写)。 嵌套的向量式中断控制器(nvic) stm32f103xx增强型内置嵌套的向量式中断控制器,能够处理多达43个可屏蔽中断通道(不包括16个 cortex-m3的中断线)和16个优先级。 紧耦合的nvic能够达到低延迟的中断响应处理 中断向量入口地址直接进入核心 紧耦合的nvic接

8、口 允许中断的早期处理 处理 晚到的 较高优先级中断 支持中断尾部链接功能 自动保存处理器状态 中断返回时自动恢复,无需额外指令开销 该模块以最小的中断延迟提供灵活的中断管理功能。 外部中断/事件控制器(exti) 外部中断/事件控制器包含19个边沿检测器,用于产生中断/事件请求。 每个中断线都可以独立地配置它的触发事件(上升沿或下降沿或双边沿),能够单独地被屏蔽;有一 个挂起寄存器维持所有中断请求的状态。exti可以检测到脉冲宽度小于内部apb2的时钟周期。多 达80个通用i/o口连接到16个外部中断线。 时钟和启动 系统时钟的选择是在启动时进行,复位时内部8mhz的rc振荡器被选为默认的c

9、pu时钟,随后可以 选择外部的、具失效监控的416mhz时钟;当外部时钟失效时,它将被隔离,同时会产生相应的中 断。同样,在需要时可以采取对pll时钟完全的中断管理(如当一个外接的振荡器失效时)。 具有多个预分频器用于配置ahb的频率、高速apb(apb2)和低速apb(apb1)区域。ahb和高速apb 的最高频率是72mhz,低速apb的最高频率为36mhz。 自举模式 在启动时,自举管脚被用于选择三种自举模式中的一种: 从用户闪存自举 从系统存储器自举 从sram自举 自举加载器存放于系统存储器中,可以通过usart对闪存重新编程。 供电方案 vdd = 2.0至3.6v:vdd管脚提供

10、i/o管脚和内部调压器的供电。 vssa,vdda = 2.0至3.6v:为adc、复位模块、rc振荡器和pll的模拟部分提供供电。使用 adc时,vdd不得小于2.4v。 vbat = 1.8至3.6v:当(通过电源开关)关闭vdd时,为rtc、外部32khz振荡器和后备寄存器供电。 供电监控器 本产品内部集成了上电复位(por)/掉电复位(pdr)电路,该电路始终处于工作状态,保证系统在供 电超过2v时工作;当vdd低于设定的阀值(vpor/pdr)时,置器件于复位状态,而不必使用外部复 位电路。 器件中还有一个可编程电压监测器(pvd),它监视vdd供电并与阀值vpvd比较,当vdd低于

11、或高 于阀值vpvd时将产生中断,中断处理程序可以发出警告信息或将微控制器转入安全模式。需要通 过程序开启pvd。电压调压器 调压器有三个操作模式:主模式(mr)、低功耗模式(lpr)和关断模式 主模式(mr)用于正常的运行操作 低功耗模式(lpr)用于cpu的停机模式 关断模式用于cpu的待机模式:调压器的输出为高阻状态,内核电路的供电切断,调压器处于 零消耗状态(但寄存器和sram的内容将丢失) 该调压器在复位后始终处于工作状态,在待机模式下关闭处于高阻输出。 低功耗模式 stm32f103xx增强型支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达 到最佳的平衡。 睡眠

12、模式 在睡眠模式,只有cpu停止,所有外设处于工作状态并可在发生中断/事件时唤醒cpu。 停机模式 在保持sram和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式 下,停止所有内部1.8v部分的供电,pll、hsi和hse的rc振荡器被关闭,调压器可以被置于 普通模式或低功耗模式。 可以通过任一配置成exti的信号把微控制器从停机模式中唤醒,exti信号可以是16个外部i/o 口之一、pvd的输出、rtc闹钟或usb的唤醒信号。 待机模式 在待机模式下可以达到最低的电能消耗。内部的电压调压器被关闭,因此所有内部1.8v部分的 供电被切断;pll、hsi和hse的rc振荡器

13、也被关闭;进入待机模式后,sram和寄存器的 内容将消失,但后备寄存器的内容仍然保留,待机电路仍工作。 从待机模式退出的条件是:nrst上的外部复位信号、iwdg复位、wkup管脚上的一个上升 边沿或rtc的闹钟到时。 注:在进入停机或待机模式时, rtc 、 iwdg 和对应的时钟不会被停止。 dma 灵活的7路通用dma可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;dma控 制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。 每个通道都有专门的硬件dma请求逻辑,同时可以由软件触发每个通道;传输的长度、传输的源地 址和目标地址都可以通过软件单独设置。

14、dma可以用于主要的外设:spi、i2c、usart、通用和高级定时器timx和adc。 rtc(实时时钟)和后备寄存器 rtc和后备寄存器通过一个开关供电,在vdd有效时该开关选择vdd供电,否则由vbat管脚供 电。后备寄存器(10个16位的寄存器)可以用于在vdd消失时保存数据。 实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和 阶段性中断功能。rtc的驱动时钟可以是一个使用外部晶体的32.768khz的振荡器、内部低功耗rc 振荡器或高速的外部时钟经128分频。内部低功耗rc振荡器的典型频率为32khz。为补偿天然晶体 的偏差,rtc的校准是通过输

15、出一个512hz的信号进行。rtc具有一个32位的可编程计数器,使用 比较寄存器可以产生闹钟信号。有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768khz 时它将产生一个1秒长的时间基准。 独立的看门狗 独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个独立的32khz的内部 rc振荡器提供时钟,应为这个rc振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以 被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。 通过选择字节可以配置成是软件看门狗或硬件看门狗。在调试模式,计数器可以被冻结。 窗口看门狗 窗口看门狗内有一个

16、7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生 问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式,计数器可以被冻 结。 系统时基定时器 这个定时器是专用于操作系统,也可当成一个标准的递减计数器。它具有下述特性: 24位的递减计数器 重加载功能 可屏蔽的计数器为0中断 可编程时钟源 通用定时器(timx) 产品中内置了多达3个同步的标准定时器。每个定时器都有一个16位的自 动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输 出比较、pwm和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或 pw

17、m通道。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。 在调试模式下,计数器可以被冻结。 任一标准定时器都能用于产生pwm输出。每个定时器都有独立的dma请求机制。 高级控制定时器(tim1) 高级控制定时器(tim1)可以被看成是一个分配到6个通道的三相pwm发生器,它还可以被当成一个 完整的通用定时器。四个独立的通道可以用于: 输入捕获 输出比较 产生pwm(边缘或中心对齐模式) 单脉冲输出 反相pwm输出,具程序可控的死区插入功能 配置为16位标准定时器时,它与timx定时器具有相同的功能。配置为16位pwm发生器时,它具有 全调制能力(0100%)。 在调

18、试模式下,计数器可以被冻结。 很多功能都与标准的tim定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接 功能与tim定时器协同操作,提供同步或事件链接功能。 i 2c总线 多达2个i2c总线接口,能够工作于多主和从模式,支持标准和快速模式。 它们支持双从地址寻址(只有7位)和主模式下的7/10位寻址。内置了硬件crc发生器/校验器。 它们可以使用dma操作并支持sm总线2.0版/pm总线 通用同步/异步接受发送器(usart) 其中一个usart接口通信速率可达4.5兆位/秒,其他usart接口通信速率可达2.25兆位/秒。接口具 有硬件的cts和rts信号管理、支持irda的

19、 sir endec、与iso7816兼容并具有lin主/从功能。 usart接口可以使用dma操作。 串行外设接口(spi) 多达2个spi接口,在从或主模式下,全双工和半双工的通信速率可达18兆位/秒。3位的预分频器可 产生8种主模式频率,可配置成每帧8位或16位。硬件的crc产生/校验支持基本的sd卡和mmc模 式。 2个spi接口都可以使用dma操作。 控制器区域网络(can) can接口兼容规范2.0a和2.0b (主动),位速率达1兆位/秒。它可以接收和发送11位标识符的标准 帧,也接收和发送29位标识符的扩展帧。具有2个接收fifos,3级14个可调节的滤波器。内部sram 缓冲

20、最多可处理32个报文对象。 通用串行总线(usb) stm32f103xx增强型系列产品内嵌一个usb设备,遵循usb全速标准;usb接口实现全速(12兆位/ 秒)的设备功能;具有可软件配置的端点和待机/恢复功能。专用的48mhz时钟由内部主pll直接产 生。 通用输入输出接口(gpio) 每个gpio管脚都可以由软件配置成输出(推拉或开路)、输入(带或不带上拉或下拉)或其它的外设功 能;多数gpio管脚都与数字或模拟的外设功能管脚共用。所有的gpio管脚都有大电流通过能力。 在需要的情况下,i/o管脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入i/o寄存器。 在apb2上的i/o脚

21、可达18mhz的翻转速度。adc(模拟/数字转换器) stm32f103xx增强型产品内嵌2个12位的模拟/数字转换器(adc),每个adc有多达16个外部通道, 可以执行单次或扫描转换模式;在扫描模式下,转换在一组选定的模拟输入上自动进行。 adc接口上额外的逻辑功能允许: 同时采样和保持 交叉采样和保持 单次采样 adc可以使用dma操作。 模拟看门狗功能允许非常精准地监视一路、多路或所有选中的被转换电压,当被监视的信号超出预 置的阀值时,将产生中断。 由标准定时器(timx)和高级控制定时器(tim1)产生的事件,可以分别内部级联到adc的开始触发、 外部触发和dma触发,允许应用程序同

22、步ad转换和时钟的操作。温度传感器 温度传感器产生一个随温度线性变化的电压,转换范围在2v vdda = 900000) /间隔时间显示转换结果 ticks = 0; clock1s = 1; if (clock1s) clock1s = 0; usart_out(usart1,the current ad value = %d rn, adc_convertedvalue); /串口显示字符段 /delay(0xafffff); precent = (adc_convertedvalue*100/4096);/ 算出百分比,2的12次幂为0xfff voltage = precent*33;

23、 / voltage为实际电压值的1000倍. c43=(voltage/1000+0) ;/ 取千位数的整数部分 c45=(voltage%1000)/100+0) ; /对千位数取余数后再取其百位的整数部分 c46=(voltage%100)/10)+0) ;/对百位数取余数后再取其十位的整数部分 c47=(voltage%10)+0) ;/对百位数取余数后再取其个位的整数部分lcd_putstr_16x24_center(0, c3, c4len,black, bkcolor);lcd_putstr_16x24_center(line1, c, len,black, bkcolor);

24、lcd_putstr_16x24_center(line2, c3, c3len,black, bkcolor); lcd_putstr_16x24_center(line3, c4, c4len,black, bkcolor); lcd_putstr_16x24_center(line4, c2, c2len,black,bkcolor);usart_out(usart1,the v value = %d.%d%d%d vrn, c43=(voltage/1000),c45=(voltage%1000)/100),c46=(voltage%100)/10,c47=(voltage%10);/

25、显示实际电压值 lcd_test(); 2、adc配置: adc_configuration函数用于配置adc1的通道11,因为只用了adc1所以采用了adc独立模式,设置通道11进入规则组,规则组里的通道只有1个,就是通道1,转换用了扫描方式,软件触发,转换结果采用dma方式传递到2字节长度的缓存区里(adc_convertedvalue),默认的adcclk为36mhz,采样周期是55.5+12.5时钟周期,相当于采样时间是间隔(68/36)us。void adc_configuration(void)adc_inittypedef adc_initstructure;gpio_initt

26、ypedef gpio_initstructure;dma_inittypedef dma_initstructure; /设置ad模拟输入端口为输入 1路ad 规则通道 gpio_initstructure.gpio_pin = gpio_pin_1; gpio_initstructure.gpio_mode = gpio_mode_ain; gpio_init(gpioc, &gpio_initstructure);/* enable dma clock */ rcc_ahbperiphclockcmd(rcc_ahbperiph_dma1, enable); /* enable adc1

27、 and gpioc clock */ rcc_apb2periphclockcmd(rcc_apb2periph_adc1 , enable); /* dma channel1 configuration -*/使能dmadma_deinit(dma1_channel1);dma_initstructure.dma_peripheralbaseaddr = adc1_dr_address; /dma通道1的地址 dma_initstructure.dma_memorybaseaddr = (u32)&adc_convertedvalue; /dma传送地址dma_initstructure.

28、dma_dir = dma_dir_peripheralsrc; /传送方向dma_initstructure.dma_buffersize = 1; /传送内存大小,100个16位dma_initstructure.dma_peripheralinc = dma_peripheralinc_disable; dma_initstructure.dma_memoryinc = dma_memoryinc_enable; /传送内存地址递增dma_initstructure.dma_peripheraldatasize = dma_peripheraldatasize_halfword;/adc

29、1转换的数据是16位dma_initstructure.dma_memorydatasize = dma_memorydatasize_halfword;/传送的目的地址是16位宽度dma_initstructure.dma_mode = dma_mode_circular;/循环dma_initstructure.dma_priority = dma_priority_high;dma_initstructure.dma_m2m = dma_m2m_disable;dma_init(dma1_channel1, &dma_initstructure); /* 允许dma1通道1传输结束中断

30、*/dma_itconfig(dma1_channel1,dma_it_tc, enable);/使能dma通道1dma_cmd(dma1_channel1, enable); /adc配置adc_initstructure.adc_mode = adc_mode_independent;/adc1工作在独立模式adc_initstructure.adc_scanconvmode = enable;/模数转换工作在扫描模式(多通道)还是单次(单通道)模式adc_initstructure.adc_continuousconvmode = enable;/模数转换工作在扫描模式(多通道)还是单次

31、(单通道)模式adc_initstructure.adc_externaltrigconv = adc_externaltrigconv_none;/转换由软件而不是外部触发启动adc_initstructure.adc_dataalign = adc_dataalign_right;/adc数据右对齐adc_initstructure.adc_nbrofchannel = 1; /规定了顺序进行规则转换的adc通道的数目。这个数目的取值范围是1到16adc_init(adc1, &adc_initstructure);/* adc1 regular channels configuratio

32、n 规则模式通道配置*/ /adc1 规则通道配置 adc_regularchannelconfig(adc1, adc_channel_11, 1, adc_sampletime_55cycles5); /通道11采样时间 55.5周期/使能adc1 dma adc_dmacmd(adc1, enable);/使能adc1adc_cmd(adc1, enable);/ 初始化adc1校准寄存器adc_resetcalibration(adc1);/检测adc1校准寄存器初始化是否完成while(adc_getresetcalibrationstatus(adc1);/开始校准adc1adc_startcalibration(adc1);/检测是否完成校准while(adc_getcalibrationstatus(adc1);/adc1转换启动adc_softwarestartconvcmd(adc1, enable); 4. 设计结果与分析设计发现:数字电压表采用模数转换思想来实现,通过硬件电路和软件程序相结合,可输出自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论