[导读]本文介绍的M25P16与PIC16F877A的接口已应用于自来水流量数据采集的本地存储中。运行稳定可靠,未发现数据丢失现象,对其他应用有一定的参考价值。
引 言
PIC单片机以性能稳定、品种众多等特点在工业控制、仪器仪表、家电、通信等领域得到广泛应用。虽然很多型号自身集成了存储器,但在很多情况下难以满足系统对大容量存储的要求,需要外扩非易失性的存储器。与并行Flash存储器相比,串行Flash存储器占用MCU引脚少,体积小,易于扩展,接线简单,工作可靠,故而越来越多地应用在各类电子产品和工业测控系统中。本文主要讨论PIC16F877A单片机与串行闪存M25P16之间的SPI通信,在要求大容量数据存储且MCU引脚资源有限的情况下具有实用价值。
1 SPI工作原理
SPI(Serial Peripheral Interface)是一种常用的串行通信协议,用于MCU系统与外围设备的通信,可用来连接存储器、A/D转换器、D/A转换器、实时时钟、LCD驱动器、传感器,甚至其他处理器。SPI主要使用4个信号:MOSI(主机输出/从机输人)、MISO(主机输入/从机输出)、SCK(串行时钟)和CS(片选)。其中,SCK由主机产生,作为传输的同步时钟,控制所有数据传输。主机通过触发从设备的CS决定二者之间的SPI传输是否能够进行。主机和外设都包含1个串行移位寄存器。主机通过向自己的SPI串行寄存器写入1个字节来发起1次传输,然后通过MOSI信号线将数据传给外设,同时外设将自己移位寄存器中的内容通过MISO信号线返回给主机,如图1所示。这样,两个移位寄存器中的内容就交换了。也就是说,外设的写操作和读操作是同步完成的。在实际应用中,如果只进行写操作,则主机只需忽略收到的字节即可;如果主机要读外设的数据,必须发送1个字节来引发从机的传输,发送的这个字节可以是任意数据。
2 M25P16简介
M25P16是16 Mb的串行闪存,具有先进的写保护机制,支持速度高达50 MHz的SPI总线的存取操作。该存储器有32个扇区,每个扇区256页,每页256字节。工作电压范围2.7~3.6 V,工作温度范围-40~+85℃。数据保存长达20年,每个扇区可擦写/编程100 000次。
M25P16支持的操作指令共有12条。指令格式为:
其中,8位的命令字是必需的,地址、哑元以及数据字节的有无和长度会因指令的不同而有所差别,详情如表1所列。所有的命令码、地址、串行输入/输出的数据,均是高位在前,低位在后。
对M25P16操作时,先选中芯片(即片选信号S拉低),然后串行输入操作指令字节,紧接着串行输入地址字节(0或3字节),必要时还要加入哑读字节,最后串行输入/输出数据字节,然后把片选信号拉高,之后M25P16启动内部控制逻辑,自行完成相应的操作。
3 SPI硬件设计
PIC16F877A单片机具有非常完善的SPI接口(RC3/SCK、RC4/SDI、RC5/SDO、RA5/SS),只有PIC16F877A作为从机时,RA5/SS引脚才作为SPI脚,PIC16F877A为主机时,SS可作为普通I/O使用。通过该接口,可比较容易地实现PIC16F877A与SPI Flash的通信。PIC16F877A与M25P16的硬件接口如图2所示。其中,SCK、SDI、SDO为MCU的SPI专用引脚,分别与存储器的对应引脚相连,可选MCU的任意I/O脚作为存储器的片选信号,图中选取RC2脚与存储器的片选S相连,这样,在SPI通信时只涉及MCU的C口,便于操作。M25P16的HOLD和W直接接高电平,表示不允许在S有效的情况下暂停SPI通信且整个存储区都没有写保护。
图2中,VDD为+5 V,由于PIC16F877A工作在5 V电压下,而M25P16的工作电压范围为2.7~3.6 V,二者不能直接相连。这里采用电阻分压的方式,保证输入M25P16的S、C、D脚的电压在存储器能承受且能识别的范围内,通过在M25P16向PIC16F877A输入数据的SDO脚加上拉电阻,保证MCU可以识别M25P16输出的高电压,从而保证正常的SPI通信。如果MCU工作于3.3 V,则直接将二者的对应引脚相连即可。
4 SPI软件设计
在硬件连线正确的基础上,要进行SPI通信,还要对M25P16编写驱动程序,包括SPI初始化、读M25P16的数据、向M25P16写人数据、数据的擦除等,这里使用C语言编程,编译器选择PICC,开发环境为MPLAB IDE8.10。
PIC16F877A的SPI通信涉及4个寄存器:控制寄存器SSPCON、状态寄存器SSPSTAT串行接收/发送缓冲器SSPBUF和移位寄存器SSPSR。其中,SSPCON的8位都是可读可写的,用于设置SSP处于主/从模式、时钟频率、时钟极性、SSP使能以及写冲突检测;SSPSTAT只有高2位可读写,低6位是只读的。PIC16F877A处于接收模式时,SSPSR和SSPBUF构成2级缓冲的接收器,SSPSR每收到1个完整的字节,就将该字节传给SSPBUF,并将中断标志位SSPIF置1,可通过读SSPBUF得到数据;877A处于发送模式时,写SSPBUF操作会同时将数据写入SSPSR,触发传输。下面结合具体的代码进行详细阐述。
(1)SPI初始化与读写函数
从SendByte和RcvByte函数的代码中,可以看出数据发送和接收是否完成,都是通过判断STAT_BF标志位(SSPSTAT寄存器的BF位,STAT_BF是在头文件pic1687x.h中定义的名称)来实现的,而数据手册中关于BF位的描述仅用于接收模式。这是由于PIC16F877A通过SDO发送数据的同时,会通过SDI读人数据,当1字节发送完成时,刚好接收1字节到SSPBUF,这时SSPBUF满,BY被置为1,故可通过STAT_BF标志判断1字节是否发送完成。
(2)连续写函数
M25P16的PP指令允许1次连续写入不超过1页(256字节)的数据。写人数据之前,首先要发出写允许命令,然后才能执行数据写入操作。数据写入函数参数包括address(32位地址)、block(写入数据缓冲区指针)、n(一次连续写入的字节数,n<256)。如果address的低8位不全为0,即不是从页起始处写,并且需要写入的数据超出该页剩余空间,则超出部分被丢弃。代码如下:
其中,delay()为延时子函数,参数为ms级,delay(1)即延时1ms。加入延时,是为了保证存储器在准备好的情况下才进行读写操作。
(3)连续读函数
M25P16允许发出读指令后,连续读取数据,这一模式极大提高了总线效率。数据读取函数的参数包括address:32位地址;block:读数据缓冲区指针;n:一次连续读取的字节数,代码如下:
M25P16的连续读操作与连续写不同的是,无论READ还是FAST_READ,在起始地址处1字节的数据读出后,会自动寻址更高地址处的数据,故程序中无需address++语句。
除了对M25P16的初始化、读写之外,经常还要对其进行擦除操作,擦除有扇区擦除和整体擦除2种方式,执行数据擦除将使内部所有数据变为FFH。擦除操作与写操作类似,在此不再赘述。
结 语
本文介绍的M25P16与PIC16F877A的接口已应用于自来水流量数据采集的本地存储中。运行稳定可靠,未发现数据丢失现象,对其他应用有一定的参考价值。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
摘 要 :视频监控系统是计算机应用中的重要领域之一。数字化摄像头网络化之后,监控系统正在不断引入新的功能,为使现有监控系统能更好地应对复杂环境,满足不同监控要求,就需要追加新功能,在系统架构与设计上进行调整。因此,如何将...
关键字:
智能监控
系统架构
模块化设计
接口设计
数据传输
深度相机
原文链接:https://www.analog.com/cn/analog-dialogue/articles/introduction-to-spi-interface.html之前详细介绍过SPI协议,今天分享一篇A...
关键字:
ADI
SPI接口
Xilinx FPGA 提供可简化接口设计的 I/O 模块和逻辑资源。尽管如此,这些 I/O 模块以及额外的逻辑仍需设计人员在源 RTL 代码中配置、验证、执行,并正确连接到系统的其余部分
关键字:
FPGA
Xilinx
存储器
接口设计
电源技术解析
引 言
PCI 总线(Peripheral Component Interconnect)是Intel公司推出的一种高性能32/64位局部总线,最大数据传输速率为132~264MB/s,是目前使用较为广泛的一种总...
关键字:
pci总线
接口设计
数据采集
电源技术解析
雷达视频
实际上,每个产品设计必须经历数字提取和真实模拟世界。设计前期的一些考虑将焦点放在接口设计上。
20世纪后半叶的技术创新达到空前的速度。不像以前,这个时期的许多进
关键字:
接口设计
电源技术解析
建立桥路
随着工业技术进步,对数字控制伺服系统中执行效率和集成化程度的要求越来越高。比如用单处理器控制多个伺服系统时,对多通道A/D转换的效率要求较高。以往较多地使用多路模
关键字:
ad7890
DSP
接口设计
电源技术解析
转换器
引 言 Flash存储器又称闪速存储器,是20世纪80年代末逐渐发展起来的一种新型半导体不挥发存储器。它兼有RAM和ROM的特点,既可以在线擦除、改写,又能够在掉电后保持数据不丢失。 NOR Flash是Flas...
关键字:
8位单片机
Flash
nor
接口设计
ICSP接口电路 在线串行编程ICSP,是PIC单片机的特点之一,它可以把程序直接烧写到单片机中,并对单片机进行在线串行编程与调试。 ICSP接口电路只有五根线,依次为: VPP、VDD、VSS、PGD、PGC,它们...
关键字:
pic
接口设计
数据采集系统
电路图
由于NAND Flash具有非易失性、大容量、低成本、接口简单等优点。在组合导航数据存储设备,激光惯导单元及红外导引头的图像采集等智能仪器中得到广泛应用。详细介绍了大容量闪存K9KAG08UOM与TMS320C6713B...
关键字:
DSP
k9kag08uom
存储技术
接口设计
闪存器件
自动化控制要求实时采集数据,快速控制,多样分析,通信灵活,虽然采用单个处理器构成的硬件平台不能满足要求。采用以MCU+DSP双处理器为核心的硬件平台则是较合理的设计方案。利用DSP实现数
关键字:
DSP
MCU
存储技术
引导
接口设计
在许多应用系统中,数字信号处理器(DSP)必须从多路模数转换器(ADC)通道获取信息,才能将经DSP处理后的数字信号传送到多路数模转换器(DAC)通道进行。关键问题是怎样在DSP系统中十
关键字:
DSP
tlc320ac01
存储技术
接口设计
介绍TMS320LF2407型DSP的主要特点和LCM320240液晶显示模块的基本使用方法。 在此基础上讨论了DSP与液晶显示屏之间采用数字I/0口模拟时序的硬件接口设
关键字:
DSP
总线与接口
接口设计
控制实现
液晶显示器
作为上世纪80年代早期批准的一个平衡传输标准,RS-485似乎已成为产业界永不过期的接口标准。关于它的文献有很多,但对于很少接触接口设计的系统工程师而言,如此海量的文献
关键字:
总线与接口
指南
接口设计
rs-485产业
PIC单片机(Peripheral Interface Controller)是一种用来开发去控制外围设备的集成电路(IC)。现在PIC单片机应用领域已经相当广泛,为了方便广大工程师能够很好的学习 PIC单
关键字:
pic单片机
总线与接口
接口设计
HSIC介面在硬体接线式晶片互连应用上的效能远胜于USB,因此愈来愈受欢迎。该双讯号源同步介面提供媲美USB的480Mbit/s高速资料传输能力;负责传输资料的主机驱动器与传统USB拓
关键字:
技术前沿
接口设计
hsic