Cortex-M4原理与实践:第三章 内部存储器和外部扩展接口_第1页
Cortex-M4原理与实践:第三章 内部存储器和外部扩展接口_第2页
Cortex-M4原理与实践:第三章 内部存储器和外部扩展接口_第3页
Cortex-M4原理与实践:第三章 内部存储器和外部扩展接口_第4页
Cortex-M4原理与实践:第三章 内部存储器和外部扩展接口_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年10月20日1Cortex-M4原理与实践第三章内部存储器和外部扩展接口2022年10月20日Cortex-M4原理与实践2主要内容提纲3.1片内存储器功能框图3.2片内存储器功能描述3.3寄存器映射与描述3.4外部总线扩展接口(EPI)2022年10月20日3第三章内部存储器和外部扩展接口3.1片内存储器功能框图片内存储器功能框图TM4C1294处理器拥有丰富的片内存储,256KB位带SRAM,内部ROM,1024KB的Flash以及6KB的EEPROM。

其中Flash存储器被配置为4个双向交错式的16K×128bit区(一共4×256KB)。TM4C1294微处理器采用了两套预取指缓冲器,来提高性能并更加省电。每个预取指缓冲器为2×256位,并且能合并成一个4×256位的预取指缓冲器。EEPROM提供了一个明确的寄存器接口,支持对EEPROM随机存取形式的读和写以及滚动或顺序访问模式。2022年10月20日Cortex-M4原理与实践4片内存储器功能框图2022年10月20日Cortex-M4原理与实践52022年10月20日6第三章内部存储器和外部扩展接口3.2片内存储器功能描述3.2.1SRAMTiva™C系列器件的内部SRAM开始于器件内存地址0x2000.0000处。为减少消耗时间的读-修改-写(RMW)操作次数,ARM在处理器中提供了位带技术(bit-banding)。位带区映射在位带别名区中的每个字到位带区中的单个位。

位带区占用SRAM和外设内存区中的最少1MB空间。对32MB的SRAM别名区的访问映射到SRAM中1MB的位带区;访问32MB的外设别名区映射到1MB外设位带区。2022年10月20日Cortex-M4原理与实践7SRAM内存位带区地址范围存储器区域指令和数据访问开始结束0x2000.00000x2006.FFFFSRAM位带区对这个存储器范围的直接访问行为如同对外设存储器的访问。但是该区域也可以通过位带别名进行位寻址。0x2200.00000x2234.FFFFSRAM位带别名区对这个区域的数据访问被重新映射到位带区。一个写操作被执行为读-修改-写。指令访问没有重新定义。2022年10月20日Cortex-M4原理与实践8外设内存位带区地址范围存储器区域指令和数据访问开始结束0x4000.00000x400F.FFFF外设位带区对这个存储器范围的直接访问行为如同对外设存储器的访问。但是该区域也可以通过位带别名进行位寻址。0x4200.00000x43FF.FFFF外设位带别名区对这个区域的数据访问被重新映射到位带区。一个写操作被执行为读-修改-写。指令访问没有重新定义。2022年10月20日Cortex-M4原理与实践9位带技术(bit-banding)

对在SRAM或外设别名区中的一个字的访问映射到SRAM或外设位带区中的一个位。使用位带操作可以把代码缩小,速度更快,效率更高,更安全。一般操作要6条指令,而用位带别名区只要4条指令。一般操作是读-修改-写的方式,而位带别名区是写操作。防止中断对读-修改-写方式的影响。在支持位带操作的处理器中,内存映射的某一区域(SRAM以及外设空间)能使用地址别名以单个原子操作来访问各个位。bit-band的基地址位于0x2200.0000处。别名计算公式如下所示:bit-band别名=bit-band基地址+(字节偏移量×32)+(位编号×4)2022年10月20日Cortex-M4原理与实践10

当向位带地址别名区的某个字的最低位写入‘0’或‘1’时,将使位带区对应的位置为‘0’或‘1’;当读取位带bit-bandalias区的某个字时,读取结果的最低位将代表位带区对应位的值。2022年10月20日Cortex-M4原理与实践11位带别名区中的一个字映射为位带区中的一个位3.2.2ROMTiva™C系列器件的内部ROM开始于器件内存地址0x0100.0000处。包含以下几部分:TivaWare™BootLoader以及向量表;为特定产品的外设和接口而发行的外设驱动库(DriverLib);高级加密标准(AES)的密码表;循环冗余校验(CRC)检错功能。2022年10月20日Cortex-M4原理与实践12启动配置

在上电复位和初始化后,硬件根据应用程序在Flash中的位置和BOOTCFG寄存器中EN位的状态从Flash或ROM中加载堆栈指针。若Flash地址0x0000.0004中内容为0xFFFF.FFFF或BOOTCFG寄存器中的EN位为0,堆栈指针复位向量指针分别从ROM中的0x0100.0000和0x0100.0004中加载。若Flash地址0x0000.0004中的数据为一个有效复位向量值,并BOOTCFG寄存器中的EN位置位,堆栈指针和复位向量将从Flash起始处获取。2022年10月20日Cortex-M4原理与实践13TivaWare外设驱动库TivaWare外设驱动库包含一个叫做driverlib/rom.h的文件,它帮助调用ROM中的外设驱动库函数。

调用ROM中的驱动函数的使用方法与Tiva驱动库的函数基本一样,区别仅在多了前缀“ROM_”。

请看例3.12022年10月20日Cortex-M4原理与实践14voidmain(){//带有ROM_前缀的函数会直接从ROM中调用//本函数配置时钟选用外部25M晶振,从480M的PLL//频到50MHz//返回参数g_ui32SysClock为配置好的时钟频率50MH。

g_ui32SysClock=ROM_SysCtlClockFreqSet((

SYSCTL_XTAL_25MHZ|SYSCTL_OSC_MAIN| SYSCTL_USE_PLL|SYSCTL_CFG_VCO_480), 50000000);}高级加密标准(AES)密码表

AES是一种强大的加密方法,拥有不错的性能和大小。AES在硬件和软件方面都很快。AES可理想的用于预先排列好密钥的应用。ROM提供4个XySSLAES使用的数据表:正向的S-box代换表;反向的S-box代换表;正向的多项式表;反向的多项式表。2022年10月20日Cortex-M4原理与实践15循环冗余检验(CRC)错误检测CRC更容易捕捉到变化,优于简单校验和(例如异或所有位)。当设备初始化程序从ROM开始执行,CRC-32用于校验传送到寄存器和内存中的数据。CRC用途如下:用来确认信息的正确接收(在传送中没有丢失或改变);用来确认解压后的数据;用来证实Flash存储器的内容没有更改;其它数据需要被确认的情况。2022年10月20日Cortex-M4原理与实践163.2.3FlashMemoryFlash存储被配置为4个双向交叉存取的16K×128位的区(总共4×256KB)。

由于存储器是双向交叉存取的,而且每一块都是独立的8KB扇区,当用户使用Flash存储器控制寄存器(FMC)中的ERASE位擦除一个扇区的时候,实际上擦除了16KB。对一块储存区的擦除,将导致整块区域的内容都被擦除。2022年10月20日Cortex-M4原理与实践17Flash配置

根据CPU频率,应用程序需要配置用于系统Flash和EEPROM的时钟参数寄存器(MEMTIM0)中的Flash时钟高电平时间(FBCHT),Flash块时钟沿(FBCE)以及Flash等待周期(FWS)。注意:在MEMTIM0寄存器中,Flash和EEPROM中相关联的区域需要设置为相同的值。例如,FWS位段需要和EWS位段保持一致。2022年10月20日Cortex-M4原理与实践18CPUFrequencyrange(f)inMHzTimePeriodRange(t)

innsFlashBankClockHighTime(FBCHT)FlashBankClockEdge(FBCE)FlashWaitStates(FWS)1662.50x010x016<f≤4062.5>t≥250x200x140<f≤6025>t≥16.670x300x260<f≤8016.67>t≥12.50x400x380<f≤10012.5>t≥100x500x4100<f≤12010>t≥8.330x600x5预取指缓冲器

预取指缓冲器可以单独作为一个2×256位的缓冲器也能联合为4×256位的缓冲器,取决于偏移地址为0xFC8的Flash配置寄存器(FLASHCONF)中的SPFE位。

2-预取指缓冲器仅在代码执行的时钟周期是严格确定的情况下。利用4-预取指缓冲器是最佳的配置方法。2022年10月20日Cortex-M4原理与实践19PrefetchBuffer0TAGWORD7WORD6WORD5WORD4WORD3WORD2WORD1WORD0PrefetchBuffer1TAGWORD7WORD6WORD5WORD4WORD3WORD2WORD1WORD0PrefetchBuffer2TAGWORD7WORD6WORD5WORD4WORD3WORD2WORD1WORD0PrefetchBuffer3TAGWORD7WORD6WORD5WORD4WORD3WORD2WORD1WORD04-256位预取指缓冲器组Flash存储器保护

用户可以使用32位宽寄存器对Flash提供保护。FMPPEn和FMPREn寄存器的各个位控制各种保护形式的策略(每个块控制一种策略)。Flash存储器保护编程启用(FMPPEn)Flash存储器保护读取启用(FMPREn)2022年10月20日Cortex-M4原理与实践20只执行与只读保护只执行保护可防止对受保护的Flash存储器块进行读写操作。只读保护可防止Flash块中的内容被重新设置,但允许通过处理器或调试接口进行访问。2022年10月20日Cortex-M4原理与实践21Flash存储器编程Tiva™C系列设备为Flash存储器编程提供了一个友好的用户接口。所有的擦除/编程操作都通过3个寄存器来处理:Flash存储器地址(FMA);Flash存储器数据(FMD);和Flash存储器控制(FMC)。

Flash存储器操作(写、页擦除或整体擦除)过程中禁止访问。如果在Flash存储器操作过程中需要执行指令,那么代码必须放置在SRAM上并在SRAM上执行。2022年10月20日Cortex-M4原理与实践2232字Flash存储器写缓冲器

通过32字写入缓冲器可以对两个32位字同时编程,加快Flash存储器的写入访问速度,从而可以使用上述方法在处理16字的同时对32字进行编程。用一次单独被缓冲Flash存储器写操作来编程32个字:将源数据写入FWBn寄存器;将目标地址写入FMA寄存器。该地址必须是一个32字对齐的地址(即FMA的[6:0]必须全是0);将Flash写入密钥和WRBUF位写入FMC2寄存器;查询FMC2寄存器,直到WRBUF位被清零,或者等待PMIS中断信号发出。2022年10月20日Cortex-M4原理与实践23非易失性寄存器编程如何更新Flash存储器自身中的寄存器?这些寄存器驻留在与主Flash存储器阵列分离的空间,并且不受擦除或整体擦除的影响。通过Flash控制寄存器(FMC)中的COMT位提交寄存器值,寄存器的内容就变成非易失的,今后掉电也能保存原数据。

重要:所有Flash存储自身寄存器只能由用户编程从1改为0。FMPREn、FMPPEn和BOOTCFG寄存器能提交多次,但USER_REGn寄存器只能提交一次。2022年10月20日Cortex-M4原理与实践243.2.4EEPROMTM4C1294微控制器有1个EEPROM单元,特性如下:可用6K字节的存储器,即1536个32位字;96个块区,每区16字;内置换位写入技术;每个模块的访问保护;整个外设的锁定保护选项和每个块的锁定保护一样,都使用32位到96位的解锁代码;支持写完成中断,避免轮询;每个2页面块可进行500K次写操作到15M次操作。2022年10月20日Cortex-M4原理与实践25功能说明

EEPROM模块提供了一个定义明确的寄存器接口,既可以用随机读取和写入模式访问EEPROM,也可以用滚动或者顺序访问模式。保护机制可以对EEPROM进行锁定,在很多情况下能够阻止不必要的写入或者读取操作。密码模型允许应用程序锁定一个或者更多的EEPROM模块,来控制16-字边界的访问。2022年10月20日Cortex-M4原理与实践26模块EEPROM中有96个大小为16字的块。可以读取字节和半字,而且访问不必发生在字边界。要写入字节,需要读取字值,修改相应的字节,并重新写回字。

当前块由当前块(EEBLOCK)寄存器选择。当前地址偏移量由当前偏移量(EEOFFSET)寄存器选择并验证有效性。应用程序可以随时对EEOFFSET寄存器写入,而且当EEPROM读写加1(EERDWRINC)寄存器被访问时,它还会自动递增。读取应用程序无权访问的块会返回0xFFFF.FFFF。对应用程序无权访问的块进行写入操作会导致EEDONE寄存器出错。2022年10月20日Cortex-M4原理与实践27锁定和密码EEPROM可以在模块级和块级被锁定。锁定功能由存储在EEPROM密码(EEPASSn)寄存器中的密码控制,该密码可以是任何32位到96位之间的值,但不能全是1。如果块0具有密码,那么在复位时整个模块都会被锁定。因此,EEBLOCK寄存器不能从0开始改变,除非块0被解除锁定。复位时所有密码保护的块都会被锁定。要解锁块,必须将正确的密码写入EEPROM解锁(EEUNLOCK)寄存器。0xFFFF.FFFF不是有效密码,写入EEUNLOCK寄存器可以重新锁定块或模块。2022年10月20日Cortex-M4原理与实践28工作原理EEPROM采用EEPROM类型单元的传统Flash存储块模型操作,但是使用扇区擦除。另外,当需要时,页中复制的字允许多于50万个擦除周期,这意味着每个字都有一个最新版本。当页中存储最新字的空间不够时,会启用一个复制缓冲区。复制缓冲区可复制每个块中最新的字,原来的页将被擦除。最后,复制缓冲区的内容被复制回页中。这种机制确保掉电的时候数据不会丢失,即使是在操作期间。EEPROM机制跟踪所有状态信息,提供全面的安全性和保护。2022年10月20日Cortex-M4原理与实践29EEPROM初始化及配置

在写入任何EEPROM寄存器之前,必须通过EEPROM运行时钟门控寄存器(RCGCEEPROM)启用EEPROM模块的时钟。并执行以下初始化步骤:延时6个时钟脉冲;巡检EEPROM完成状态寄存器(EEDONE)直到WORKING位清零,表明EEPROM完成上电初始化;读EEPROM支持控制盒状态寄存器(EESUPP)中的PRETRY和ERETRY位,若其中一位置位,返回错误,否则继续;用EEPROM软件复位寄存器(SREEPROM)复位EEPROM;重复1-3步,

若PRETRY和ERETRY都为0,可正常使用。2022年10月20日Cortex-M4原理与实践302022年10月20日31第三章内部存储器和外部扩展接口3.4外部总线扩展接口(EPI)3.4.1功能与特点

片外设备接口(ExternalPeripheralInterface,EPI)是一种用于连接片外设备或存储器的高速并行总线接口。片外设备接口有多种工作方式,能够实现与各种片外设备的无缝连接。EPI模块具有以下特性:8位/16位/32位专用并行总线,用于连接片外设备或存储器;阻塞式/非阻塞式读操作;内置写FIFO,因而处理器无需关注时序细节;结合微型直接存储器访问(μDMA)控制器使用,可实现高效的数据传输。2022年10月20日Cortex-M4原理与实践32EPI工作模式EPI模块有3种主要的工作模式:同步动态随机访问存储器(SDRAM)模式;主机总线(HB)模式;通用模式。此外,EPI模块也可以将其管脚用作自定义的GPIO,但其用法有别于标准GPIO,而是像通信外设的机制一样需经过FIFO访问端口数据,并且I/O速度由时钟信号决定。2022年10月20日Cortex-M4原理与实践333.4.2内部结构2022年10月20日Cortex-M4原理与实践34BaudRateControl(Clock)AHBBusInterfaceWithDMAWideParallelInterfaceHostBusSDRAMGeneralParallelGPIOAHBEPI31:0NBRFIFO8x32bitsWFIFO4x32bits3.4.3功能描述

EPI控制器为常见的片外设备(例如SDRAM、8位/16位主机总线器件、RAM、NORFlash存储器、CPLD、FPGA等)提供了可编程的无缝接口。EPI可对0x6000.0000到0xDFFF.FFFF之间的某一段或某几段地址空间执行读写操作。当对某个映射地址进行读操作时,读操作的偏移量和长度将决定片外实际操作的地址和长度。2022年10月20日Cortex-M4原理与实践35非阻塞式读操作EPI控制器支持非阻塞式读操作,也常被称为投递式读操作或无监管读操作。常规的读操作在数据返回之前都会暂时挂起CPU或μDMA,而非阻塞式读操作完全是在后台进行的。EPI控制器为非阻塞式读操作提供了两组寄存器,当一组执行完毕后自动切换到另一组,可以很方便地实现连续地乒乓式工作。

要中止非阻塞读操作,只需清除EPIRPSTDn寄存器。但是必须注意到,如果寄存器组正在从NBRFIFO中取数据,应确保取数据的过程能够正常结束。2022年10月20日Cortex-M4原理与实践36DMA操作EPI模块可将μDMA结合NBRFIFO及WFIFO使用,获取最高的数据传输率。对于非阻塞式读操作必须将读操作起始地址、读操作宽度以及读操作元素数目写入μDMA控制器中。对于阻塞式读操作,可运用μDMA软件通道(或其它未使用的DMA通道)以存储器-存储器的方式(如果是其它外设,也可能是存储器-外设的方式)实现直接搬运过程。2022年10月20日Cortex-M4原理与实践37初始化与配置使能并初始化EPI步骤如下:通过RCGCEPI寄存器使能EPI模块;通过RCGCGPIO寄存器使能相应的GPIO模块的时钟;将相关管脚的AFSEL位置位;配置用于指定模式的GPIO的电流级别,转换速率;通过GPIOPCTL寄存器的PMCn位域将EPI信号赋给指定的管脚;2022年10月20日Cortex-M4原理与实践38初始化与配置通过EPI配置寄存器(EPICFG)的MODE位域选择工作模式(SDRAM/HB8/HB16/通用模式);通过EPI地址映射寄存器(EPIADDRMAP)设置地址映射关系。其中起始地址和地址范围都取决于实际连接的片外设备的类型及其最大地址空间;当需要直接读写片外设备时,直接写相应的映射地址(由EPIADDRMAP配置)即可,而且一般连续写4、5个字是不会发生阻塞的。与此相反,读操作在数据返回之前将始终阻塞。2022年10月20日Cortex-M4原理与实践39初始化与配置多种存储器和外设能和EPI模块连接。2022年10月20日Cortex-M4原理与实践40MaximumFrequencyInterface60MHzSingle

SDRAM60MHzSingle

SRAM55MHzSingle

PSRAM

without

iRDY

signal

use52MHzSingle

PSRAM

with

iRDY

signal

use60MHzFPGAs,CPLDs,etc

using

General

Purpose

Mode40MHzMemory

configurations

with

2

chip

selects20MHzMemory

configurations

with

4

chip

selectsSDRAM模式当激活为SDRAM模式时,须注意以下几点:间隔100μs后再进行读写操作。使能SDRAM模式之前务必确保GPIO的相关配置正确无误;通过读取EPI状态寄存器(EPISTAT)的INITSEQ标志位获知初始化序列是否完;及时配置工作频率范围或刷新参数;通过EPISDRAMCFG寄存器的SLEEP位将SDRAM置为低功耗的自刷新态;EPISDRAMCFG寄存器的SIZE位域应按SDRAM芯片的实际容量进行配置。FREQ位域应按实际的工作频率选取对应的编码值。2022年10月20日Cortex-M4原理与实践41SDRAM模式下表定义了EPI模块信号与SDRAM芯片的连接方法。按照该表可连接16位宽、最大512Mb的SDRAM。请注意,连接SDRAM时,EPI信号必须全部采用8mA驱动。2022年10月20日Cortex-M4原理与实践42SDRAM模式RFSH位域代表刷新次数,即每次AUTO-REFRESH之前需要保持多少个外部时钟周期,其取值取决于外部时钟频率、每bank的行数目以及刷新周期。刷新次数的计算公式如下:RFSH=(tRefresh_us/number_rows)/ext_clock_period2022年10月20日Cortex-M4原理与实践43SDRAM模式

下图描绘出非阻塞式读n个半字(n是正整数)的信号时序:2022年10月20日Cortex-M4原理与实践44SDRAM模式下图描绘出写n个半字(n是正整数)的信号时序。2022年10月20日Cortex-M4原理与实践45主机总线模式

主机总线模式支持传统8位/16位并行接口(常见于8051单片机,SRAM,PSRAM,NORFlash等等)。这种类型的总线是异步总线,通常以选通信号控制总线行为。执行半字访问的可寻址存储器采用16位总线主机模式可以翻倍。EPI0S0为地址的最低位,等同于Cortex-M4内部的A1地址。EPI0S0应该和16位存储器的A0相连。2022年10月20日Cortex-M4原理与实践46主机总线模式

信号配置取决于地址/数据模式(由EPIHB16CFGn寄存器的MODE位域设置)、片选配置(由EPIHB16CFGn寄存器的CSCFG以及CSCFGEXT位域设置),有无字节选择信号(由EPIHB16CFG寄存器的BSEL位设置)。尽管在主机总线模式下,EPI0S31信号能作为EPI时钟信号,但在主机总线模式下,我们并不需要该信号,应当配置为GPIO以减少系统EMI。2022年10月20日Cortex-M4原理与实践47通用模式

此模式下可通过通用模式配置寄存器(EPIGPCFG)配置所有用到的控制管脚、数据管脚、地址管脚。通用模式适用于连接自定义的接口,例如FPGA、CPLD、数字化数据采集装置以及执行机构控制等等。

通用模式主要针对以下三种应用场合:实现与FPGA或CPLD的超高速数据接口;实现通用并行GPIO;速度可任意调节的用户自定义接口。2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论