适用教材:《嵌入式系统原理及应用——基于ARM Cortex-M3内核的STM32F103系列微控制器》,王益涵,清华大学出版社
提示:与教材内容不完全匹配,有所取舍
写在前面: 这份复习总结是笔者根据老师授课内容,结合教材、PPT整理出来的,本意是为了帮助笔者查缺补漏,理解记忆。现将其上传至CSDN博客,希望能对大家有所帮助。另外,内容上可能有遗漏、错误或者错字现象,还请多多包涵,并予以指教!谢绝转载!
第一单元 嵌入式系统概述
一、嵌入式系统定义:嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。
二、嵌入式系统与桌面通用系统的区别:
1. 嵌入式系统中运行的任务是专用而确定的,桌面通用系统需要支持大量的、需求多样的应用程序
2. 嵌入式系统中使用的操作系统一般是实时操作系统
3. 嵌入式系统运行需要高可靠性保障,比桌面系统的故障容忍能力弱很多
4. 嵌入式系统大都有功耗约束
5. 嵌入式系统比桌面通用系统可用资源少得多
6. 嵌入式系统的开发需要专用工具和特殊方法
7. 嵌入式系统开发是一项综合的计算机应用技术
三、嵌入式系统的特点:1. 较长的生命周期;2. 不易垄断;3.专用性;4.可剪裁性;5.可靠性。
四、MCU=MPU+外设
五、冯·诺依曼结构(all MPU on PC)和哈佛结构(all DSP+most MCU)的区别:哈佛结构的指令和数据分开存储在不同的存储空间,指令读取和数据访问可并行处理。
六、嵌入式I/O接口的功能:负责完成MPU和嵌入式I/O设备之间的信号转换、数据传送、速度匹配。
嵌入式I/O接口的组成:寄存器+I/O控制逻辑部件+外设接口。
嵌入式I/O接口的编制方式:统一编址和独立编址。
七、无操作系统的嵌入式软件的实现方式:循环轮询系统、前后台系统。
八、无操作系统的嵌入式软件仅有引导程序和应用程序组成。引导程序的主要功能:一般由汇编语言编写,在嵌入式系统上电后运行,完成自检、存储映射、时钟系统和外设接口配置等硬件初始化操作。
九、有操作系统的嵌入式软件分为设备驱动层、操作系统层、应用软件层。其中,设备驱动层由引导加载程序和设备驱动程序组成。引导加载程序(Bootloader)的功能:完成硬件自检和初始化配置后,加载和启动嵌入式操作系统。设备驱动程序的功能:对硬件进行初始化和管理,为上层软件提供透明的设备操作接口。
十、嵌入式的分类:按照实时性划分可分为非实时嵌入式系统、软实时嵌入式系统、硬实时嵌入式系统。软实时嵌入式系统:外部事件在截止期限到达时偶尔未得到及时处理并不会带来致命失误的嵌入式系统(DVD播放器、机顶盒);硬实时嵌入式系统:外部事件在截止期限到达时偶尔未得到及时处理,会带来致命失误的嵌入式系统(导弹控制系统、雷达导航系统)。
十一、嵌入式的应用:国防军事、工业控制、消费电子、办公自动化产品、网络和通信设备、汽车电子、金融商业、生物医学、信息家电等。
第二单元 嵌入式系统开发
一、嵌入式开发环境:交叉开发环境。主要由宿主机(host)、目标机(target)以及它们的之间的连接构成。首先,在宿主机(host)上建立开发环境,进行应用程序编写和交叉编译。然后,在宿主机和目标机(target)之间建立连接将应用程序下载到目标机上进行交叉调试。最后,将应用程序固化到目标机中实际运行。
二、嵌入式系统开发过程:1.需求分析;2.系统规划;3.系统实现;4.系统测试;5.系统发布。
三、目前常用的嵌入式软件开发语言有:汇编语言、C语言(best)、Java语言。
四、嵌入式系统软件开发工具:1.编辑器;2.编译器;3.链接器和定址器;4.调试工具。常用软件:KEIL MDK、IAR EWARM。
第三单元 ARM Cortex-M3处理器
一、ARM Cortex-M3处理器的构成:Cortex-M3内核和SW-DP/SWJ-DP等调试系统。其中,Cortex-M3内核主要由CM3Core(中央处理器核心)、NVIC(嵌套向量中断控制器)、SYSTICK(系统定时器)、MPU(存储保护单元)、总线矩阵等组成。
二、ARM Cortex-M3的总线接口类型:I-Code总线、D-Code总线、系统总线、外部私有外设总线、调试访问端口总线DAP等。
三、Cortex-M3处理器的工作状态:Thumb状态、调试状态。支持字(32b),半字(16b),字节(8b)三种数据类型。
四、Cortex-M3处理器的所有寄存器是32位。分为:R0~R12通用寄存器、R13堆栈指针寄存器、R14链接寄存器、R15程序计数器以及特殊功能寄存器组。其中,Cortex-M3处理器有两个SP(堆栈指针),任何时刻只能用其中一个:MSP(主堆栈指针):用于操作系统内核以及异常处理例程,PSP(进程堆栈指针):由用户的应用程序代码使用。
五、Cortex-M3处理器的工作模式:线程模式(Thread Mode,普通应用程序的代码运行模式)、处理者模式(Handler Mode,中断服务程序或OS内核的代码运行模式)。
六、Cortex-M3处理器两种工作(操作)模式的切换:异常/中断的产生将使Cortex-M3中断用户应用程序的执行,从线程模式切换到处理者模式,执行异常服务程序。而异常/中断的返回,将使Cortex-M3从处理者模式切换到线程模式。其中,当处理器处在线程模式时,既可以使用特权级,也可以使用用户级;当处理器在处理者模式时,总是特权级。在复位后,Cortex-M3将进入线程模式(特权级)。
七、Cortex-M3处理器的特权级别:用户级(不能执行特权级指令)、特权级(可以执行所有指令,访问MPU限定外所有存储空间)。
八、异常:打断程序正常执行流程的事件,包括同步事件和异步事件。中断是一种特殊的异常,属于异步事件。ARM Cortex-M3处理器最多支持240种非系统异常中断,11种系统异常中断。Cortex-M3内核所有中断机制都由嵌套向量中断控制器NVIC实现。
九、小端格式:将高字节数据存放在高地址,低字节数据存放在低地址的存储格式(高高低低)。Cortex-M3在读取指令和访问私有外设总线区时始终使用小端格式。大端格式:将高字节数据存放在低地址,低字节数据存放在高地址的存储格式(高低低高)。
第四单元 STM32F103微控制器
一、STM32F103的主系统由4个主动单元和4个被动单元构成,它们彼此之间通过一个多级的AHB总线架构相互连接。其中,4个主动单元包括Cortex-M3内核数据总线和系统总线、通用DMA1和通用DMA2,4个被动单元包括内部SRAM、内部闪存存储器、FSMC和连接所有APB设备的AHB到APB桥。
二、APB1操作速度限于36MHz,常用于低速。APB2操作速度最高72MHz,常用于高速。
三、MCU的最小系统是指能够使MCU正常工作所需要的最少元件,通常由微控制器芯片、电源电路、时钟电路、复位电路、调试和下载电路等部分组成。
四、STM32F103MCU有两个启动引脚BOOT0和BOOT1。通过设置这两个引脚电平的高低,可以将STM32F103MCU存储空间的起始地址0x00000000映射到不同存储区域的起始地址。即有三种启动方式:BOOT0=0时,从用户Flash启动;BOOT0=1,BOOT1=0时,从系统Flash启动;BOOT0=1,BOOT=1时,从片内SRAM启动。
五、STM32F103相关时钟依次可以分为以下3种:输入时钟、系统时钟、由系统时钟分频得到的其他时钟。其中,输入时钟按时钟频率和芯片角度,又可分为4种:高速外部时钟(HSE,初始化后使用,最高72MHz)、高速内部时钟(HSI,8MHz,启动或复位的初始时钟)、低速外部时钟(LSE,实时时钟模块使用,一般采用32.768kHz)、低速内部时钟(LSI,实时时钟模块和看门狗模块使用,40kHz)。
六、STM32F103MCU低功耗模式有睡眠模式、停机模式、待机模式。
七、STM32F103的启动过程:MCU从上电复位到开始执行用户应用程序之间的那段时间。主要工作:①根据BOOT0和BOOT1引脚选择启动存储器映射;②从地址0x00000000处取出栈顶指针值放入MSP;③从地址0x00000004处取出复位异常服务程序的入口地址放入PC;④执行复位异常服务程序。需要注意的是:复位异常服务程序执行完成后,STM32F103将工作于特权级线程模式,默认使用主堆栈MSP,默认时钟系统配置如下:主时钟源:HSE(外接8MHz晶振);系统时钟SYSCLK:72MHz;AHB总线时钟HCLK:72MHz;APB2总线时钟PCLK2:72MHz;APB1总线时钟PCLK1:36MHz;所有片上外设时钟关闭。
第五单元 GPIO
一、GPIO是MCU数字输入输出的基本模块,可以实现MCU与外部环境的数字交换,实现MCU对外围设备的监控,还可用于串行和并行通信、存储器扩展等。
二、STM32F103的I/O引脚有8种工作模式(4输入、4输出):普通推挽输出(OUT_PP,输出高低电平)、普通开漏输出(OUT_OD,只输出低电平)、复用推挽输出(AF_PP)、复用开漏输出(AF_OD)、上拉输入(IPU,默认上拉至高电平输入)、下拉输入(IPD,默认下拉至低电平输入)、浮空输入(IN_FLOATING,不确定高低电平)、模拟输入(AIN,外部模拟信号输入)。
三、复用功能重映射:用户根据实际需要可以把某些外设的复用功能从默认引脚转移到备用引脚上。流程概述:①使能被重新映射到的I/O引脚的时钟;②使能APB2总线上的AFIO时钟;③按复用功能的方式配置I/O引脚;④使能被重新映射的外设时钟;⑤对外设进行I/O引脚重映射。
四、输出速度:I/O口驱动电路的响应速度,而不是输出信号的速度。输出信号的速度取决于软件程序。
五、STM32F103GPIO的主要特性:
1.提供最多112个多功能双向I/O引脚,80%的引脚利用率;
2.几乎每个I/O引脚(ADC外)都兼容5V,每个I/O引脚具有20mA驱动能力;
3.每个I/O引脚最高18MHz的翻转速度,50MHz的输出速度;
4.每个I/O引脚有8种工作模式,在复位时和刚复位后,复用功能未开启,I/O引脚被配置成浮空输入模式。所有I/O引脚都具备复用功能,包括TIMER、JTAG/SWD、USART、I2C、SPI等;
5.某些复用功能引脚可通过复用功能重映射用作另一复用功能,方便PCB设计;
6.所有I/O引脚都可作为外部中断输入,同时可以有16个中断输入;
7.几乎每个I/O引脚(除端口F和G外)都可用作事件输出;
8.PA0可作为从待机模式唤醒的引脚,PC13可作为侵入检测的引脚。
第六单元 定时器
一、延时的三种实现方式:纯硬件电路、纯软件编程、可编程定时/计数器。
二、STM32F103MCU内部集成了多个可编程定时器,可分为基本定时器、通用定时器、高级定时器三种。
三、STM32F103的基本定时器(TIM6和TIM7)由触发控制器、16位预分频器、带自动重装载寄存器的16位计数器等构成,只具有向上计数的功能。其中,由16位预分频器驱动的具有自动重装载功能的16位计数器TIMx_CNT是STM32F103基本定时器的核心。基本定时器TIM6和TIM7的TIMx_CLK来源于APB1预分频器的输出,是APB1时钟频率PLCK1的2倍,72MHz。
四、延时时间=(TIMx_ARR+1)×(TIMx_PSC+1)/(TIMxCLK)。其中,TIMx_ARR(自动重装载寄存器的预设值)和TIMx_PSC(预分频系数)都是16位,取值范围为0~65535。TIMxCLK默认为72MHz,故最大可延时时间约为50s左右。
五、STM32F103的通用计时器(TIM2-TIM5)与基本计时器相比,多了捕获/比较寄存器TIMx_CCR。除具有基本的定时功能外,还可用于测量输入脉冲的频率和脉冲宽度以及输出PWM脉冲等场合,还具有编码器接口。常用的工作模式有计数模式、输出比较模式、PWM输出模式、输入捕获模式、PWM输入模式、单脉冲模式等。通用定时器TIM2-TIM5的TIMx_CLK可来源于APB1预分频器的输出,是APB1时钟频率PLCK1的2倍,72MHz;也可来源于内部触发输入(ITRx)、外部输入捕获引脚Tix、外部触发输入引脚ETR。
六、计数模式是定时器最基本的工作模式,基本定时器只能向上计数(0→ARR),而通用计时器和高级定时器还可以向下计数(ARR→0),双向计数(0→ARR-1→ARR→1)。
七、PWM模式工作过程:①定时器时钟经预分频后为计数器提供时钟;②自动重装载寄存器(TIMx_ARR)和捕获/比较寄存器(TIM_CCR)的数值不断与计数器的计数值进行比较;③当计数器的计数值与自动重装载寄存器(TIMx_ARR)的值相等时,计数器复位重新计数,并翻转输出信号;④当计数器的计数值与捕获/比较寄存器(TIM_CCR)的值相等时,只翻转输出信号(故,ARR值决定PWM的周期,CCR值决定PWM的宽度)。除基本定时器外,高级定时器和通用定时器都可用来产生PWM输出。高级定时器(TIM1、TIM8)可以同时产生7路PWM输出,通用定时器(TIM2-TIM5)可以同时产生4路PWM输出。PWM占空比=CCR值/(ARR值+1)×100%
八、STM32F103的高级计时器(TIM1和TIM8)的TIMx_CLK可来源于APB2预分频器的输出,72MHz.
第七单元 中断
一、中断服务程序,又称中断服务函数,通常是由用户使用C语言编写的特殊函数,用来实现对该中断真正的处理操作,具有以下特点:①中断服务程序既没有参数,也没有返回值,更不由用户调用,而是当某个事件产生一个中断时由硬件自动调用。②在中断服务程序中修改、在其他程序中访问的变量,在其定义和声明时要在前面加上volatile修饰词。③中断服务程序要求应当尽量的简短。
二、中断向量表是一块存储区域,通常位于存储器的零地址处,这块区域上按中断号从小到大依次存放着所有中断处理程序的入口地址。STM32F103MCU的复位中断服务程序的地址存放在中断向量表的0x00000004位置。
三、中断处理过程:①中断响应(硬件自动实现);②执行中断服务程序(用户编程);③中断返回(硬件自动实现)。
四、中断的优点:①使计算机系统能够快速响应紧急事件或优先处理重要任务。②减少CPU负荷,加快对事件的响应速度。③提高系统效率。中断的缺点:①中断会增加程序执行的不确定性和时间长度。②中断会抢占正在使用的资源。③中断嵌套会增加栈空间。
五、STM32F103的NVIC(嵌套向量中断控制器)支持84个异常,包括16个内部异常和68个可屏蔽的非内核异常中断。
六、STM32F103的NVIC使用4位优先级设置,一共可支持16级可编程异常优先级。
七、STM32 F103对于中断的响应顺序,遵循以下原则:①先比较抢占优先级,抢占优先级高的中断优先响应;②当抢占优先级相同时,比较子优先级,子优先级高的中断优先响应;
③当上述两者都相同时,比较它们在中断向量表中的位置,位置低的中断优先响应。
八、STM32F103中断设置过程:①建立中断向量表;②分配栈空间并初始化;③设置中断优先级;④使能中断;⑤编写对应的中断服务程序代码。
九、从外部激励信号看,事件与中断的请求信号没有区别,只是在STM32F103MCU的内部将其分开。中断会被送至NVIC向CPU产生中断请求,执行由用户编写或系统默认的对应的中断服务程序。事件会向其他功能模块发送脉冲触发信号,由对应模块进行响应。
十、STM32微控制器的外部中断∕事件控制器EXTI,由19根外部输入线、19个产生中断∕事件请求的边沿检测器和APB外设接口等部分组成。
十一、如果使用STM32F103引脚的外部中断∕事件映射功能,必须将该引脚设置为输入模式,必须打开APB2总线上该引脚对应端口时钟以及AFIO功能时钟。
第八单元 DMA
一、DMA(直接存储器存取),是一种完全由硬件执行数据交换的工作方式。它由DMA控制器而不是CPU来控制在存储器和存储器、存储器和外设之间的批量数据传输。一般来说,一个DMA有若干条通道,每条通道连接多个外设。这些连接在同一条DMA通道上的多个外设可以分时共享这条DMA通道,但是同一时刻,一条DMA通道上只能有一个外设进行DMA数据传输。
二、DMA的传输要素:①传输源;②传输目标;③传输单位数量;④触发信号。
三、DMA传输步骤:①DMA请求;②DMA响应;③DMA传输;④DMA结束。
四、DMA的特点:优点:①DMA降低了CPU的负担,释放了CPU资源,使得CPU的使用效率大大提高;②DMA显著提高了数据传输效率;③DMA减少了用户软件开发代码量。缺点:由于DMA允许外设直接访问内存,从而形成一段时间内对总线的独占。如果DMA传输的数据量过大,会造成中断延时过长,不适用于实时性强的嵌入式系统。故而,DMA适用于高速传送成组数据的应用场合。
五、STM32F103微控制器DMA的特点:①DMA可实现存储器和存储器间的传输、外设和存储器、存储器和外设之间的传输,闪存、SRAM、外设的SRAM、APB1、APB2和AHB上的外设均可作为访问的源和目标;②DMA具有12个独立的可配置的通道∕请求:DMA1有7个通道,DMA2有5个通道;当在存储器之间使用DMA进行数据传输时,可使用任意DMA的任意通道;③每个通道既有直接连接专用的硬件DMA请求,同时也支持软件触发,这些功能可以通过软件来配置;④在同一个DMA上,多个通道请求的优先级可以通过软件编程设置,当软件优先级设置相等时由硬件决定优先级高低;⑤每个DMA通道都有3个事件标志:DMA半传输、DMA传输完成和DMA传输出错,这3个事件标志逻辑或成为一个单独的中断请求;⑥STM32微控制器规定可编程的DMA数据传输数量最大为65535;⑦STM32微控制器支持循环模式和普通模式两种工作模式,其中循环模式支持循环的DMA缓冲区管理,避免DMA传输到达缓冲区结尾时所产生的中断。
第九单元 ADC
一、ADC(模拟数字转换器),是一种将连续变化的模拟信号转换为离散的数字信号的电子器件。
二、ADC进行模数转换一般分为采样、量化、编码三个步骤。其中,采样时,必须遵守采样定律:采样频率应大于等于被测信号频率的2倍以上才能复原信号。
三、ADC的主要性能参数有量程、分辨率、精度、转换时间等。其中,量程是指ADC所能转换的模拟输入电压的范围。分辨率是指ADC所能分辨的最小模拟输入量,由ADC的量化位数n决定,一个n位ADC的分辨率等于ADC满量程与2n的比值。精度是指实际需要的模拟输入值与理论上要求的模拟输入值之差。转换时间是指完成一次A/D转换所需要的时间,ADC的转换时间等于ADC的采样时间+ADC量化和编码时间。
四、ADC的主要类型:①逐次逼近型ADC;②电压时间转换型ADC;③电压频率转换型ADC。其中,逐次逼近型ADC转换精度高、转换速度快,但抗干扰性差。电压时间转换型ADC转换精度高、抗干扰性好,但转换速度慢。电压频率转换型ADC转换精度高、抗干扰性好。
五、STM32F103包含1-3个12位逐次逼近型的模拟数字转换器。每个ADC最多有18个通道,可测量16个外部信号源和2个内部信号源。ADC可将18路通道分为规则通道组(16路)和注入通道组(4路)。其供电要求为2.4V~3.6V,可测模拟输入信号VIN的范围是VREF-≤VIN≤VREF+,其中,VREF-和VREF+分别是ADC使用的正极和负极参考电压。STM32F103ADC转换的结果可以左对齐或右对齐方式存储在16位数据寄存器中,可分为规则通道数据寄存器(1个),注入通道数据寄存器(4个)。
六、STM32F103根据优先级将所有的通道分为两组:规则通道组和注入通道组。划分到规则通道组的通道称为规则通道,最多有16个,相当于正常运行的程序。当每个规则通道转换完成后,将转换结果保存到同一个规则通道数据寄存器中,同时产生ADC转换结束事件,可以产生对应的中断和DMA请求。划分到注入通道组的通道称为注入通道,最多有4个,相当于中断,优先级高于规则通道组,当每个注入通道(4个)转换完成后,将转换结果保存到对应的规则通道数据寄存器(4个)中,同时产生ADC转换结束事件,可以产生对应的中断,不具备DMA传输能力。
七、ADC转换时间T=采样时间+量化编码时间。其中,量化编码时间固定不变,为12.5个ADC时钟周期,采样时间由被测时间而定。注意:ADC时钟ADCCLK最大不能超过14MHz。
八、STM32F103的ADC有两种工作模式:独立模式和双ADC模式。
九、在计算机系统中,外围I/O设备进行数据交换有三种方式:轮询、中断和DMA。其中,轮询适合CPU不忙且传送速度不高的情况;中断适合CPU比较忙的情况,尤其适合实时控制和紧急事件的处理;DMA适合高速外设进行大批量或频繁数据传送的场合。
第十单元 USART
一、数据通信的基本概念:
①并行通信:是指使用多条数据线传输数据。优点是传输速度快,缺点是需要占用更多的IO口,传输距离短,易受外界信号干扰。
②串行通信:是指使用一条数据线,将数据一位一位地在这条数据线上依次传输。优点是抗干扰能力好,占用的数据线少,缺点是传输数据相对较慢。
③单工通信:数据只能单向传送。如:广播。
④半双工通信:指在同一条通路上数据可以双向传输,但在同一时刻这条通路上只能有一个方向的数据在传输。如:对讲机。
⑤全双工通信:是指使用不同通路实现数据两个方向的传输,从而使数据在两个方向上可以同时进行传送。例如,电话。
⑥同步通信:多用一根I/O线,在发送端和接收端之间使用共同的时钟。数据传输速度快,适于需要高速通信的场合。
⑦异步通信:是指在发送端和接收端之间不存在共同的时钟。虽然传输速率远低于同步通信,但在发送端和接收端无需额外的时钟线。
二、比特率:每秒传送的二进制位数,单位为bps。波特率:每秒传送码元的个数,单位为baud。由于UART使用NRZ编码,UART的波特率和比特率相同。
三、UART是异步串行全双工通信,最简单的UART接口可以由TxD,RxD,GND 3根线组成。
四、UART的数据格式由起始位、数据位、校验位、停止位和空闲位等构成。其中,起始位、数据位、校验位和停止位构成一个数据帧。
五、STM32F103特性:
①STM32F103系列微控制器内部集成的USART模块,在具备UART异步全双工串行通信传输基本功能的同时,还具有同步单向通信的功能。
②USART1位于高速APB2总线上,其他的USART和UART位于APB1总线上;
③全功能可编程串行接口特性:起始位(1位),数据位(8或9位);校验位(奇、偶或无);停止位(1或2位);支持硬件流控制(CTS和RTS);
④自带可编程波特率发生器(整数部分12位、小数部分4位),最高传输速率可达4.5Mbps;
⑤两个独立带中断的标志位:发送标志位TXE(发送数据寄存器空)和接收标志位RXNE(接收数据寄存器非空);
第十一单元 SPI
一、SPI(串行外围设备接口),是一种高速全双工串行同步通信接口,通常由4根线组成,SCK(时钟线)、MOSI(主设备输出/从设备输入线)、MISO(主设备输入/从设备输出线)、SS(SPI从设备选择信号线)。
二、SPI传输时序与其时钟极性(CPOL)和时钟相位(CPHA)有关。CPHA=0,奇数跳变沿存取;CPHA=1,偶数跳变沿存取。CPOL=0时,SCK在空闲时是低电平;CPOL=1时,SCK在空闲时是高电平。SPI传输速率较高,可达18MHz。
三、SPI数据格式以帧为单位,通常可选择8-16位数据帧格式。SPI数据可以由高位到低位(MSB→LSB)、也可以由低位到高位(LSB→MSB)。
四、STM32SPI的特性:
①SPI1位于高速APB2总线上,其他的SPI(如SPI2、SPI3等)位于APB1总线上;
②既可以作为主设备,也可以作为SPI从设备;
③主模式和从模式下均可由软件或硬件进行NSS管理,动态改变主∕从操作模式;
④可编程的SPI时序:由时钟极性和时钟相位决定;
⑤可编程的SPI数据格式:8位或16位数据帧;LSB在前或MSB在前的数据顺序;
⑥可编程的SPI传输速率:最高SPI速率可达18MHz;
第十二单元 I2C
一、与UART、SPI相比,I2C具有以下特点:(优点)
①仅用两根线就完成了数据传输;
②采用器件地址的硬件设置方法,通过软件寻址避免了像SPI那样的器件片选线寻址,显著地简化了微控制器和外围器件之间的连接,连接在同一条总线上;
③要求被寻址的设备发回应答信息,这样可以提供相对可靠的系统。
二、与UART、SPI相比,I2C具有以下特点:(缺点)
①仅能实现半双工通信
②传输速率也相对有限
③易受干扰,并且不检查错误
三、主机:初始化发送、产生时钟和终止发送的器件,通常是微控制器;
从机:被主机寻址的器件;
发送器:本次传输中发送数据到I2C总线的器件,既可以是主机也可是从机,由通信过程具体确定;
接收器:本次传输中从I2C总线上接收数据的器件,既可以是主机也可以从机,由通信过程具体确定;
四、I2C由两根线组成,SCL(串行时钟线)、SDA(串行数据线)
五、I2C互连(特点)
①必须在I2C总线上外接上拉电阻;②通过地址区分挂载在I2C总线上不同的器件;③支持多主机互连;
六、I2C的位时序,包括起始条件、数据有效性、停止条件等。
①起始条件(起始信号):当SCL为高电平时,SDA上由高到底的跳变。
②数据有效性:SDA的数据线必须在SCL为高电平时内保持稳定,只能在SCL为低电平时改变。否则,被误判为起始位或停止位。
③停止条件(停止信号):当SCL为高电平时,SDA上由低到高的跳变。
七、I2C的标准传输速率为100Kbps,快速传输可达400Kbps。目前,还增加了高速模式,最高传输速率可达3.4Mbps。
八、STM32 I2C的特性
①所有的I2C都位于APB1总线;
②支持标准(100Kbps)和快速(400Kbps)传输速率;
③所有的I2C可工作于主模式或从模式,可以作为主发送器、主接收器、从发送器或者从接收器;
④支持7位或10位寻址和广播呼叫;
⑤具有3个状态标志:发送器/接收器模式标志、字节发送结束标志、总线忙标志;
⑥具有2个中断向量:1个中断用于地址∕数据通讯成功,1个中断用于错误;
⑦具有单字节缓冲器的DMA;