180 likes | 533 Views
基于 STM32 的嵌入式蓝牙与 WiFi 模块设计. 交通物联网应用技术. 教学目的. 介绍 32 位 ARM STM32 系统的硬件设计,分别介绍 I/O 口、中断、 DMA 、 UART 、 A/D 等接口的硬件设计要点和特性 掌握嵌入式系统中蓝牙、 WiFi 无线组网通讯模块的软硬件设计方法及应用. 32 位 ARM 处理器 STM32 简介. STM32 处理器的特点 STM32F103 系列微处理器是首款基于 ARMv7- M 体系结构的 32 位标准 RISC (精简指令集)处理器。
E N D
基于STM32的嵌入式蓝牙与WiFi模块设计 交通物联网应用技术
教学目的 • 介绍32位ARM STM32系统的硬件设计,分别介绍I/O口、中断、DMA、UART、A/D等接口的硬件设计要点和特性 • 掌握嵌入式系统中蓝牙、WiFi无线组网通讯模块的软硬件设计方法及应用
32位ARM处理器STM32简介 • STM32处理器的特点 • STM32F103系列微处理器是首款基于ARMv7- M体系结构的32位标准RISC (精简指令集)处理器。 • 作为最新一代的嵌入式ARM 处理器,它为实现MCU 的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供了卓越的计算性能和先进的中断响应系统。
32位ARM处理器STM32简介 • STM32硬件接口外设 • 多达51个快速I /O 端口 • 2个12位模数转换器,多达16个外部输入通道 • 灵活的7路通用DMA 可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输 • 调试模式 • 内部包含多达7个定时器 • 含有丰富的通信接口
32位ARM处理器STM32简介 • STM32的时钟和电源管理 • 在STM32中,有五个时钟源 • HIS • HSE • LSI • LSE • PLL • STM32的电源组成,其主要由3个部分 • 独立的A/D供电电压和参考电压 • 备份电压 • 电压调节器。
I/O口 • STM32的I/O口工作原理 • STM32的输入输出管脚有下面8种可能的配置 : • 浮空输入_IN_FLOATING • 带上拉输入_IPU • 带下拉输入_IPD • 模拟输入_AIN • 开漏输出_OUT_OD • 推挽输出_OUT_PP • 复用功能的推挽输出_AF_PP • 复用功能的开漏输出_AF_OD
I/O口 • I/O口编程实例 • 函数GPIO_DeInit • 功能描述:将外设GPIOx寄存器重设为缺省值 • 函数GPIO_AFIODeInit • 功能描述:将复用功能(重映射事件控制和EXTI设置)重设为缺省值 • 函数GPIO_Init • 功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 • 函数GPIO_StructInit • 功能描述:把GPIO_InitStruct中的每一个参数按缺省值填入 • 函数GPIO_ReadInputDataBit • 功能描述:读取指定端口管脚的输入 • 函数GPIO_ReadInputData • 功能描述:读取指定的GPIO端口输入 • 函数GPIO_ReadOutputDataBit • 功能描述:读取指定端口管脚的输出
中断 • ARM的中断原理 • ARM cortex_m3 内核支持 256 个中断(16 个内核+240 外部)和可编程 256 级中断优先级的设置,与其相关的中断控制和中断优先级控制寄存器(NVIC、SYSTICK 等)也都属于cortex_m3 内核的部分。STM32 采用了cortex_m3 内核,所以这部分仍旧保留使用,但 STM32并没有使用 cortex_m3 内核全部的东西(如内存保护单元 MPU 等),因此它的 NVIC 是cortex_m3 内核的 NVIC 的子集。
中断 • STM32的中断控制器 • STM32 目前支持的中断共为 84个(16 个内核+68个外部),和16 级可编程中断优先级的设置。 • STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备 。
中断 • 中断编程实例
UART • UART的工作原理 • UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。 • 在嵌入式设计中,UART用来与PC进行通信 • 其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备
UART • STM32的UART • STM32的可提供5路串口,有分数波特率发生器、支持单线光通信和半双工单线通讯、支持LIN、智能卡协议和IrDA SIR ENDEC规范(仅串口3支持)、具有DMA等
A/D接口 • A/D接口原理 • 模数转换则是将模拟电量转换为数字量,使输出的数字量与输入的模拟电量成正比。 • 在A/D转换中,因为输入的模拟信号在时间上是连续的,而输出的数字信号是离散量,所以进行转换时只能按一定的时间间隔对输入的模拟信号进行采样,然后再把采样值转换为输出的数字量。通常A/D转换需要经过采样、保持量化、编码四个步骤。
A/D接口 • STM32的A/D转换 • STM32处理器自带的12位ADC是一种逐次逼近型模拟数字转换器。他有18个通道,可测量16个外部和两个内部信号源。 • 各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐的方式存储在16位数据寄存器中。
基于STM32的蓝牙、WiFi模块设计 • 嵌入式蓝牙模块设计 • 设置主模块的PIO0为高或悬空,从模块的PIO0为低。 • 设置两个模块的PIO2、PIO3、PIO4、PIO5高低到对应的波特率,具体参考设置 • 串口通信波特率。 • 设置两个模块的PIO6、PIO7、PIO8、PIO9、PIO10、PIO11相同的通道,不能为通道64(即全高电平)。 • 模块上电,主模块则自动去查找该通道的从模块,此时主模块和从模块的PIO1脚都是输出为高低脉冲。若连接成功之后,主从模块的PIO1管脚输出为高电平,连接一个LED GREEN进行显示状态。 • 连接成功之后,两个模块两端就能进行串口数据全双工通信了。
基于STM32的蓝牙、WiFi模块设计 • 嵌入式WiFi模块设计
STM32硬件接口、蓝牙和WiFi通讯实验 • STM32 LED灯控制实验 • STM32按键中断实验 • STM32 A\D转换实验 • 蓝牙组网配置实验 • WiFi组网配置实验
思考题 • STM32采用的是哪种CPU内核?实现了什么样的体系结构? • 简述STM32处理器的外设接口的特点? • STM32的中断控制器有多少个中断源? • S3TM32的A/D转换器的类型是什么? • 嵌入式蓝牙模块硬件接口如何设计? • 嵌入式WiFi模块硬件接口如何设计?