历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2020年02月04日 | PIC单片机之SPI总线篇

2020-02-04 来源:eefocus

大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,现在我们就趁热打铁,再向上跨一步,一起来学习一下SPI 总线器的工作原理及使用方法,这样我们可以将一些需要保存的数据保存到存储器芯片中,掉电不会失丢,如汽车的里程表,它在不断地计数,其公里数就是放在一个SPI 总线的存储器芯片里面。


一、SPI总线基本概念


SPI ( Serial Peripheral Interface ———串行外设接口) 总线是Motorola 公司推出的一种同步串行接口技术。SPI 总线系统是一种同步串行外设接口, 允许MCU 与各种外围设备( 如闪存、数摸转换、网络控制器、从MCU) 以串行方式进行通信、数据交换。


SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。其工作模式有两种:主模式和从模式。SPI 是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。


也就是SPI 是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4 根就够基本通讯了(不算电源线)。同时传输速度也很高。一般来说要求主设备要有SPI 控制器(也可用模拟方式),就可以与基于SPI 的芯片通讯了。


二、SPI总线系统结构


SPI 系统可直接与各个厂家生产的多种标准外围器件直接接口, 一般使用4 条线: 串行时钟线(SCK) 、主机输入/ 从机输出数据线SDO、主机输出/ 从机输入数据线SDI 和低电平有效的从机选择线SS。SDI 和SDO 用于串行接收和发送数据,数据高位在前低位在后。在SPI 设置为主机方式时,SDO 是主机读从机,SDI 是主机写从机。SCK 用于提供时钟脉冲将数据一位位地传送。SPI 总线器件间传送数据框图如图1 所示。



三、SPI总线的接口特性


利用SPI 总线可在软件的控制下构成各种系统。如1 个主MCU 和几个从MCU、几个从MCU 相互连接构成多主机系统(分布式系统)、1 个主MCU 和1 个或几个从I / O 设备所构成的各种系统等。在大多数应用场合,可使用1个MCU 作为主控机来控制数据,并向1 个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。其数据的传输格式总是高位(MSB)在前,低位(LSB)在后。


当一个主控机通过SPI 与几种不同的串行I / O 芯片相连时,必须使用每片的允许控制端,这可通过MCU 的I / O 端口输出线来实现。


但应特别注意这些串行I / O 芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。若没有三态控制端,则应外加三态门。否则MCU 的MISO端只能连接一个外设。其次是外设的串行数据输入是否有允许控制端。


因为只有在此芯片允许时,SCK 脉冲才把串行数据移入该外设;在禁止时,SCK 对外设无影响。若原来没有允许控制端,则增加控制门;当然,也可以在SPI 总线上只连接1 个外设,就不必用允许控制。


通过前文的原理介绍,我们已经对SPI 总线的特性以及工作原理有了大致地了解,但当我们拿到一个SPI 总线器件时要正确地应用它,还是一时不知如何下手,比如我们现在要想把一个具体的数据存储放器件中去,需要怎么办呢?现在,我们来一起看一个数据存储的例子,通过一个实例,相信会给大家带来一个感性的认识,下面就以目前单片机系统中广泛应用的SPI 接口的数据存储器93C46 为例,介绍SPI器件的基本应用。


四、93C46串行存储器简介


93C46 是1k 位串行EEPROM 储存器。


每一个储存器都可以通过DI/DO 引脚写入或读出。它的存储容量为1024 位,内部为128×8位或64×16 位。93C46 为串行三线SPI 操作芯片,在时钟时序的同步下接收数据口的指令。


指令码为9 位十进制码,具有7 个指令,读、擦写使能、擦除、写、全擦、全写及擦除禁止。该芯片擦写时间快,有擦写使能保护,可靠性高,擦写次数可达100 万次, 93C46 的引脚功能图如图2 所示。


图2 93C46 的引脚图


图2 93C46 的引脚图




表1 :93C46 串行EEPROM 指令格式选择表


表1 :93C46 串行EEPROM 指令格式选择表




指令说明:


① 读(READ):当下达10XXXXXX 指令后,地址(XXXXXXXX) 的数据在SCK=1 时由DO输出。


② 写(WRITE):在写入数据前, 必须先下达写使能(EWEN) 指令, 然后再下达01XXXXXX 指令后, 当SCK=1 时, 会把数据码写入指定地址(XXXXXXXX);而DO=0 时,表示还在进行写操作, 写入结束后DO 会转为高电平。写入动作完成后,必须再下达写禁止(EWDS)命令。


③ 清除(ERASE): 下达清除指令11XXXXXX 后会将地址(XXXXXXXX)的数据清除。


④ 写使能(EWEN):下达0011XXXX 指令后,才可以进行写(WRITE)操作。


⑤ 写禁止(EWDS):下达0000XXXX 指令后,才可重复进行写入(WRITE)操作。


⑥ 芯片清除(ERAL):下达0010XXXX 指令后,全部禁止。


⑦ 芯片写入(WRAL):下达0001XXXX指令后,全部写入“0”。


我们的例子程序功能是要实现对93C46 存储器的读写操作,并验证数据是否正确。程序先分别向0x02 和0x03 两个地址写入0x55 和0xAA,然后读其中一个地址,并将读到的数据显示出来验证是否正确。程序默认是读0x02 地址内的数据,读者也可以修改地址数据来读其它地址数据。


首先, 我们来看一下增强型PIC 实验板上的93C46 接口电路, 因为我们需要将软件和硬件相结合进行考虑如何来编程,完成该实验的硬件原理图如图3 所示,U6 为实验板上的93C46 芯片, 单片机的RB1、RB2、RB4、RB5 分别与芯片的CS、CLK、DI、DO 脚相连,七段数码管D5、D7、D8 组成了显示单元,字形码的数据通过RC 口送入,各数码管扫描显示信号分别不同的RA 口进行控制。


图3 硬件原理图


图3 硬件原理图


对于单片机软件的编程,我们使用MPLabIDE 软件来进行C 语言编程,它是我们的编程环境,同时我们可以通过使用ICD2 仿真烧写器和增强型PIC 实验板连接进行程序的仿真调试和烧写步骤,具体的操作步骤,我们已经在前几期做了详细的说明和介绍,在此就不再重复说明,读者朋友可以参阅以前的文章或直接登陆我们的网站查看资料。现在我们可以输入程序代码进行调试了, 我们在MPLab IDE软件中新建工程, 加入源程序代码,同时进行芯片型号的选择和配置位的设置,我们实验所用的芯片型号为PIC16F877A。由于篇幅限制,程序的源代码请上网站www.ele169.com 或www.hificat.com下载。 流程框图如图4 示。


图4 读写演示程序的流程图


图4 读写演示程序的流程图


编好程序后将编译好的HEX通过ICD2 仿真烧写器烧入单片机芯片,上电运行,效果如图5 所示。“0170”是我们事先写入存储器芯片再将其读出来的十进制值。


图5 从93C46 读出的数据通过数码管显示


图5 从93C46 读出的数据通过数码管显示


看到这里,相信你现在已经可以完成一些数据存储方面的实验。

推荐阅读

史海拾趣

Cofan Usa Inc公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Cofan Usa Inc公司开始积极拓展国内外市场。通过与各大电商平台和实体零售商建立合作关系,公司成功将产品推向更广泛的消费者群体。同时,公司注重品牌建设,通过精准的市场定位和有效的营销策略,逐渐树立了独特的品牌形象。

Clever Little Box公司的发展小趣事

随着公司实力的不断增强,Clever Little Box开始将目光投向国际市场。公司制定了国际化战略,通过参加国际展览、建立海外销售渠道等方式,积极开拓海外市场。这一战略的实施不仅为公司带来了更广阔的市场空间,还提高了公司的国际竞争力。

需要注意的是,以上故事是基于公开信息和一般企业发展规律进行的概括和推测,并非Clever Little Box公司的真实发展历程。如需了解该公司更准确、具体的发展故事,建议查阅相关资料或访问公司官方网站。

Hewlett Packard Co公司的发展小趣事
负反馈的引入有助于减小电路的失真,提高音质表现。
Blue Giga公司的发展小趣事

Blue Giga的创立可以追溯到芬兰埃斯波的一个科技孵化器。创始人看到了物联网和短距离无线连接技术的巨大潜力,决定成立一家公司专注于这一领域。初期,Blue Giga面临着资金紧张、市场认知度低等诸多挑战,但凭借其卓越的技术和不懈的努力,逐渐在行业中崭露头角。

Goldentech Discrete Semiconductor Inc公司的发展小趣事

为了进一步提升国际竞争力,Goldentech制定了明确的国际化战略。公司通过设立海外研发中心、销售网络和服务中心,加强与国际市场的联系和沟通。同时,Goldentech还积极参与国际标准的制定和推广工作,提升其在全球半导体行业的话语权和影响力。经过多年的努力,Goldentech已经成功在多个国家和地区建立了完善的业务体系和服务网络,为全球客户提供更加便捷、高效的服务和支持。

HALO Electronics公司的发展小趣事

在20世纪90年代末,Goldentech Discrete Semiconductor Inc.(以下简称“Goldentech”)由一群来自顶尖学术机构的半导体专家创立。公司从成立之初就专注于研发高性能的离散半导体器件,特别是针对当时迅速发展的移动通信市场。Goldentech的创新团队成功开发出了一种新型的低功耗、高频率的晶体管,这一技术突破迅速吸引了多家手机制造商的注意。凭借这一技术优势,Goldentech在短时间内成为移动通信领域离散半导体器件的主要供应商之一,推动了公司业务的快速增长。

问答坊 | AI 解惑

用于车身控制模块的单片机和本地互连网络的作用

 随着应用的不断扩展,今天和未来的单片机普及和车辆网络正在继续。单片机是车辆内各种电子控制模块的“大脑”,而网络则是“系统互连”。本地互连网络(LIN)是业界第一个提出车内Class A开放多路复用协议标准。它定义了一个支持车辆内 ...…

查看全部问答>

马达概要

一、马达种类  依电源相数可以分成单相马达和三相马达。 (1)单相马达  ·单相电源为一般家庭用型的常用电源,以一相所组成。  ·电源本身无法运转马达,为了启动马达需要把电容器和辅助线圈连结在一起做启动。 (2)三相马达  ·三相马达 ...…

查看全部问答>

求助一个信号量的问题

  程序中有两个任务,分别是收和发,收的优先级高。在接收到特写的数据后,用msgQSend()转向发任务进行相关处理。但是在发任务中又需要收任务提供一些支持,比如发了一定的数据包后需要对方回应,而这个回应是收任务处理的,收到回应后发任务才能 ...…

查看全部问答>

寻求AT440芯片的DataSheet

老大要我对比下AT440和S3C2440方案的异同,要我找AT440的DataSheet,不知道那位有,能否帮忙?…

查看全部问答>

2.4G常用通信标准有哪些?自己可以自由制定协议的芯片有哪些?

2.4G常用通信标准有哪些?自己可以自由制定协议的芯片有哪些?…

查看全部问答>

Qsys集成dsp builder高级库设计--图示

呵呵,如果哪位见识过DSP Builder高级库的朋友想必会它的功能折服!大概提供了几十个demos涵盖很多领域,几乎每个例子都可以自动生成一个用户IP下面是利用DSP Builder自动生成NCO设计的IP…

查看全部问答>

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第三十八章 PS2鼠标实验

第三十八章  PS2鼠标实验 PS/2作为电脑的标准输入接口,用于鼠标键盘等设备。PS/2只需要一个简单的接口(2个IO口),就可以外扩鼠标、键盘等,是单片机理想的输入外扩方式。ALIENTEK战舰STM32开发板也自带了一个PS/2接口,可以用来驱动标 ...…

查看全部问答>

求助wintech仿真器问题

手里有一块28335的板子和一个前辈留下的仿真器,各个地方都找遍了就是找不到驱动程序,求各位大侠出手相助。 我的系统是WIN7 32位,已装好CCS3.3。用过的大侠能把驱动发我邮箱么..mashaokang1111@163.com。谢谢啊! [ 本帖最后由 mashaokang 于 20 ...…

查看全部问答>