TMS320C6748开发视频教程笔记 第15章 外部存储器接口A EMIFA

您所在的位置:网站首页 ad7606引脚 TMS320C6748开发视频教程笔记 第15章 外部存储器接口A EMIFA

TMS320C6748开发视频教程笔记 第15章 外部存储器接口A EMIFA

2023-09-12 08:46| 来源: 网络整理| 查看: 265

第15章 外部存储器接口A EMIFA 15-1 相关例程演示15-2 外设及驱动

15-1 相关例程演示

EMIF_AD7606 1、AD7606的8个模拟输入通道都连接到3.3V 2、量程选择:-5V~+5V 3、采集数据后,将原始数据通过串口2打印 打印出来的原始AD数据:21556/32768*5=3.29V

15-2 外设及驱动

在这里插入图片描述 在这里插入图片描述 外部存储器接口A External Memory Interface A(EMIFA)

在这一集视频中将介绍DSP C6748的外部存储器接口A,也就是EMIFA接口,这个接口在TI的DSP中是非常常见的,在TI的绝大部分DSP中都会有这个接口,包括2000系列DSP,但是在2000系列中这个接口并不叫做EMIFA接口,而是叫外部接口,也就是XINTF接口,其实这个接口和EMIF接口是一致的,用法基本上没什么差别。这个视频中结合AD7606模块来讲解EMIFA接口的使用方法。 在这里插入图片描述 下面来看一下EMIFA接口的主要特性

异步操作

支持连接SRAM、NAND Flash、NOR Flash、FPGA等最大支持16位数据总线和23位地址总线具有4个片选(EMA_CS[5:2])连接NAND Flash时,NAND Flash控制器支持1-bit和4-bit的ECC校验

同步操作

支持16-bit的SDRAM有一个单独的SDRAM片选(EMA_CS[0])

最常用的是异步操作,在异步操作模式下,EMIFA接口可以连接多种设备,这些设备在平常开发中是非常常见的,包括SRAM、NAND Flash、NOR Flash、FPGA,也包括这一集视频中要讲解的AD7606。在C6748这个平台上,EMIF接口最大支持16位的数据总线和23位的地址线,但是在TI的一些DSP中EMIFA接口可以支持32位甚至是64位的数据总线,在我们C6748这个平台上并不支持,只支持16位。EMIFA接口的另一个特性是片选,有5个片选信号,分别是EMA_CS[0]、EMA_CS[5:2],其中EMA_CS[5:2]这4个片选信号是异步操作模式下特有的,也就是说这4个片选只能用于异步操作而不能用于同步操作,同理EMA_CS[0]只能用于同步操作。当我们的EMIFA接口连接NAND FLASH的时候,NAND Flash控制器支持1-bit和4-bit的ECC校验,也就是说连接NAND FLASH的时候,ECC校验是硬件完成的,并不需要我们在软件上做任何处理,用起来更加方便。 同步操作下EMIFA接口主要是连接SDRAM,所以通常这一模式也叫做SDRAM模式。在连接SDRAM的时候,最大支持16bit的总线,在SDRAM模式下只有一个可用的片选EMA_CS[0]。

EMIFA接口的结构 在这里插入图片描述 EMIFA的三个请求信号的来源: 1、CPU 2、EDMA 3、主外设(例如uPP),我们只要将uPP的DMA窗口设置到EMIFA接口的映射内存中就可以正常访问EMIFA接口了。 当这三个请求信号给EMIFA接口发送请求之后,控制器就会启动相关的管脚,也就是右边这三组管脚,产生相应的时序,右边主要是SDRAM接口和异步接口所用到的管脚,主要分为三组,分别是SDRAM的控制信号管脚、还有异步操作模式下的控制信号管脚、共用部分主要是数据总线和地址总线之间信号。

在这里插入图片描述 EMIFA接口的时钟控制能通过锁相环配置得到,EMIFA接口内部并没有寄存器来对于这个输入的时钟进行分频,所以要改变EMIFA接口的时钟只能通过配置PLL来改变它的分频,我们EMIFA接口的时钟来源主要有两个:第一个SYSCLK3,这里一般配置SYSCLK3的分频系数是4,也就是说CPU的4分频,也就是456MHz/4=114MHz,为什么我们要配置成114MHz?从上图右边的表格可以看到,EMIFA接口在异步操作模式下最大可以支持到148MHz的时钟,如果我们将SYSCLK3故意配置成3分频的时候,也就是456MHz/3=152MHz,这个时钟刚好超过了148MHz一点,但是在我们实际测试过程中发现,我们将这个时钟配置成152MHz的时候,EMIFA接口也可以正常使用,但是这个稳定性就不能保证,毕竟这个接口TI是经过测试给出的参数最高是148MHz,所以在满足要求情况下,我们尽量把它配置成148MHz以下。而EMIFA接口的另外一个时钟来源就是DIV4P5CLK,对于我们的开发板对PLL的配置来看,DIV4P5CLK也就是CPU的4.5分频,是456MHz/4.5=101.3MHz,大概是101MHz左右,在默认情况下我们通常配置它的时钟来源是SYSCLK3,也就是114MHz。 在这里插入图片描述 前面已经说过,在跟外部异步设备连接的时候,EMIFA接口有4个可用的片选,就是EMA_CS[n],n=2,3,4,5,在跟外部异步设备连接的时候,需要特别注意一个地方就是它的地址线: 在EMIFA接口配置成8位数据总线的时候: 连接到8位的存储器是EMA_BA[1:0]作为地址线的A[1:0]; 在EMIFA接口配置成16位数据总线的时候,数据总线用了16位: 连接到16位的存储器是EMA_BA[1]作为地址线的A[0]。 EMIFA接口的控制信号引脚就要根据外设的时序要求来使用,在这一期视频中要用到的AD7606只需要用到EMIF的片选信号EMA_CS[n],而其他的控制信号都不需要,所以EMIFA接口与外部设备的连接是比较简单的。

那么我们要怎么样去控制EMIFA接口的地址信号和片选信号呢?对于EMIFA接口的片选信号跟地址信号的控制也比较简单,主要通过地址映射来完成。 下面这个表列出了各个片选的映射空间,有5个片选分别对应5个空间。 在这里插入图片描述 内存映射空间是什么意思?这个空间并不是真正意义上的内存地址,这些地址是映射到EMIFA接口上的,举个例子来说:当CPU去读取0x60000000这个地址的时候,就相当于CPU向EMIF提出了控制请求信号,这个时候EMIFA接口就会做出相应动作,因为0x60000000这个地址属于片选2(CS2)的空间,而这个地址映射到片选2的0地址,也就是说0x60000000对应的是0地址,而0x60000001这个时候对应EMIF接口的地址线就是1地址,也就是说它的地址线为1,这个时候片选2就会被拉低,也就是说当CPU直接去读0x60000000这个地址的时候,EMIFA接口的片选2就会有效,同时它的地址线不输出0,也就是说EMIFA接口的所有地址线都会被拉低,而当CPU去读0x60000001的时候,片选2也会有效,地址线就会输出1,所以对EMIFA的地址信号和片选信号的控制并不需要去配置EMIF的寄存器,我们只需要去访问它的映射内存地址就可以对它做出相应的控制,这个控制是非常方便的。

EMIFA接口的读写时序 在这里插入图片描述 异步接口的每个读写周期由三个阶段构成:建立(Setup)、触发(Strobe)和保持(Hold)。 下面根据EMIFA接口的读时序来解释一下这三个阶段的含义。这三个阶段的长度是通过寄存器来配置的,这个长度单位是时钟周期,建立阶段是2个时钟周期,触发阶段是3个时钟周期,保持阶段也是2个时钟周期。 建立(Setup):从片选信号有效到读/写信号有效这一段时间。 触发(Strobe):读/写信号从有效到无效的整个过程。 保持(Hold):读/写信号无效到片选信号无效的这一段时间。

EMIFA接口的读写时序主要有两种模式可以选择:普通模式(Normal Mode)、选择触发模式(Select Strobe Mode)。这两种模式有什么区别?Normal写和读的区别:主要是写使能信号和读使能信号的区别,写的时候写使能信号EMA_WE有效(低电平),读的时候读使能信号EMA_OE有效(低电平)。而另外一个区别就是EMIFA接口数据的方向,读的时候输入,写的时候输出。其他没有差别。 Normal和Select Strobe Mode的区别:主要的区别是片选信号EMA_CS[n],主要是有效周期不一样,Normal模式下片选信号EMA_CS[n]有效是从建立周期开始,一直到保持周期结束都是有效的,也就是说在它整个读写过程中都是有效的。Select Strobe Mode模式下,片选信号EMA_CS[n]只会在触发阶段有效,在建立和保持阶段都无效。长度和读写使能信号是一样的。 在这里插入图片描述 怎么去使用EMIFA接口呢? 只需要配置1个寄存器就可以正常使用EMIFA接口了,这个寄存器就是CEnCFG。这个n的取值是2到5,也就是说它有4个寄存器,配置不同的寄存器对应不同的片选,例如:配置片选2就选择CE2CFG这个寄存器。这个寄存器相关的域是什么?看一下表格 在这里插入图片描述 在这里插入图片描述

/****************************************************************************/ /* */ /* EMIFA 初始化 */ /* */ /****************************************************************************/ void EMIFAInit(void) { // 配置 EMIFA 相关复用引脚 AD7606PinMuxSetup(); // 配置数据总线 16bit EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_DATA_BUSWITTH_16BIT); // 选择 Normal 模式 EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_ASYNC_INTERFACE_NORMAL_MODE); // 禁止WAIT引脚 EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_EXTENDED_WAIT_DISABLE); // 配置 W_SETUP/R_SETUP W_STROBE/R_STROBE W_HOLD/R_HOLD TA 等参数 EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_ASYNC_WAITTIME_CONFIG(1, 2, 1, 1, 2, 1, 0 )); }

AD7606 在这里插入图片描述

8路同步采样输入16位采样精度双极性模拟输入范围:±10V、±5V,通过跳线帽改变范围2.5V基准电源高达200kSPS采样率输入电压最高耐受±16.5V

和开发板的连接方式 在这里插入图片描述 串行口(SPI)和并行口(EMIFA)两种,输出数据有这两种模式,输出是由硬件来配置的,AD7606相关的管脚来配置串行还是并行。蓝色的信号线是SPI使用的。 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3