2.5 外部接口XINTF
F28335的外部接口(XINTF)是一个外存储器和I/O设备统一编址总线扩展接口,除具备外设扩展接口所需的20位地址总线信号(AB)、32位数据总线(DB)信号和控制总线(CB)信号外,还具有寻址区域0/6/7可编程时序寄存器(XTIMINGx,x=0,6,7),包括总线时序配置信号、片选信号、DMA控制信号。可通过XTIMINGx配置等待时钟周期数,与慢速外设存取时序匹配,实现DSP与外存储器或I/O设备的无缝连接。XINTF提供两种配置等待时钟周期数的方式,一种是利用时序寄存器(XTIMINGx,x=0,6,7)可编程配置有限个等待时钟周期数,实现延时,使XINTF的存取时序不大于慢速存储器和慢速外设的存取时序;另一种是XINTF通过输入慢速外设提供的XREADY(外设数据准备好)握手信号,实现时序寄存器无法配置的更大范围的延时。XINTF是一个增强型外部接口,其结构如图2-8所示。
图2-8 外部接口(XINTF)框图
XINTF外部接口寻址区域分别是区0、区6和区7,对应3个片选信号分别为、、。这3个寻址区域分别配置3个时序寄存器,即XTIMING0、XTIMING6和XTIMING7,用于对每个寻址区域读写信号进行时序配置。寻址空间为4K。和寻址空间均为1M。XINTF外部接口相关引脚与GPIO引脚多路复用。上电复位时,XINTF引脚映射为GPIO引脚,需要扩展外存储口或I/O外设时,通过初始化GPIOMUX寄存器,将相关GPIO引脚配置为XINTF相关引脚。这样就能最大限度地提高GPIO引脚的利用率。XINTF外部接口支持DMA存取的控制信号线(输入引脚)和(输出引脚,带高阻态控制)。
说明:
(1)每个空间都可被编程为不同的等待状态,这使得许多外部存储器和外围设备可以实现无缝逻辑(glueless)连接。当执行一个特定区域的存取时,该区域的传送信号触发有效。
(2)区域1~区域5保留为今后扩展用。
(3)区域0、区域6和区域7是F28335可用的。当PCLKCR3中使能时钟XINTF时,区域0、区域6和区域7的时钟均被使能。
2.5.1 外部接口XINTF时序
XINTF的3个外部寻址区域(Zone0/6/7)直接访问外存储器和I/O外设。XINTF区域的读写访问时序可分为3个时段,即引导时段(Lead)、激活时段(Active)及保持时段(Trail)。每个区域的时序寄存器XTIMINGx(x=0,6,7)中有3个时段的位域变量,用来配置该区域读写访问时序3个时段的XTIMCLK(外部接口时钟源频率)等待周期数,以便与低速外部设备时序匹配连接。每个区域的读写访问时序的3个时段可独立配置。此外,可通过将XTIMINGx(x=0,6,7)的位域变量X2TIMING置1(上电默认为0),将XTIMINGx的引导时间、激活时间、保持时间所设置的等待周期数延长1倍。
XINTF访问不同寻址区域时,通过XBANK(外部接口阵列寄存器)设置跨区域XTIMCLK等待周期数,让XINTF扩展的慢速外设有足够时间释放总线。
XTIMCLK为XINTF的时钟源频率,由XINTF内部时钟源电路产生,其电路框图如图2-9所示。XTIMCLK可编程配置为1或1/2个SYSCLKOUT频率。CLKOUT是XINTF内部时钟电路源输出频率,可配成1或1/2个XTIMCLK频率。
图2-9 XINTF时钟源电路框图
XINTF读写访问时序第1时段,即引导时段(即lead时段),所要访问区域的片选信号被拉低,相应存储单元的地址被发送到地址总线XA上。引导时间可通过本区域时序寄存器XTIMINGx(x=0,6,7)配置为XTIMCLK等待周期数。默认情况下,读写访问都使用最大的引导时间,即6个XTIMCLK周期。
XINTF访问时序的第2时段,即激活时段(即active时段),完成外部设备的读写访问,如果是读访问,则读选通信号被拉低,数据被锁存到DSP中;如果是写访问,则写选通信号被拉低,数据被发送到数据总线XD上。若该区域使用外设XREADY(外设数据准备好)信号,则外设通过控制XREADY信号可延长激活时间,此时激活时间可超过设定值;如果未使用XREADY信号,总激活时间所包含的XTIMCLK等待周期数为相应时序寄存器XTIMINGx(x=0,6,7)中的设定值加1。默认情况下,读写访问的激活时间为14个XTIMCLK周期。
XINTF访问时序的第3时段,即保持时段(即trail时段),寻址区域的片选信号仍保持低电平,但读写选通信号重新变成高电平。保持时间通过本区域时序寄存器XTIMINGx(x=0、6、7)设定。默认情况下,读写存取都将使用最大的保持时间,即6个XTIMCLK周期。
根据系统要求,寻址区域x(x=0,6,7)的引导时段、激活时段及保持时段的等待周期数可通过时序寄存器XTIMINGx(x=0,6,7)设定,实现与XINTF所接的外设读写访问时序相匹配。因此,外部接口XINTF是一个可编程的无缝外部接口。在选择时序参数时要考虑以下4点。
(1)最小等待时间要求。
(2)XINTF的时序特点,参考外设数据手册。
(3)外部设备的时序要求。
(4)F2833x与外部设备之间的延时。
XINTF的时序、配置和控制寄存器映射地址表如表2-21所示。
表2-21 XINTF时序、配置和控制寄存器映射地址
注:(1)XTIMING1-XTIMING5为将来的扩展所保留,目前没有使用。
(2)XINTCNF1被保留,目前没有使用。
每个XINTF寻址区域x(x=0,6,7)用一个时序寄存器XTIMINGx(x=0,6,7)来设定引导、激活、保持时段的XTIMCLK等待周期数。
XINTF时序寄存器XTIMINGx(x=0,6,7)的位域变量数据格式如图2-10所示,XTIMINGx(x=0,6,7)位域变量功能描述如表2-22所示。
图2-10 XTIMINGx(x=0,6,7)位域变量数据格式
表2-22 XTIMINGx(x=0、6、7)位域变量功能描述
续表
XINTF配置寄存器为XINTCNF2,XINTCNF1保留未用。XINTCNF2位域变量数据格式如图2-11所示。XINTCNF2位域变量功能描述如表2-23所示。
图2-11 XINTCNF2位域变量数据格式
注:*输出;输入。
表2-23 XINTCNF2位域变量功能描述
续表
XBANK(XINTF阵列寄存器)用来设置CPU从XINTF一个区域(区0/区6/区7)切换到另一个区域的XTIMCLK等待周期数,以便让XINTF所接的慢速外设有足够时间释放总线。
XBANK是EALLOW写保护寄存器,位域变量数据格式如图2-12所示,位域变量功能描述如表2-24所示。
图2-12 XBANK位域变量数据格式
表2-24 XBANK寄存器位域变量功能描述
XINTF的配置代码调用流程图如图2-13所示。精确配置取决于F28335的CPU时钟、XINTF的开关特性以及外设时序要求。
图2-13 XINTF配置和控制寄存器配置代码调用流程图
XINTF配置期间,要求不能通过XINTF接口进行任何读写访问。配置XINTF和控制寄存器应注意以下4点。
(1)配置函数不能从XINTF接口执行,要从DSP内部存储器执行。
(2)XINTF写缓冲器在配置前必须为空。用XINTCNF2寄存器来配置XINTF写缓冲器的深度。
(3)C堆栈不能用外部存储器。
(4)配置函数返回前必须等待8个时钟周期。
XTIMING寄存器中配置的参数与脉冲持续时间之间的关系如表2-25所示。
表2-25 XTIMINGx(x=0,6,7)中配置的参数和脉冲持续时间之间的关系
注:(1)tc(XTIM):XTIMCLK周期时间。
(2)WS是指当使用XREADY时,由硬件插入的等待状态数。如果此区域被配置成忽略XREADY(USEREADY=0),那么WS=0。当配置每个区域的XTIMING寄存器时,必须满足最小等待状态要求。这些要求是器件数据表中指定的任一时序要求之外的要求。没有任何内部器件硬件来检测非法设置。
2.5.2 XINTF的外存储器扩展
F28335最高频率150MHz对应的最小读写存取周期为6.67ns,只要选用存取周期小于6.67ns的快速存储器芯片,就不需要设置XINTF的读写时序激活/保持时段的等待周期数,即XTIMINGx的LEAD=01,ACTIVE=000,TRAIL=00;否则,就要配置XTIMINGx的ACTIVE=非零值,TRAIL=非零值,使XINTF的读写周期大于存储器芯片的存取周期。
F28335的3个外存储器扩展寻址区域(区0、区6、区7)均可以软件独立配置成16位或32位宽的数据总线。上电复位默认状态是16位宽度的数据总线,此时F28335的16位地址总线每个地址码访问一个16位字长的存储单元。XINTF接口具有32位数据总线,故针对某一寻址区域(区0、区6、区7之一),可扩展32位数据存储器电路。此时,地址总线用一个偶地址码访问本地址对应的16位数据存储单元,并自动用高一位的奇地址码访问对应的16位存储单元,F28335的地址总线最低位XA0在16位宽度数据总线模式下表现为最低地址线XA0,在32位宽度数据总线模式下,XA0表现为高16位数据存储器的写信号,如表2-26所示。
表2-26 和功能
XINTF扩展一片1M×16位RAM芯片电路连接如图2-14所示。XINTF扩展512K×32位RAM电路(由两片512K×16位RAM芯片组成)如图2-15所示。由于F28335的一个存储器地址对应一个16位字长的存储器单元,要用32位数据总线一次存取32位数据,就等价于用两个地址相邻的16位地址访问两个16位存储器单元,可用这两个16位存储单元的低地址单元对应的地址,即用一个偶地址访问一个32位的存储单元即可。用偶地址访问32位存储单元时,这个偶地址最低地址线XA0恒为0,因此,XA0在访问32位存储单元就不起作用了,故使用XA[19..1]与两片512K RAM芯片的19根地址总线A[18..0]相连,而把XA0变换为高16位数据总线的RAM芯片的写信号。当传送低16位数据时,有效无效,而当传送高16位数据时无效,有效。
图2-14 XINTF扩展一片1M×16位RAM芯片电路连接
图2-15 XINTF扩展512K×32位RAM电路(两片512K×16位RAM芯片组成)
2.5.3 XINTF扩展I/O外设
XINTF接口不仅可扩展外存储器,还可采用统一编址方式扩展I/O外设,由于XINTF的3个片选信号线、、寻址空间都很大,若扩展的I/O外设数量较多,则就必须把XINTF的任一片选信号线通过3-8译码器细分为更小的寻址空间,产生更多的片选信号。例如,在16位宽度数据总线模式下,采用3-8译码器对细分,产生8个片选信号的扩展电路,如图2-16所示。根据3-8译码器3个地址输入,可计算出8个译码输出的寻址范围。
图2-16 XINTF片选信号用3-8译码器扩展成8路片选信号电路