基于单片机的红外光通信系统设计(接收部分)毕业论文(编辑修改稿)内容摘要:

rtexM3,它采用 ARMv7M 构架。 ARM 成立于 1990 年,是苹基于单片机的红外光通信系统设计(接收部分) 7 果、 Acorn 和 VLSI 三家公司的合资,现如今最流行的是基于 ARMv7 架构的 ARM 处理器,它加入了经过优化的 Thumb2 指令集,这是现在最前卫的新技术。 Cortex系列是 v7 架构的第一次亮相,其中 CortexM3 就是按款式 M 设计的,它不仅支持16 位的 Thumb 指令集和基本的 32 位 Thumb2 指令集架构,而且拥有很多新特性。 与 ARM7 TDMI 相比, CortexM3 拥有的性能更强劲、代码密度也更高、中断可嵌套、低功耗、位带操作、成本低等众多优势。 CortexM3 的中断处理完全基于硬件进行,可减少的时钟周期数最多可达 12 个,在应用中可节约 70%的中断;同时 CortexM3采用了单线调试( Single Wire)这种新型技术,能够减少非常多的调试工具费用,其中还集成了大部分存储器控制器,这样设计人员可以直接将 Flash 外接在 MCU上,降低了应用障碍和设计难度。 作为 CortexM3 内核最先尝 蟹的公司之一, ST在技术支持方面都远远超过其他对手,其生产的 STM32F103 系列单片机拥有包括:FSMC、 TIMER、 SPI、 IIC、 USB、 CAN、 IIS、 SDIO、 ADC、 DAC、 RTC、 DMA 等外设及功能和 84 个中断, 16 级可编程优先级,非凡的功耗控制,而且它的开发成本低,具有极高的集成度。 相对于传统的 51 单片机,它的实时性更好,功能更强大,处理速度和能力都很强。 [4] 本设计处理器平台 STM32F103ZET6 来自于星翼电子科技有限公司所做的战舰ALIENTEK STM32 开发板,该开发板将 STM32 的资源开发到了极致,基于所用 STM32的内部资源都可以在此板上得到验证,配套的软件资料分为库函数版本和寄存器版本,将内部控制寄存器的函数打包,不用自己一点点追究每一个控制位的设置,使用起来很方便,它的最小系统原理图如图 所示: 图 STM32F103ZET6 单片机最小系统 本设计用了此单片机的外部中断、串口通信、 DA 转换、定时器等硬件资源,加上软件上的设计,构成了本设计的处理核心。 基于单片机的红外光通信系统设计(接收部分) 8 STM32 单片机中断系统 STM32 单片机的 EXTI 控制器支持多达 19 个外部中断事件请求,每个中 断设有状态位,有独立的触发和屏蔽设置,检测脉冲宽度低于 APB2 时钟宽度的外部信号。 [5]它的每一个 IO 口都可以设为外部中断输入,触发方式有上升沿触发、下降沿触发两种,其外部中断 /事件线路映像如图 所示。 图 外部中断通用 I/O映像 STM32 单片机中断系统有很多与之相关的寄存器,包括中断屏蔽寄存器、事件屏蔽寄存器、上升沿触发选择寄存器、下降沿触发选择寄存器、软件中断事件寄存器、挂起寄存器、外部中断 /事件寄存器。 通过配置这些寄存器就可以使用单片机的外部中断了,本设计所应用的就是它的边沿触发方式, 由单片机 IO 口 PEPE3 管脚输入,实时根据接收传感器输出的跳变沿控制内部 IO 口 PA0 管脚输出信号波形。 STM32 单片机串口通信 通信有并行和串行两种方式,在单片机系统中,信息交换多采用串行通信。 [6]串行通信就是将数据按字节分成一位一位的形式在一条传输线上逐个传送,对于一个字节的数据,串口通信一次只传送一位,所以最少要分八次才能传送完毕,如图 所示。 基于单片机的红外光通信系统设计(接收部分) 9 图 串行通信方式 串行通信分为同步串行通信和异步串行通信两种方式。 同步通信时要保证发送方时钟直接对接收方时钟控制的建立,使收发 双方达到完全同步,保持位同步和字符同步关系;异步通信指的是通信发送与接收设备使用各自的时钟来控制数据的传输过程,如图 所示。 图 异步串行通信方式 异步通信一帧字符信息的组成分为四个部分:起始位、数据位、奇偶校验位和停止位,如图 所示。 图 异步串行通信数据格式 异步串行通信方式通常用于在单片机与单片机或单片机与计算机之间的通信。 STM32 单片机具有通用同步异步收发器 (USART)与外部设备之间进行数据交换,具有 NRZ(不归零码)标准格式,可编程数组字长度 8 位或 9 位,支持 1 或 2个的停止位。 [5]任何 USART 双向通信至少需要两个引脚:接收数据输入( RX)和发送数据输出( TX),本设计作为红外通信系统的接收部分,使用到了 USART 的接收数据输入端( RXD), RX 通过过采样技术来区分噪音和数据,从而恢复数据。 STM32F103 单片机最多包含有五路串口,有支持同步单线通信和半双工单线通讯、基于单片机的红外光通信系统设计(接收部分) 10 分数波特率发生器、支持调制解调器操作、具有 DMA、智能卡协议、支持 LIN 和IrDA SIR ENDEC 规范等。 STM32 具有一个状态寄存器( USART_SR)、一个数据寄存器( SUART_DR)、每 个串口都有自己的波特率寄存器( USART_BRR), 12 位的整数和4 位小数,可以用来设置不同的波特率。 波特率的单位是 bps(位 /秒),被定义为每秒传输二进制代码的位数。 STM32 的串口波特率计算公式如下: )(波特率 US A R T DI VRxTx P C L K*16 f/ x ( ) 此式中, PCLKxf 是给串口的时钟, USARTDIV 为一个无符号定点数,只要能 够得到 USARTDIV 的值,就可以得到串口波特率寄存器 USART1BRR 值,反之,我们得到 USART1BRR 的值,也就可以推导出 USARTDIV 的值。 [7]一般我们更关心的是如何从 USARTDIV 的值得到 USART_BRR 的值,因为一般我们知道的是波特率和 PCLKx的时钟,要求的就是 USART_BRR 的值。 本设计设置 STM32 单片机 USART 波特率为115200bps,以防语音信号不能及时传输。 STM32单片机的 USART接收器可以根据控制寄存器 USART_CR1 的 M位接收 8位或 9 位的数据字,如图 所示。 图 字长设置 在使用其串口时要对其进行初始化,初始化是不用设置奇偶校验位的,本设计使用的是 9 位数据传输,设置了 1 位奇偶校验位和 8 位的数据位。 在 USART 接收期间,数据的最低有效位首先进入 RX 引脚, STM32 的发送与接收是由数据寄存基于单片机的红外光通信系统设计(接收部分) 11 器 USART_DR 来实现的,它是一个双寄存器,包含 TDR 和 RDR 两个,当向它写数据时串口会自动发送数据;当有数据收到的时候,也存在该寄存器内。 通过串口状态寄存器 USART_SR 读取串口的状态,包括串口数据是否发送完成,是否接收到有效数据等,同时可以开启 STM32 单片机的串口中断,一个字符被接收到时, RXNE位被标记,进步中断函数。 本设计就是在串口接收到数据后直接进入串口中断函数,在中断中判断数据类型以及将数据分配给不同的硬件资源。 STM32 单片机 DAC 大容量的 STM32F103 单片机具有内部 DAC,本设计所用的单片机是带有 DAC 模块的。 STM32 的 DAC 数字 /模拟转换模块是电压输出型的 DAC, 12 位的数字输入,它可以配置为 8 位或 12 位工作模式,也可以与 DMA 控制器相配合。 DAC 工作在 12为模式的时候,可以设置数据为左对齐方式或右对齐方式,它的输 出通道有两个,每个通道都有单独的转换器;在双 DAC 模式下,两个通道可以独立地进行转换,也可同时进行并同步更新两个通道输出。 DAC 的精确转换结果可以通过引脚输入参考电压 VREF+来获得,而且具有噪声波形和三角波形生成功能。 其通道模块框图如图 所示: 图 DAC通道模块框图 通过设置 DAC 数据保持寄存器的值就可以在 DAC 输出端到得到相关的电压。 本设计用的是 DAC 通道 1 的 12 位右对齐数据保持寄存器 DAC_DHR12R1,向其写入12 为数据,由单片机 PA4 管脚输出转换结果。 当 DAC 的参考电压为 Vref+的时候,DAC 的输出电压是线性的从 0Vref+, 12 为模式下的 DAC 输出电压与 Vref+及 DORx基于单片机的红外光通信系统设计(接收部分) 12 的计算公式如下: )4 0 9 5/(* D O R xV re fD A C x 输出电压 () 在 DAC 控制寄存器中可以设置 DA 输出缓存位,因为 STM32 的 DA 输出带负载能力不是很强,如果后接运放的话会消弱信号波形, STM32 的 DAC 的内部集成了 2个输出缓存,用来减少输出阻抗,无需外部运算放大器就可以直接驱动外部负载。 [5]每个 DAC通道可以通过设 置 DAC_CR寄存器的 BOFFx位来使能或者关闭输出缓存。 设置了 DAC 的输出缓存后,带负载能力加强,但是 STM32 的 DAC 缓存设置后输出不是轨到轨的,最低输出电压不能达到 0V,为此我们可以在发射端对语音信号做调整,也可以不使用 DAC 缓存,而是后加电压跟随器做缓冲,无论那种方法都可以是信号传输至后级。 本设计对两种方法都做了设置,即设置了 DAC 缓存位,也用 NE5532 运放设计了电压跟随器,可以根据需要做调整。 本设计 DAC 输出 IO 口为 PA4,转换的是 12 位数据,但是 USART 接收的有效数据是 8 位,为了保证位数一 致,红外发射部分 ADC 采集的 12 位语音信号右移了 4位,截取高 8 位,舍弃最后 4 位的数据,再通过串口发送。 本设计在程序中将接收到的 8 位的语音数据向左移动了 4 位,扩展成 12 位数据,这样就可以送给 DAC进行转换。 在发射端截取数据时,由低 4 位产生的最大误差电压为 ,可以认为同时夹杂着噪声信号,这样截取后起到了一定的滤除噪声电压的作用,接收端接收的数据就是经过减噪的数字信息。 对于温度信号,发射端使用的传感器传输的就是 8 位温度数据,不用担心与串口数据位数不一致的问题。 STM32 单片机定时器 STM32 有很强大的定时器功能,有 TIME1 和 TIME8 等高级定时器,也有 TIMETIME7 等基本定时器和 TIME2 到 TIME5 的通用定时器。 本设计中使用了通用定时器3 和通用定时器 4, STM32 的通用定时器通过可编程预分频器驱动的计数器构成,具有 16 位向上、向下、向上 /下自动装载功能,计数器可设置 165526 之间任何值的时钟频率分频系数,它可以应用于:产生输出波形(比较和 PWM)或测量输入信号的脉冲长度(输入信号捕获)等多种场合。 它的脉冲长度和波形周期可以通过 RCC 时钟控制器预分频器和定时器预分频器在 几个微秒到几个毫秒之间进行调整。 [5]STM32 的每个通用定时器包含( TIMx_CH14) 4 个独立通道,并且没有互相共享的资源,完全独立。 这些通道可以作为输入比较、输入捕获、单脉冲模式输出、 PWM 生成,同时它也可以与中断配合产生更强大的功能,如果发生计数器向上/向下溢出、计数器初始化或输入捕获等事件,则会产生中断。 通用定时器框图如图 所示。 基于单片机的红外光通信系统设计(接收部分) 13 图 通用定时器框图 定时器的计数模式分为向上计数模式、向下计数模式和中央对齐模式,本设计采用了向上计数模式,定时器时钟选择为内部时钟。 通用定时器可以 选择内部时钟、外部输入时钟、外部触发时钟和内部触发时钟,即使用一个定时器作为另一个定时器的与分频器。 通用定时器可工作于 PWM 模式,可以由自动重装载寄存器 TIMx_ARR 确定频率、由捕获 /比较寄存器 TIMx_CCRx 确定占空比的信号,定时器边沿对齐的 PWM 信号或中央对齐的 PWM 信号的产生是根据 TIMx_CR1 定时器控制寄存器中 CMS 位状态判断的。 本设计用定时器 4 中断来判断红外信号是否进行传输,通过与单片机 IO 口 PB5 控制的 LED 灯显示。 用定时器 3 边沿对齐模式来产生PWM 供后面的低通滤波器使用。 滤波电 路模块设计 处理器的 DAC 输出模拟信号后还有高频成分,需要将其滤除,只留 300Hz 到3400Hz 的语音信号,本设计分别设计了高通滤波器和低通滤波器,组成。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。