第4章 系统软硬件设计
平或低电平状态才允许变化,如图4.6所示。
图4.6 I2C有效数据位
起始和终止信号:在SCL线为高电平的期间,SDA线由高电平到低电平的变化(即下降沿)表示起始信号;在SCL线为高电平期间,SDA线由低电平到高电平的变化(即上升沿)表示终止信号,如图4.7所示。
图4.7 I2C起始与终止信号
数据传送格式:
字节传送与应答:每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位),如图4.8所示。
图4.8 I2C字节传送与应答
在总线的一次数据传送过程中,可以有以下几种组合方式:
a、主机向从机发送数据,数据传送方向在整个传送过程中不变,如图4.9所示。
图4.9 主机写方式
注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。
29
第4章 系统软硬件设计
b、主机在第一个字节后,立即从从机读数据,如图4.10所示。
图4.10 主机读方式
c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相,如图4.11所示。
图4.11 主机读写混合方式
4.2.4、FLASH W25X40模块
图4.12 W25X40原理图
引脚FLASH_CS是使能和禁用芯片W25X40的操作位。当FLASH_CS位输入高电平时,芯片被禁用,SPI1_MISO引脚为高阻抗,此时,如果器件内没有正在擦除、编程或处于状态周期进程,在此期间芯片将处于待机状态。当FLASH_CS位为低电平时,使能芯片,此时功耗增加到激活水平,这时就可以进行芯片的读写了。上电后,执行一条新指令之前必须使FLASH_CS引脚先产生一个下降沿。W25X40连接方法如图4.12所示,SPI1_CLK是时钟引脚,为输入输出提供时序。SPI1_MISO是数据输出引脚,在SPI1_CLK下降沿时输出数据。SPI1_MOSI是数据输入引脚,SPI1_CLK上升沿时采集数据,数据、地址和命令通过本引脚进入芯片内部
[20]
。
W25X40访问通过SPI兼容总线组成的四路信号:串行时钟,芯片选择
(FLASH_CS),串行数据输入(SPI1_MOSI)和串行数据输出(SPI1_MISO)。支持两个SPI总线操作模式0(0,0)和3(1,1)。模式0和模式3的主要区别是当SPI主机SPI接口处于空闲状态时,SPI1_CLK是高电平还是低电平,当SPI总线主控处于待机状态和数据不会被传输到串行闪存。SPI1_CLK信号为低在模式0,模式3的时钟信号是高。两种模式都是在下降沿时输出数据,上升沿时输入数据。
下面对芯片的几个常用命令的使用进行说明讲解。
30
第4章 系统软硬件设计
写使能的指令是向状态寄存器WEL位写1。WEL位必须在每个页面程序、扇区擦除块擦除,芯片擦除、写状态寄存器之前设置。写启用由驾驶/CS低,输入指令转移指令码\到数据输入(DI)引脚上的时钟,然后驾驶/CS 高的上升沿,如图4.13所示。
图4.13 SPI写使能
写禁止指令复位写使能在状态锁存器(WEL)位为0。写入禁止指令前/ CS被拉低,转移指令代码“04H”到DIO脚,然后进入驾驶/ CS高。请注意,WEL位后,上电和写状态寄存器,页编程,扇区擦除,块擦除和芯片擦除指令完成后自动复位,如图4.14。
图4.14 SPI写禁止
读数据指令允许一个或多个数据字节被顺序地从存储器中读出。该指令先写/ CS引脚为低电平,然后发送指令代码“03H”接着是24位地址(A23-A0)到DIO引脚启动。代码和地址位被锁止在CLK引脚的上升沿。在接收到地址后,寻址的存储单元的数据字节将被移出DO引脚在CLK的下降沿,高位在前。当读到这个数据的地址时自动递增到下一个更高的地址数据的每个字节之后被移出允许连续的数据流。这意味着整个存储器可以用一条指令,只要时钟继续进行访问。/ CS拉高读数据完成。读数据的指令序列示于下图。如果读数据指令被发出时的擦除,编程或写周期是在过程(BUSY = 1)的指令被忽略,不会对在当前周期中的任何影响,见图4.15。
该块擦除指令集内的指定块(64K字节)所有内存为全1(FFH)的擦除状态。允许写入指令必须执行之前的设备将接受块擦除指令(状态寄存器WEL位必须等于1)。该指令先把/ CS引脚拉低,转移指令代码发起的“D8H”跟着一个24位块地址(A23-A0)(见图4.16)。该块擦除指令序列如下图所示的/ CS引脚必须在最后一个字节的第八位之后拉高。如果不这样做,块擦除指令不被执行。块擦除周期正在进行中,在读状态寄存器指令仍可以访问的检查忙位的状态。 块擦除周期中1,当循环完成了BUSY位是0,
31
第4章 系统软硬件设计
设备已准备好再次接受其他指令。经过块擦除周期已经完成了写使能状态寄存器清零。
图4.15 SPI读数据
图4.16 SPI块擦除
4.3、本章小结
本章是智能家居控制系统的设计部分。首先介绍了系统总体程序设计流程图以及部分程序,接着介绍由STM32F103RB单片机和电源芯片AMS1117-3.3,LCD屏组成的系统核心板模块以及系统设计原理图的连线图。然后,讲解了AT24C02工作需要的IIC时序和W25X40工作需要的SPI时序。
32
附 录
第5章 系统软硬件实现
5.1、硬件电路
硬件电路主要由三大部分组成:STM32F103RB单片机开发板、GSM模块、传感器部分。STM32F103RB单片机开发板原理图如图4.2~4.5, 4.12和5.1~5.3,GSM模块设计原理图如图5.10,传感器模块电路原理图如图5.8~5.9。根据原理图分别导出PCB如图5.11、图5.12
图5.1 开发板LCD原理图
结合图5.1和图4.2可以看出LCD的数据接口DB是STM32F103RB的PB0~15。LCD_CS是PD2,LCD_RS是PC12,LCD_WR是PC11,LCD_RD是PC10,背光BL是PC5。
图5.2 开发板调试接口、串口接口原理图
33