前言
不知不觉,学习华清远见物联网课程已经一月。一个月的时间,我收获颇多。老师扎实的专业知识,良好的学习环境,一群认真刻苦的同学,无一不在促进我对此课程的学习和了解!
因为我在大学里学的专业是一样的,所以我对嵌入式理解还是比较深入的。在开始学习这门课程时,它会比其他学生更容易。在嵌入式课程学习之初,由于老师讲的知识点比较容易理解,大部分都接触过。然而,当理论知识完成并进入代码敲击阶段时,我真的打开了这门课程的另一扇门,这也是实践是检验真理的唯一标准。在学校学习时,我只是写代码来实现功能。我没有注意到应该注意的代码意的代码标准格式,只是为了实现,没有考虑到别人以后使用的感受。无从下手是我当时的状态。经过我的仔细反思,我从零开始规范我的代码格式,并将我在课程中学到的理论知识带入实践。
在嵌入式学习的过程中,从一个小白到现在我已经慢慢走上正轨,对此付出的时间和精力,不言而喻。晚上加班加点的学习已是常态,在我的不断努力和付出之后终于收获了硕果。
文章目录
前言
(一)I2C总线通信原理
1、I2C总线简介
2、I2C总线协议
3、I2C总线读写操作
4、STM32F4-I2C控制器特性
1、EEPROM简介
2、24CXX简介
3、24C65设备地址
4、24C65硬件原理图
5、24C65读写时序
(三)I2C读写EEPROM实例
二、STM32-SPI总线通信
(一)串行FLASH_W25X16简介STM32
1、SPI总线简介
3、SPI四种通信模式
4、STM32F4-SPI控制器特性
(二)串行FLASH_W25X16简介
1、串行FLASH_W25X16简介
2、W25X16硬件连线
3、W25X16控制指令
(三)STM32 SPI_FLASH基本配置和操作
(四)SPI_FLASH擦除和读取数据操作
(五)SPI_FLASH写数据操作
三、STM32 单总线传感器
(一)解释红外遥控工作原理
1.光的基础知识
2、红外通信
3、NEC协议详解
(二)红外遥控实例讲解
(三)DS18B20温度传感器工作原理
1、DS18B20技术性能特点
2、DS18B20硬件连接
3、DS18B20通信类型
4.温度读取过程
(四)DS18B20温度采集实例
四、STM32-FSMC外扩SRAM
(一)介绍常用存储器
1.存储器的类型
2、RAM存储器
三、非易失性存储器
(二)SRAM控制原理
1、SRAM简介
2、SRAM内框分析
3、SRAM的读写时序
(三)STM32-FSMC控制器介绍
1、FMSC控制器简介
2、FSMC控制器框图分析
3、FSMC地址映射
4、FSMC时序控制
(四)FSMC外扩SRAM实例
五、TFT-LCD专题讲解
(1)常见显示介绍
1.显示器分类
2.显示器的基本参数
3、TFT-LCD控制框图
(二)TFT-LCD控制原理
1、TFT-LCD屏结构
2、TFT-LCD控制原理
3、RGB-LCD控制时序分析
(三)SSD1963液晶控制器
1.液晶控制器SSD1963
2、SSD1963内部框图分析
3.8080写时序分析
4、FMSC模拟8080时
(四)LCD测试程序讲解
(五)LCD显示图片和中文字符
六、触摸屏专题讲解
(一)触摸屏简介
1、电阻触摸屏
2、电容触摸屏检测原理
(二)触摸屏操作实例讲解
七、STM32 电源管理专题讲解
(一)STM32电源管理简介
1、电源管理简介
2、STM32电源管理系统
3、STM32低功耗模式
(二)STM32实现睡眠模式
(三)STM32实现停止模式
(四)STM32实现待机模式
八、STM32 SD卡操作专题讲解
(一)STM32 SDIO接口简介
1、SD卡简介
2、SD卡的物理结构
3、SD卡内部的寄存器
4、STM32-SDIO接口简介
6、STM32-SDIO接口特性
7、STM32-SDIO功能框图
8、STM32-SDIO时钟
9、STM32-SDIO适配器
(二)SD卡操作命令及模式详解
1、SDIO内部结构
2、SDIO命令
(三)SD卡普通模式读写操作实例
(四)SD卡DMA模式读写操作实例
总结
一、STM32 I2C总线通信专题讲解
(一)I2C总线通信原理
1、I2C总线简介
(1)I2C总线介绍
I2C(Inter-Integrated Circuit)总线(也称IIC或I2C)是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,期间封装形式少,通信速率高等优点。
(2)I2C总线特征
- 两条总线线路:一条串行数据SDA,一条串行时钟线SCL来完成数据的传输及外围器件的扩展
- I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址
- I2C总线数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。一般通过I2C总线接口可编程时钟来实现传输速率的调整,同时也跟所接的上拉电阻的阻值有关。
- I2C总线上的主设备与从设备之间以字节(8位)为单位进行单双工的数据传输。
实际运用中,STM32一般为主机,其余外设为从设备,对应的地址一般为7位
(3)I2C总线物理·拓扑结构
I2C 总线在物理连接上分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。
2、I2C总线协议
- I2C协议规定: 总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的停止条件。起始和结束信号总是由主设备产生。
- 空闲状态: SCL和SDA都保持着高电平。
- 起始信号: 当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件
- 结束信号:当SCL为高而SDA由低到高的跳变,表示产生一个 停止条件
- 数据传输:数据传输以字节为单位 , 主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,数据在时钟的高电平被采样,一个字节按数据位从高位到低位的顺序进行传输主设备在传输有效数据之前 要先指定从设备的地址,一般为7位,然后再发生数据传输的方向位, 0表示主设备向从设备写数据,1表示主设备向从设备读数据
- 应答信号:接收数据的器件在接收到 8bit 数据后,向发送数据的器件发出低电平的应答信号,表示已收到数据。这个信号可以是主控器件发出,也可以是从动器件发出。总之,由接收数据的器件发出。
3、I2C总线读写操作
- 主设备往从设备写数据
- 主设备读从设备数据
- 主设备读从设备的某个寄存器
4、STM32F4-I2C控制器特性
- 软件模拟I2C时序
由于直接控制 GPIO 引脚电平产生通讯时序时,需要由 CPU 控制每个时刻的引脚状态,所以称之为“软件模拟协议”方式。
- 硬件控制产生I2C时序
STM32 的 I2C 片上外设专门负责实现 I2C 通讯协议,只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理 I2C协议的方式减轻了 CPU 的工作,且使软件设计更加简单。
- I2C的主要特点
I2C总线规范 rev03 兼容性:
- 从机模式和主机模式
- 多主机功能- 标准模式(高达 100kHz )
- 快速模式(高达 400kHz )
- 超快速模式(高达 1 MHz )
- 7 位和 10 位地址模式
- 软件复位 1 字节缓冲带 DMA 功能
- STM32芯片有多个I2C外设,它们的I2C通讯信号引出到不同的GPIO引脚上,使用时必须配置到这些指定的引脚。
引脚 |
I2C编号 |
||
I2C1 |
I2C2 |
I2C3 |
|
SCL |
PB6/PB10 |
PF1/PB10 |
PA8 |
SDA |
PB7/PB9 |
PF0/PB11 |
PC9 |
(二)EEPROM(24CXX)存储芯片介绍
1、EEPROM简介
EEPROM (Electrically Erasable Programmable read only memory),带电可擦可编程只读存储器——一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。
EEPROM常用来存储一些配置信息,以便系统重新上电的时候加载之。EEPOM 芯片最常用的通讯方式就是 I 2 C 协议
2、24CXX简介
- 24CXX芯片容量 XX表示:01、02、04、16、32、64、….. 单位: Kbit
- 24CXX芯片引脚
AT24Cxx中文数据手册【中为电子科技工作室】.pdf
24C02 I2C EEPROM数据手册.pdf
3、24C65设备地址
24CXX的设备地址:
24CXX的设备地址为7位: 高4位恒定为 1010 低3位取决于A0-A2的电平状态
注:一般主机在读写24CXX都是把设备地址连同读写位组合成一个字节一起发送
4、24C65硬件原理图
- 电气连线
- 设备地址:
读地址: 1010 0001 即 0xA1
写地址: 1010 0000 即 0xA0
5、24C65读写时序
- 写时序
- 读时序
24C65_datasheet.pdf
(三)I2C读写EEPROM实例
二、STM32-SPI总线通信
(一)串行FLASH_W25X16简介STM32
1、SPI总线简介
(1)SPI总线介绍
SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。
SPI总线被广泛地使用在FLASH、ADC、LCD等设备与MCU间,要求通讯速率较高的场合。
(2)SPI总线物理·拓扑结构
SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。
(1)MOSI:主器件数据输出,从器件数据输
(2)MISO:主器件数据输入,从器件数据输出
(3)SCLK :时钟信号,由主器件产生
(4)/SS:从器件使能信号,由主器件控制(片选)
2、SPI总线协议
- 起始信号: NSS信号线由高变低,是SPI通讯的起始信号
- 结束信号:NSS信号由低变高,是SPI通讯的停止信号
- 数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。
- 主从设备间数据交换逻辑示意
主机和从机都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。这样两个移位寄存器中的内容就被交换了。从机的写操作和读操作时同步完成的,因此SPI成为一个很有效的协议。
3、SPI的四种通信模式
在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式。
- 时钟极性CPOL : 设置时钟空闲时的电平
当CPOL = 0 ,SCK引脚在空闲状态保持低电平; 当CPOL = 1 ,SCK引脚在空闲状态保持高电平。
- 时钟相位CPHA :设置数据采样时的时钟沿
当 CPHA=0 时,MOSI或 MISO 数据线上的信号将会在 SCK时钟线的奇数边沿被采样
当 CPHA=1时, MOSI或 MISO 数据线上的信号将会在 SCK时钟线的偶数边沿被采样
- 通信模式的设置:
由CPOL及CPHA的不同状态,SPI分成了四种模式,主机与从机需要工作在相同的模式下才可以正常通讯,因此通常主机要按照从机支持的模式去设置
4、STM32F4-SPI控制器特性
STM32的SPI架构剖析:• 通讯引脚 • 时钟控制逻辑 • 数据控制逻辑 • 整体控制逻辑
(1)通讯引脚
STM32F4芯片有多个SPI外设,它们的SPI通讯信号引出到不同的GPIO引脚上,使用时必须配置到这些指定的引脚,以《STM32F4xx规格书》为准。
注:其中SPI1、SPI4、SPI5、SPI6是APB2上的设备,最高通信速率达42Mbtis/s,SPI2、SPI3是APB1上的设备,最高通信速率为21Mbits/s。其它功能上没有差异。
(2)时钟控制逻辑
SCK线的时钟信号,由波特率发生器根据“控制寄存器CR1”中的BR[0:2]位控制,该位是对f pclk 时钟的分频因子,对f pclk 的分频结果就是SCK引脚的输出时钟频率
注:其中的f pclk 频率是指SPI所在的APB总线频率,APB1为f pclk1 ,APB2为f pckl2
(3)数据控制逻辑
STM32F4的MOSI及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源来源于接收缓冲区及发送缓冲区。
- 通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区中。
- 通过读“数据寄存器DR”,可以获取接收缓冲区中的内容。 • 其中数据帧长度可以通过“控制寄存器CR1”的“DFF位”配置成8位及16位模式;配置“LSBFIRST位”可选择MSB先行还是LSB先行。
(4)整体控制逻辑
- 整体控制逻辑负责协调整个SPI外设,控制逻辑的工作模式根据“控制寄存器(CR1/CR2)”的参数而改变,基本的控制参数包括前面提到的SPI模式、波特率、LSB先行、主从模式、单双向模式等等。
- 在外设工作时,控制逻辑会根据外设的工作状态修改“状态寄存器(SR)”,只要读取状态寄存器相关的寄存器位,就可以了解SPI的工作状态了。除此之外,控制逻辑还根据要求,负责控制产生SPI中断信号、DMA请求及控制NSS信号线。
- 实际应用中,一般不使用STM32 SPI外设的标准NSS信号线,而是更简单地使用普通的GPIO,软件控制它的电平输出,从而产生通讯起始和停止信号。
(二)串行FLASH_W25X16简介
1、串行FLASH_W25X16简介
- FLASH的特性
FLSAH 存储器又称闪存,它与 EEPROM 都是掉电后数据不丢失的存储器,但 FLASH存储器容量普遍大于 EEPROM,现在基本取代了它的地位。我们生活中常用的 U盘、SD卡、SSD 固态硬盘以及我们 STM32 芯片内部用于存储程序的设备,都是 FLASH 类型的存储器。在存储控制上,最主要的区别是FLASH 芯片只能一大片一大片地擦写,而EEPROM可以单个字节擦写。
- SPI_Flash W25X16简介
W25X16有8192个可编程页,每页256字节。用“页编程指令”每次就可以编程256个字节。用扇区擦除指令每次可以擦除16页,用块擦除指令每次可以擦除256页,用整片擦除指令即可以擦除整个芯片。W25X16有512个可擦除扇区或32个可擦除块。
2、W25X16硬件连线
CS: 片选引脚,低电平有效,连接到STM32-PH2管脚
SO: 连接到STM32-PB4管脚(MISO)
SI: 连接到STM32-PB5管脚(MOSI)
CLK: 连接到STM32-PA5管脚(CLK)
WP: 写保护管脚,低电平有效,有效时禁止写入数据。接电源未使用
HOLD: HOLD 引脚可用于暂停通讯,该引脚为低电平时,通讯暂停,未使用
3、W25X16控制指令
(1)W25X16操作方式
我们需要了解如何对 FLASH 芯片进行读写。FLASH 芯片自定义了很多指令,我们通过控制 STM32利用 SPI总线向 FLASH 芯片发送指令,FLASH芯片收到后就会执行相应的操作。 而这些指令,对主机端(STM32)来说,只是它遵守最基本的 SPI通讯协议发送出的数据,但在设备端(FLASH 芯片)把这些数据解释成不同的意义,所以才成为指令。
注:可查看FLASH 芯片的数据手册《W25X16》,可了解各种它定义的各种指令的功能及指令格式
(2)读制造商/设备ID(90)
该指令通常在调试程序的时候用到,判断SPI通信是否正常。该指令通过主器件拉低/CS片选使能器件开始传输,首先通过DI线传输“90H”指令,接着传输000000H的24位地址(A23-A0),之后从器件会通过DO线返回制造商ID(EFH)和设备ID。
注:SPI为数据交换通信,主器件在发送“90H”指令时也会接收到一个字节FFH,但此数据为无效数据
(3)写使能命令(06H)
在向 FLASH 芯片存储矩阵写入数据前,首先要使能写操作,通过“Write Enable”命令即可写使能
(4)扇区擦除(20H)
由于 FLASH 存储器的特性决定了它只能把原来为“1”的数据位改写成“0”,而原来为“0”的数据位不能直接改写为“1”。所以这里涉及到数据“擦除”的概念。
在写入前,必须要对目标存储矩阵进行擦除操作,把矩阵中的数据位擦除为“1”,在数据写入的时候,如果要存储数据“1”,那就不修改存储矩阵 ,在要存储数据“0”时,才更改该位。
(5)读状态寄存器(05H)
FLASH 芯片向内部存储矩阵写入数据需要消耗一定的时间,并不是在总线通讯结束的一瞬间完成的,所以在写操作后需要确认 FLASH 芯片“空闲”。我们只需要读取状态寄存器SRP的S0即可(当这个位为“1”时,表明 FLASH芯片处于忙碌状态,它可能正在对内部的存储矩阵进行“擦除”或“数据写入”的操作)
(6)读数据(03H)
读数据指令可从存储器依次一个或多个数据字节,该指令通过主器件拉低/CS电平使能设备开始传输,然后传输“03H”指令,接着通过DI管脚传输24位地址,从器件接到地址后,寻址存储器中的数据通过DO引脚输出。每传输一个字节地址自动递增,所以只要时钟继续传输,可以不断读取存储器中的数据。
(7)写数据——页编程(02H)
页编程指令可以在已擦除的存储单元中写入256个字节。该指令先拉低/CS引脚电平,接着传输“02H”指令和24位地址。后面接着传输至少一个数据字节,最多256字节。
注: 当数据写到一个新的扇区的时候,需要重新发起一个页编程信号才能继续写入数据。
(三)STM32 SPI_FLASH基本配置和操作
(四)SPI_FLASH擦除及读数据操作
(五)SPI_FLASH写数据操作
三、STM32 单总线类传感器
(一)红外遥控工作原理讲解
1、光的基础知识
- 光的本质:光的本质是电磁波,其传播本质上是一种粒子振动。广义上,光是指所有的电磁波谱。狭义上的光是人类眼睛可以看见的一种电磁波,也称可见光。
- 光的波长:是指波在一个振动周期内传播的距离。光的波长由光的频率以及传播的介质决定,光通过不同介质的时候,频率不变而波长发生改变。
- 光的颜色: 是由它的波长来决定的,各种颜色有各自的波长,人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。
- 可见光:光整个电磁波谱包括了无线电波、红外线、紫外线以及X射线等。它们的波长不同,其中波长在380~760纳米之间就是一般的可见光。依次为红、橙、黄、绿、青、蓝、紫。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。
- 红外线:是波长介于微波与可见光之间的电磁波,波长在1mm到760纳米(nm)之间,比红光长的非可见光。 高于绝对零度(-273.15℃)的物质都可以产生红外线。现代物理学称之为热射线。我们把红光之外的辐射叫做红外线(紫光之外是紫外线),人的肉眼不可见。
2、红外通信
(1)无线远程遥控技术
又称为遥控技术,是指实现对被控目标的遥远控制,在工业控制、航空航天、家电领域应用广泛。
(2)红外遥控
是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系统中。
(3)红外通讯
就是通过红外线传输数据。发射器发出红外信号,接收器接收到信号进行解析。
(4)红外遥控器
红外遥控器是利用一个红外发光二极管,以红外光为载体来将按键信息传递给接收端的设备。红外光对于人眼是不可见的,因此使用红外遥控器不会影响人的视觉(可以打开手机摄像头,遥控器对着摄像头按,可以看到遥控器发出的红外光)。
(5)信号调制
日常生活环境中有很多红外光源,太阳、蜡烛火光、白炽灯、甚至是我们的身体。这些红外光源都可能会对我们的接收设备产生干扰,为了屏蔽干扰,只接收有效信息,我们就需要用到调制。
通过调制我们可以把指定的数字信号转换为特定频率的红外光进行发送,调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz
(6)红外接受器
红外线接收器是一种可以接收红外信号并能独立完成从红外线接收到输出与TTL电平信号兼容的器件,体积和普通的塑封三极管差不多,适合于各种红外线遥控和红外线数据传输。
(7)信号解调
解调就是将模拟信号转换成数字信号。红外接收器接收到外部发射器传过来的红外信号后,会按照固定的协议去解析信号,并转换成数字信号输出。
3、NEC协议详解
NEC协议特点
- 8 位地址码, 8 位命令码
- 完整发射两次地址码和命令码,以提高可靠性
- 脉冲时间长短调制方式
- 38KHz 载波频率
- 位时间 1.12ms 或 2.25ms
(二)红外遥控实例讲解
(三)DS18B20温度传感器工作原理
1、DS18B20技术性能特征
- 独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。
- 测温范围 -55℃~+125℃,精度为±0.5℃。
- 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
- 工作电源: 3.0~5.5V/DC (可以数据线寄生电源)。
- 在使用中不需要任何外围元件。
- 测量结果以9~12位数字量方式串行传送。
2、DS18B20硬件连接
3、DS18B20通信类型
单总线是一种半双工通信方式
DS18B20共有6种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。
所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。
(1)复位脉冲
单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480 us,,以产生复位脉冲。接着主机释放总线,4.7K的上拉电阻将单总线拉高,延时15~60 us,并进入接收模式(Rx)。接着DS18B20拉低总线60~240 us,以产生低电平应答脉冲。
(2)写时序
写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,两种写时序均起始于主机拉低总线。
- 写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。
- 写1时序:主机输出低电平,延时2us,然后释放总线,延时60us。
(3)读时序
单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。
- 典型的读时序过程为:主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取单总线当前的电平,然后延时50us。
4、温度读取过程
DS18B20的典型温度读取过程为:
- 复位
- 发SKIP ROM命令(0XCC)
- 发开始转换命令(0X44)
- 复位
- 发送SKIP ROM命令(0XCC)
- 发读存储器命令(0XBE)
- 连续读出两个字节数据(即温度)
- 结束。
温度数据的存储:
转化后得到的11位数据,存储在18B20的两个8比特的RAM中, MSB的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反再乘于0.0625即可得到实际 温度。
例如+125℃的数字输出为07D0H,,-25.0625℃的数字输出为FE6FH
(四)DS18B20温度采集实例
四、STM32-FSMC外扩SRAM
(一)常用存储器介绍
1、存储器的种类
存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有了存储器计算机才具有记忆功能
2、RAM存储器
RAM是“Random Access Memory”的缩写,被译为随机存储器。所谓“随机存取”,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。这个词的由来是因为早期计算机曾使用磁鼓作为存储器,磁鼓是顺序读写设备,而RAM可随读取其内部任意地址的数据,时间都是相同的,因此得名。
实际上现在RAM已经专门用于指代作为计算机内存的易失性半导体存储器。
根据RAM的存储机制,又分为动态随机存储器DRAM(Dynamic RAM)以及静态随机存储器SRAM(Static RAM)两种。
(1)DRAM的存储器
- DRAM的存储单元结构:动态随机存储器DRAM(Dynamic RAM)
- 动态刷新:动态随机存储器 DRAM的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0,,代表 1 的电容会放电,代表 0的电容会吸收电荷,因此它需要定期刷新操作,这就是“动态(Dynamic)”
DRAM以电容的电荷来表示数据
- 同步和异步DRAM:根据 DRAM的通讯方式,又分为同步和异步两种,这两种方式根据通讯时是否需要使用时钟信号来区分。由于使用时钟同步的通讯速度更快,所以同步 DRAM 使用更为广泛,这种 DRAM 被称为 SDRAM(Synchronous DRAM)。 常见的DRAN大多是SDRAM
- DDR SDRAM:为了进一步提高 SDRAM的通讯速度,人们设计了 DDR SDRAM (Double DataRate SDRAM)存储器。DDR SDRAM在时钟的上升沿及下降沿各表示一个数据,也就是说在 1 个时钟周期内可以表示 2数据,在时钟频率同样的情况下,提高了一倍的速度
- DDRII和 DDRIII,它们的通讯方式并没有区别主要是通讯同步时钟的频率提高了。
在上升沿时同步数据 |
|
在上升沿及下降沿都同步数据,时钟极限频率800MHz |
|
在上升沿及下降沿都同步数据,时钟极限频率1600MHz |
(2)SRAM的存储器
- SRAM的存储单元结构:静态随机存储器 SRAM的存储单元以锁存器来存储数据,见图 。这种电路结构不需要定时刷新充电,就能保持状态(当然,如果断电了,数据还是会丢失的),所以这种存储器被称为“静态(Static)”RAM。
- 同样地,SRAM 根据其通讯方式也分为同步SRAM和异步 SRAM,相对来说,异步SRAM用得较多。
(3)DRAM与SRAM的应用场合
DRAM和SRAM的特性对比:
较慢 |
较快 |
|
较高 |
较低 |
|
较低 |
较高 |
|
是 |
否 |
注:所以在实际应用场合中,SRAM 一般只用于 CPU 内部的高速缓存(Cache),而外部扩展的内存一般使用 DRAM。
3、非易失性存储器
非易失性存储器种类非常多,半导体类的有 ROM 和 FLASH,而其它的则包括光盘、软盘及机械硬盘。
(1)ROM存储器
ROM是“Read Only Memory”的缩写,意为只能读的存储器。由于技术的发展,后来设计出了可以方便写入数据的ROM,而这个“Read Only Memory”的名称被沿用下来了,现在一般用于指代非易失性半导体存储器,包括后面介绍的FLASH存储器,有些人也把它归到ROM类里边。
出厂时固化,不可修改 |
|
用户可写入一次,之后不可修改 |
|
可重复擦写,需要使用专用紫外线照射设备擦除 |
|
可重复擦写,电擦除,使用方便 |
(2)FLASH存储器
FLASH存储器又称为闪存,它也是可重复擦写的储器,部分书籍会把FLASH存储器称为FLASH ROM,但它的容量一般比EEPROM大得多,且在擦除时,一般以多个字节为单位
根据存储单元电路的不同,FLASH存储器又分为NOR FLASH和NAND FLASH
较贵 |
较便宜 |
|
较低 |
较高 |
|
随机存储 |
连续存储 |
|
独立分开 |
共用 |
|
以“扇区/块”擦除 |
以“扇区/块”擦除 |
|
可以基于字节读写 |
必须以“块”为单位读写 |
|
较高 |
较低 |
|
较低 |
较高 |
|
较少 |
较多 |
|
支持 |
不支持 |
(二)SRAM控制原理
1、SRAM简介
STM32与SRAM
STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了。STM32F407系列芯片可以扩展外部SRAM用作内存。
给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,而且内存条实质是由多个内存颗粒(即SDRAM芯片)组成的通用标准模块,而STM32扩展时,直接与SRAM芯片连接。
IS61LV25616SRAM外观:
IS61LV25616的特点:高速访问时间:8,10,12,15ns 容量:256K * 16bit
2、SRAM内部框图分析
- 地址数据接口
- 存储矩阵
- 控制电路
(1)SRAM信号线
I |
地址输入 |
|
I/O |
数据输入输出信号,低字节 |
|
I/O |
数据输入输出信号,高字节 |
|
I |
片选信号,CE#低电平有效 |
|
I |
输出使能信号,低电平有效 |
|
I |
写入使能,低电平有效 |
|
I |
数据掩码信号Upper Byte,高位字节允许访问,低电平有效, |
|
I |
数据掩码信号Lower Byte,低位字节允许访问,低电平有效 |
SRAM的控制比较简单,只要控制信号线使能了访问,从地址线输入要访问的地址,即可从I/O数据线写入或读出数据。
(2)SRAM的控制电路
控制电路主要包含了片选、读写使能以及上面提到的宽度控制信号UB#和LB#。利用CE#片选信号,可以把多个SRAM芯片组成一个大容量的内存条。OE#和WE#可以控制读写使能,防止误操作。
3、SRAM的读写时序
(1)SRAM的读时序
重点时序:读周期时间(tRC) 地址建立时间(tAA) OE建立时间(tDOE)
(2)SRAM的写时序
重点时序:写周期时间(tWC) 地址建立时间(tSA) WE脉宽(tPWE)
(3)SRAM的读写流程
读写时序的流程很类似,过程如下:
- 主机使用地址信号线发出要访问的存储器目标地址;
- 控制片选信号CE#使能存储器芯片;
- 若是要进行读操作,则控制读使能信号OE#表示要读数据,若进行写操作则控制写使能信号WE#表示要写数据;
- 使用掩码信号LB#与UB#指示要访问目标地址的高、低字节部分;
- 若是读取过程,存储器会通过数据线向主机输出目标数据,若是写入过程,主要使用数据线向存储器传输目标数据。
(三)STM32-FSMC控制器介绍
1、FMSC控制器简介
STM32F4系列芯片使用FSMC外设来管理扩展的存储器,FSMC是Flexible Static Memory Controller的缩写,译为灵活的静态存储控制器。它可以用于驱动包括SRAM、NOR FLASH以及NAND FLSAH类型的存储器,不能驱动如SDRAM这种动态的存储器。而在STM32F429系列的控制器中,它具有FMC外设,支持控制SDRAM存储器。
2、FSMC控制器框图分析
(1)通讯引脚 (2)存储器控制器 (3)时钟控制逻辑
(1)通讯引脚
由于控制不同类型存储器的时候会有一些不同的引脚,看起来有非常多,其中地址线FSMC_A和数据线FSMC_D是所有控制器都共用的
LB#、UB# |
数据掩码信号 |
|
A[17:0] |
行地址线 |
|
I/O[15:0] |
数据线 |
|
WE# |
写入使能 |
|
OE# |
输出使能(读使能) |
|
CE# |
片选信号 |
注:其中比较特殊的FSMC_NE是用于控制SRAM芯片的控制信号线,STM32具有FSMC_NE1/2/3/4号引脚,不同的引脚对应STM32内部不同的地址区域。
(2)存储器控制器
上面不同类型的引脚是连接到FSMC内部对应的存储控制器中的NOR/PSRAM/SRAM设备使用相同的控制器,NAND/PC卡设备使用相同的控制器,不同的控制器有专用的寄存器用于配置其工作模式。
相关控制寄存器:控制SRAM的有FSMC_ BCR 、FSMC_ BTR以及FSMC_BWTR寄存器。每种寄存器都有4个,分别对应于4个不同的存储区域,各种寄存器介绍如下:
- FSMC_BCR控制寄存器:可配置要控制的存储器类型、数据线宽度以及信号有效极性能参数。
- FMC_BTR时序寄存器:用于配置SRAM访问时的各种时间延迟,如数据保持时间、地址保持时间等。
- FMC_BWTR写时序寄存器:与FMC_BTR寄存器控制的参数类似,它专门用于控制写时序的时间参数。
(3)时钟控制逻辑
FSMC外设挂载在AHB总线上,时钟信号来自于HCLK(默认168MHz),控制器的同步时钟输出就是由它分频得到。
例如,NOR控制器的FSMC_CLK引脚输出的时钟,它可用于与同步类型的SRAM芯片进行同步通讯,它的时钟频率可通过FSMC_BTR寄存器的CLKDIV位配置,可以配置为HCLK的1/2或1/3,也就是说,若它与同步类型的SRAM通讯时,同步时钟最高频率为84MHz。
后面示例中的SRAM为异步类型的存储器,不使用同步时钟信号,所以时钟分频配置不起作用。
3、FSMC地址映射
FSMC连接好外部的存储器并初始化后,就可以直接通过访问地址来读写数据。
FSMC访问存储器的方式与I2C EEPROM、SPI FLASH的不一样,后两种方式都需要控制I2C或SPI总线给存储器发送地址,然后获取数据;在程序里,这个地址和数据都需要分开使用不同的变量存储,并且访问时还需要使用代码控制发送读写命令。
而使用FSMC外接存储器时,其存储单元是映射到STM32的内部寻址空间的;在程序里,定义一个指向这些地址的指针,然后就可以通过指针直接修改该存储单元的内容,FSMC外设会自动完成数据访问过程,读写命令之类的操作不需要程序控制。
FSMC的NOR/PSRAM/SRAM/NAND FLASH以及PC卡的地址被映射到了External RAM地址空间内,使得访问FSMC控制的存储器时,就跟访问STM32的片上外设寄存器一样
FSMC把整个External RAM存储区域分成了4个Bank区域,并分配了地址范围及适用的存储器类型,如NOR及SRAM存储器只能使用Bank1的地址。
FSMC地址映射:在NOR及SRAM区域,每个Bank的内部又分成了4个小块,每个小块有相应的控制引脚用于连接片选信号,如FSMC_NE[4:1]信号线可用于选择BANK1内部的4小块地址区域,当STM32访问0x68000000-0x6BFFFFFF地址空间时,会访问到Bank1的第3小块区域,相应的FSMC_NE3信号线会输出控制信号。
4、FSMC时序控制
- FSMC读时序:FSMC外设支持输出多种不同的时序以便于控制不同的存储器,它具有ABCD四种模式,下面我们仅针对控制SRAM使用的模式A进行讲解
注:内核发出访问某个指向外部存储器地址时,FSMC外设会根据配置控制信号线产生时序访问存储器
ADDSET对于SRAM未作要求
FSMC的主频为168M,一个周期约等于6ns
- FSMC写时序:
注:内核发出访问某个指向外部存储器地址时,FSMC外设会根据配置控制信号线产生时序访问存储器
(四)FSMC外扩SRAM实例
五、TFT-LCD专题讲解
(一)常见显示器介绍
1、显示器分类
显示器属于计算机的 I/O 设备,即输入输出设备。它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具。
常见显示器有三类: CRT显示器 LCD液晶显示器 LED点阵显示器 OLED显示器
(1)CRT显示器
CRT显示器是靠电子束激发屏幕内表面的荧光粉来显示图像的,由于荧光粉被点亮后很快会熄灭,所以电子枪必须循环地不断激发这些点。
(2)LCD显示器:
液晶显示器,简称 LCD(Liquid Crystal Display),相对于上一代 CRT显示器,LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备的显示器。
液晶显示器的显示结构: 液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分子排列却和固体晶体一样非常规则,因此取名液晶。如果给液晶施加电场,会改变它的分子排列,从而改变光线的传播方向,配合偏振光片,它就具有控制光线透过率的作用,再配合彩色滤光片,改变加给液晶电压大小,就能改变某一颜色透光量的多少 利用这种原理,做出可控红、绿、蓝光输出强度的显示结构,把三种显示结构组成一个显示单位,通过控制红绿蓝的强度,可以使该单位混合输出不同的色彩,这样的一个显示单位被称为像素。
注意: 液晶本身是不发光的,所以需要有一个背光灯提供光源
(3)LED显示器:
LED点阵彩色显示器的单个像素点内包含红绿蓝三色LED灯,通过控制红绿蓝颜色的强度进行混色,实现全彩颜色输出,多个像素点构成一个屏幕。由于每个像素点都是LED灯自发光的,所以在户外白天也显示得非常清晰,但由于LED灯体积较大,导致屏幕的像素密度低,所以它一般只适合用于广场上的巨型显示器。相对来说,单色的LED点阵显示器应用得更广泛,如公交车上的信息展示牌、店广告牌等。
(4)OLED显示器:
新一代的OLED显示器与LED点阵彩色显示器的原理类似,但由于它采用的像素单元是“有机发光二极管”(Organic Light Emitting Diode),所以像素密度比普通LED点阵显示器高得多 OLED显示器不需要背光源、对比度高、轻薄、视角广及响应速度快等优点。待到生产工艺更加成熟时,必将取代现在液晶显示器的地位。
2、显示器的基本参数
- 像素:像素是组成图像的最基本单元要素,显示器的像素指它成像最小的点,即前面讲解液晶原理中提到的一个显示单元。
- 分辨率: 一些嵌入式设备的显示器常常以“行像素值x列像素值”表示屏幕的分辨率。如分辨率800x480表示该显示器的每一行有800个像素点,每一列有480个像素点,也可理解为有800列,480行。
- 色彩深度:色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位”(bit)来表示。如单色屏的每个像素点能表示亮或灭两种状态(即实际上能显示2种颜色),用1个数据位就可以表示像素点的所有状态,所以它的色彩深度为1bit,其它常见的显示屏色深为16bit、24bit。
- 显示器尺寸:显示器的大小一般以英寸表示,如5英寸、21英寸、24英寸等,这个长度是指屏幕对角线的长度, 通过显示器的对角线长度及长宽比可确定显示器的实际长宽尺寸
- 显存:液晶屏中的每个像素点都是数据,在实际应用中需要把每个像素点的数据缓存起来,再传输给液晶屏,一般会使用 SRAM 或 SDRAM 性质的存储器,而这些专门用于存储显示数据的存储器,则被称为显存。显存一般至少要能存储液晶屏的一帧显示数据。
如分辨率为 800x480 的 液 晶 屏 使 用 RGB888 格 式 显 示 , 它 的 一 帧 显 示 数 据 大 小 为 :3x800x480=1152000 字 节 ;若 使 用 RGB565 格 式 显 示 , 一 帧 显 示 数 据 大 小 为 :2x800x480=768000 字节。
一般来说,外置的液晶控制器会自带显存,而像 STM32F429等集成液晶控制器的芯片可使用内部 SRAM或外扩 SDRAM用于显存空间
3、TFT-LCD控制框图
STM32F429 系列的芯片不需要额外的液晶控制器,也就是说它把专用液晶控制器的功能集成到 STM32F429 芯片内部了,可以理解为电脑的 CPU集成显卡。而 STM32F407 系列的芯片由于没有集成液晶控