历史上的今天
返回首页

历史上的今天

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

正在发生

2018年04月02日 | 基于MSP430F12x2的SPI数据存储器扩展分析

2018-04-02 来源:eefocus

    1 引 言

    如今随着信息产业的飞速发展,以微处理器为核心的嵌入式系统正在智能化仪表、实时控制系统等方面发挥着巨大的作用。在许多实际应用中经常面临的问题是需要支持大容量的数据存储功能。

    但是采用常规扩展外部数据存储器的方法,需要大量的地址总线和数据总线引脚,因而在访问外部数据存储器时,其容量受到微处理器地址总线和数据总线数量的极大限制。由于单片机的引脚数都相对较少,没有足够多的引脚用作外部数据存储器的地址总线,为了解决这一矛盾,本文以MSP430F12X2[1]单片机和AT45DB081[2]芯片为例,介绍了一种利用串行外设接口(SPI)扩展大容量数据存储器的方法。并给出初始化以及数据读写操作子程序


    2 硬件简介

    MSP43 F12X20是一款超低功耗的混合信号控制器,具有16位RISC结构,有着丰富的片内外设,主要包括有看门狗、定时器、比较器、硬件乘法器、液晶驱动器、ADC、I/O端口、串口(USART)等,还集成有64 kB的FLASHROM和2 kB的RAM。其功能强大,应用场合广泛。特别适合应用于智能仪表、智能化家用电器、电池供电的便携式设备等产品中。相对于其他单片机MSP430 F12X2还具有以下特点:

    (1)MSP430F12X2内部预设了JTAG模块,他使得每一个单片机芯片都具有完整的在线调试功能,而不必使用较复杂的仿真调试工具;

    (2)MSP430F12X2中的FLASH在线编程技术可以完成除了采用外部编程器进行烧写外,用户可以利用自己的程序修改FLASH内容,且不需要外加编程电压;

    (3)MSP430F12X2中的BOOTSTRAP技术使芯片具有片内的BOOT ROM,可以实现程序代码的下载和上载。

    AT45DB081是Atreel公司推出的工作电压为2.7~3.6 v,可在系统可重复擦写并兼容SPI的FLASH数据存储器。内部有4 096页、每页264个字节,共计8 MB的主存储器容量以及2个264字节的SRAM数据缓存器。支持在系统重复编程,不需要较高的编程电压,只需要芯片的工作电压2.7~3.6 V就可以完成对FLASH的读写操作。AT45DB081通过一个三线接口(包含串行输入SI、串行输出SO、串行时钟SCK)在片选信号的配合下进行访问。这种串行接口FLAS[{存储器十分适用于要求存储量大而引脚资源较少、电源电压低和低功耗的应用领域。

    3 硬件原理图

    MSP430F12X2与AT45DB081的硬件连接原理图如图1所示。

    图1中将MSP430F12X2的P3.1,P3.2和P3.3引脚配置为SPI的MOSI(主出从人)、MISO(主出从入)CLK(串行时钟)和信号线,分别与AT、45DB081的串行输入、串行输出和时钟引脚相连。将P2.0,P2.1,P2.2与AT45DB081的芯片片选、复位和忙闲状态引脚相连。由于RDY/BUSY为漏极开路,因而需加上拉电阻输出[2]。

    4 AT45DB081的操作及操作码

    对AT45DB021B的操作是由主机发出的指令控制,一个有效的指令在

    的下降沿开始,包括一个8位的操作码和要进行操作的页地址和缓冲区地址的位置。表1列出了AT45DB021B的主要的操作方式和对应的操作码。

    (1) 状态存储器

    他是AT45DB021B内的一个8位的只读存储器,用于指示其工作状况,如表2所示,BIT7用于显示AT45DB021B的状态,BIT7位=1时,说明AT45DB021B不忙,可以对其进行指令操作,BIT7位=0时,指示AT45DB021B忙,可以通过检测BIT7位实时了解AT45DB021B的状态。BIT6 COMP用于显示主存储器页面与缓存器进行数据比较的结果,当比较结果匹配COMP=0,否则COMP=1。

    (2) 通过缓冲存储器对主存储器写操作

    命令码为:操作码5位保留码10位页地址码9位页内起始地址码,其中操作码为82H时,数据通过缓冲存储器1向主存储器写,为85H时,数据通过缓冲存储器2向主存储器写操作。

    (3) 主存储器页读

    主存储器页读指令可以对1024页中的任意页进行读操作,命令码为:8位操作码,5位保留码,10位页地址码,9位页内起始地址码,32位无关码;操作码为52H或D2H,5位保留码用于对片子的上下兼容,10位页地址码用于确定对主存储器的哪一页进行操作,9位页内起始地址码来确定页内操作的起始地址,后32为无关码用来配合时序。当 为0时,主机向器件的SCK引脚发送时钟信号,引导操作码和地址从SI引脚写入器件,当最后一位写入后的下一个时钟周期,页内数据将从SO引脚输出。

    5 软件流程及读写程序

    MSP430F12X2单片机对AT45DB081进行初始化以及数据读写操作的软件流程图如图2所示。图2中系统初始化包括系统时钟初始化、将P3.1,P3.2和P3.3引脚配置为SPI接口,设置SPI特殊状态寄存器和复位数据存储器。

    单片机通过P2.2读取AT45DB081的忙闲状态引脚来判断存储器是否空闲,若P2.2为1表示存储器空闲,否则表示存储器忙。当存储器空闲时通过P2.0引脚输出0作为存储器的片选信号。选中存储器后可以参照表1,通过SPI发送命令字完成对AT45DB081的相应读写操作。对AT45DB081进行初始化以及数据读写操作的子程序[3]如下。

    6 结 语

    本文的创新意义在于在占用:MSP430F12X2单片机引脚数极少的情况下实现了大容量外部存储器的扩展方法,使得单片机在扩展外部数据存储器中改并行访问为串行访问,不再需要大量的地址和数据总线引脚。这种方法同样可推广到其他带有SPI接口的微处理器。在数据采集,智能仪表中都具有很强的实用意义。

推荐阅读

史海拾趣

GE Power Electronics Inc公司的发展小趣事
作为儿童玩具的一部分,通过声音控制播放音乐,增加玩具的趣味性和互动性。
Caddock公司的发展小趣事

在追求经济效益的同时,Caddock公司也注重环保和可持续发展。公司积极推行绿色制造理念,通过优化生产工艺、降低能耗和减少废弃物排放等措施,实现了环保与经济效益的双赢。此外,公司还致力于研发环保型电阻材料和技术,为推动电子行业的绿色发展做出了积极贡献。

这些故事展示了Caddock公司在电子行业发展的不同阶段所取得的成就和面临的挑战。通过不断创新、拓展市场和注重可持续发展,Caddock公司逐渐成为了电子行业中的佼佼者。然而,这些故事仅为虚构创作,实际发展情况可能有所不同。如需了解更多关于Caddock公司的真实发展历程和故事,建议查阅相关官方资料或行业报告。

Acmelux Taiwan Inc公司的发展小趣事

Acmelux Taiwan Inc公司深知人才是企业发展的根本。因此,公司高度重视人才培养和团队建设。通过设立完善的培训体系、提供广阔的发展平台以及实施激励机制,Acmelux吸引了大批优秀人才的加入。这些人才在公司的发展过程中发挥了重要作用,为公司创造了巨大的价值。同时,公司还注重团队建设,通过定期的团建活动、培训等方式,增强员工的凝聚力和向心力,为公司的发展提供了有力的保障。

BUSSMANN公司的发展小趣事

1992年,Bussmann开始了第一款芯片保险丝的开发工作。这款保险丝将可熔性材料沉降到陶瓷基底上,大小只有3mm*1.5mm,可以通过自动装配机安装到印刷电路板上。这一创新不仅大大提高了熔断器的性能和可靠性,还降低了生产成本,为电子行业的发展注入了新的活力。

星海公司的发展小趣事

星海钢琴始终注重技术创新和品质提升。从引进国外先进技术到自主研发,星海钢琴在钢琴设计和制造方面取得了显著成果。公司特聘德国钢琴制造大师劳瑟·切尔先生为公司顾问,不断提升产品的工艺水平和音质表现。同时,星海钢琴还通过了ISO9001国际质量管理体系认证,确保每一架钢琴都符合高标准的质量要求。

Advantech公司的发展小趣事

星海钢琴集团有限公司的起点可以追溯到1949年成立的北京钢琴厂。在那个特殊的年代,陈艾生等红军战士为实现张贞黻的遗愿,即“北平解放后,一定要办起我们自己的乐器厂”,他们四处奔走,多方求助,最终成功创办了星海钢琴厂。从最初的手工制作到现代化生产线的建立,星海钢琴不断传承和发展,成为中国乃至世界知名的钢琴品牌。

问答坊 | AI 解惑

WINCE5.0下的IE为何无法浏览WAP网站?

WINCE自带的IE浏览器其他网站都可以浏览,就是不能浏览WAP网站,请问各位DX这是什么原因?应该如何解决?…

查看全部问答>

winCE 下如何得到设备名

请问如何知道板子已有设备的设备名?比如要找LCD的设备名,我找遍了Display驱动程序也没有找到。但是相关函数比如CreateFile()要用到设备名。哪个文件记录了所有的设备的设备名呢?…

查看全部问答>

如何在WinCE上创建窗口,并在窗口上加按钮,使用VS2005下的VC++,

大家好, 小弟想在PDA中做一个WinCE应用程序,(不知道这么说是否准确?:) 要求很简单, 首先创建一个窗口, 然后,在这个窗口上创建几个按钮, 使用的是VS2005下的VC++, 希望大哥们能帮忙,多谢, …

查看全部问答>

LPC1114 diy mp3的模块电路

         前段时间在论坛申请了lpc1114想用它做个mp3,可是工作太忙,一直没有来得及在论坛发发调试经验,申请的芯片都没有时间去做板子,都对不住soso姐的热心关注了,最近画了vs10003的音频解码的模块电 ...…

查看全部问答>

怎么设计同步检测电路用multism仿真文件 ?请教。。。。

想设计一个同步检测电路 当你输入的信号有3个(3个以上)连续“1”时,输出“1”,否则输出“0”,用LED观察结果(输出“1”LED亮,输出“0”不亮)。 不懂multism 请教各位~~~~~~~~谢谢!!…

查看全部问答>

先发点TFT LCD的资料

最近用的是LM3S9B96,屏是ILI932x系列的2.8 TFT LCD,欢迎大家一起讨论!…

查看全部问答>

直接页面寄存器

请问大家什么叫直接页面寄存器?我网上没有搜到这个术语的解释…

查看全部问答>

【讨论】关于ADC相关模拟系统的校准

以下是我个人的经验,说出来与大家分享。希望大家发表意见和建议,以便共同提高。 ADC的校准,包括对ADC的特性修正和对显示值的调整。 一、没有PGA时: 没有PGA,是指在整个模拟范围内不换档。此时,对ADC及整个模拟系统的“校准”,应该包括“ ...…

查看全部问答>

Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思

在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息: Program Size: Code=6320  RO-data=4864  RW-data=44  ZI-data=1636    代表的意思: Code :是程序中代码所占字节大小 RO-data :程 ...…

查看全部问答>

64位新人 ARM自有一套

    不久前,ARM宣布了自己的第一个64位指令集处理器架构“ARMv8”。该架构基于32位的ARMv7而来,并保留了TrustZone安全执行环境、虚拟化、NEON(高级SIMD)等关键技术特性。Cortex-A9、Cortex-A15等著名核心就是由ARMv7架构衍生出来 ...…

查看全部问答>