SPI1. SPI介绍Serial Peripheral interface(串行外围设备接口),是Motorola首先在其MC68HCXX系列处理器上定义的,是一种高速的,全双工,同步的串行通信总线。
SPI接口主要应用于EEPROM,FLASH,各种传感器,AD转换器等。
1个SPI设备一般有4条线 (SCK,MOSI,MISO,SS)
SCK:时钟信号线,用于通讯数据同步。
它由通讯主机(MCU)产生,决定了通讯的速率。
不同的设备支持的最高时钟频率不一样,如 STM32 的 SPI 时钟频率最大为 fpclk/2。
两个设备之间通讯时,通讯速率受限于低速设备。
MOSI:主设备输出/从设备输入引脚。
主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,
这条线上数据的方向为主机到从机。
MISO:主设备输入/从设备输出引脚。
主机从这条信号线读入数据,从机的数据由这条信号线输出到主机。
在这条线上数据的方向为从机到主机。
SS:片选线或者使能线。有时候也称NSS或CS。
SPI通信时各个设备是没有地址的
主机和哪个 ...
ADC1. ADC介绍Analog-to-Digital Converter(模拟数字转换器),用于将模拟信号转换为数字形式,以便在数字系统中进行处理。一般传感器会把观测的物理量转换为电压值,也就是所谓的模拟信号。ADC转换器就是把模拟的物理量(电压值)转换为计算机认识的数字量。
ADC有三种常见类型:
逐次逼近型(Successive Approximation)
这是最常见的ADC类型之一,通过逼近法逼近模拟信号的大小
STM32中的ADC通常采用这种类型。
Sigma-Delta型
通过比较信号的累积值和一个参考值,产生一个高精度的输出。
Flash型
通过一组比较器和编码器,以高速并行方式进行转换,适用于高速应用。
ADC建立了模拟量和数字量之间的联系。
STM32F103系列提供了3个ADC,精度为12位,每个ADC最多有16个通道和2个内部信号源。
STM32F103的ADC是一种逐次逼近型模拟数字转换器。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程 ...
DMA1. DMA介绍Direct memory access(直接存储器存取)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。
2个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。
DMA控制器和Cortex™-M3核心共享系统数据总线,执行直接存储器数据传输。当CPU和DMA同时访问相同的目标(RAM或外设)时,DMA请求会暂停CPU访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。
DMA2只存在于大容量产品和互联型产品中。
2. DMA框图
2.1 DMA请求 如果外设要想通过DMA来传输数据,必须先给DMA控制器发送DMA请求,DMA控制器收到请求信号之后,控制器会给外设一个应答信号,当外设得到控制器的应答信号后,外设会立即释放它的请求。
DMA有DMA1和DMA2两个控制器,DMA1 ...
I2C1. I2C基础知识I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
是一种简单的双向两线制总线协议标准,支持同步串行半双工通讯。
标准模式传输速率为 100kbit/s,快速模式为400kbit/s,高速模式下可达3.4Mbit/s,目前大多I2C设备尚不支持高速模式。
I2C总线广泛应用于各种设备和应用领域,例如传感器、存储器(如EEPROM)、显示屏、温度传感器、实时时钟(RTC)、扩展IO芯片等。
SCL:串行时钟总线,用于数据收发同步
SDA:串行数据总线,用高低电平表示数据
可连接多个I2C通讯设备,支持一主多从也支持多主多从。每个设备都有唯一的地址,主机通过这个地址与从机通信
总线通过上拉电阻接到电源。设备空闲时,输出高阻态,当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平
2. 工作原理
主从关系:
主器件用于启动总 ...
蓝牙1. 蓝牙概述蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDAQ、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4 GHz(2.4 至 2.485 GH)ISM(即工业、科学、医学)频段,使用IEEE802.11协议。
2. 蓝牙发展历程自1994年由爱立信推出至今,蓝牙技术已经走过了30个岁月,发展为当前的状况。
第一代蓝牙:关于短距离通讯早期的探索,使用的是BR(Basic Rate)技术,此时蓝牙的理论传输速率,只能达到721.2Kbps。
第二代蓝牙:新增的EDR(Enhanced Data Rate)技术,使得蓝牙设备的传输率可达3Mbps。
第三代蓝牙:核心是AMP(Generic Alternate MAC/PHY),这是一种全新的交替射频技术,支持动态地选择正确射频,传输速率高达24Mbps。
第四代蓝牙:主推Low Energy低功耗,BLE(Bluetooth Low Energy)低功耗功能。
第五代蓝牙:开启物联网时代大门,在低功耗模式下具备更快更远的传输能力。
3. ...
串口通信1. 通讯基础1.1 并行通信与串行通信按数据传送的方式,通讯可分为串行通讯与并行通讯。
串行是按位传输,一次传输一位。
并行一般是多位同时传输。比如8位16位32位等。
并行通讯
串行通讯
通讯距离
低
远
抗干扰能力
弱
强
传输速率
高
低
成本
高
低
1.2 全双工、半双工及单工通信
单工通信:数据只能沿一个方向传输
半双工通信:数据可以沿两个方向传输,但需要分时进行
全双工通信:数据可以同时进行双向传输
1.3 同步通信与异步通信
同步
有时钟,发送和接收双方按照预定的时钟节拍进行数据的发送和接收,双方的操作严格同步。
异步
无时钟,双方不需要严格的时钟同步,每个数据块之间通过特定的起始位和停止位进行分隔,接收方可以
独立地识别每个数据块。
1.4 通信速率通信速率是指在通信系统中单位时间内传输的信息量,是评估通信系统性能的重要指标之一。
比特率(Bit rate):
定义:比特率是指在通信线路(或系统)中单位时间(每秒)内传输的信息量,即每秒能传输的二进制位数。它用单位时间内传输的二进制代码的有效位(bit)数 ...
看门狗1. 什么看门狗看门狗是一种计时硬件电路。
当系统环境比较恶劣复杂的时候,程序可能会出现一些不可预料的错误,导致程序卡死,崩溃等情况。看门狗就可以及时的重置程序,使程序重新从头开始运行。
STM32 有2个看门狗,独立看门狗,窗口看门狗。独立看门狗号称宠物狗,窗口看门狗号称警犬。
独立看门狗(IWDG)由其自己的专用低速时钟(LSI)驱动,因此即使主时钟失败,它仍然保持活动。
窗口看门狗(WWDG)的时钟是从APB1时钟预分频的,并且具有可配置的时间窗口,可以编程以检测异常晚或早的应用程序行为。
IWDG最适合需要看门狗作为完全独立于主应用程序之外的过程运行的应用程序,但对定时精度的要求较低。
WWDG最适合需要看门狗在准确的定时窗口内做出反应的应用程序。
2. 独立看门狗IWDG(Independent watchdog,独立看门狗)。独立看门狗是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个刷新计数器值的动作就是我们经常说的 ...
定时器1. 系统定时器1.1 SysTick介绍系统定时器(SysTick系统)是属于CM3内核,内嵌在NVIC中。
系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1 / SYSCLK,一般我们设置系统时钟SYSCLK(与AHB相同)等于72M。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。
SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间SysTick的处理方式都是相同的。
系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。
1.2 SysTick工作原理在使用Systick定时器进行延时操作时,可以设定初值并使能后,每经过一个系统时钟周期,计数值就减1。当计数到0时,Systick计数器自动重装初值并继续计数,同时内部的COUNTFLAG标志会置位,触发中断(如果中断使能)。这样可以 ...
中断系统1.中断概述 在主程序运行过程中,出现了特定事件,使得CPU暂停当前正在运行的程序,转而去处理这个事件,等这个事件处理完成之后,CPU再回到刚才被打断的位置继续处理,这就是中断。
这个打断CPU执行的特定事件,一般称之为中断源。被中断源打断的位置,称为断点。处理特定事件的过程,称为执行中断处理程序。
当然中断也是可以嵌套的,即中断嵌套。CPU会根据优先级的不同,来决定执行顺序
中断源可以是外部的,也可以是内部的。外部的叫外部中断源,内部的叫内部中断源(内部的中断有时候也叫异常)
Cortex-M3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。
一般情况下,芯片厂商会对Cortex-M3的中断进行裁剪。具体中断信息可通过对应的芯片手册查看。
2. 中断向量表STM32的中断向量表是一个储存中断处理函数地址的数组,位于Flash区的起始位置。每个数组元素对应一个中断源,其地址指向相应的中断服务程序。当中断发生时,处理器会根据中断号查找向量表,然后跳转到对应的中断服务程序执行。
中断向量表的主要作用是解决中断函数 ...
1. 时钟1.1 时钟树在STM32中有3种不同的时钟源用来驱动系统时钟(SYSCLK):
HSI振荡器时钟(High Speed Internal oscillator,高速内部时钟)
HSE振荡器时钟(High Speed External(Oscillator / Clock),高速外部时钟)
PLL时钟(Phase Locked Loop 锁相环/倍频器)
还有2种2级时钟:
LSI时钟(Low Speed Internal,低速内部时钟)
LSE时钟(Low Speed External oscillator,低速外部时钟)。
1.2 HSE时钟高速外部时钟信号(HSE)可以由两种可能的时钟源生成:
HSE外部晶体/陶瓷谐振器
HSE用户外部时钟
谐振器和负载电容必须尽可能靠近振荡器引脚放置,以最小化输出失真和启动稳定时间。负载电容值必须根据所选振荡器进行调整。
目前几乎所有的STM32单片机的设计都是在外部接一个8MHz的晶振,经过PLL倍频(9倍频)后得到一个72MHz的系统时钟。系统默认就是这个时钟。通过启动文 ...