资源描述
一、课题研究的目的和意义:
在信号与信息解决中,提取有用信息需要对信号进行滤波。借助DSP数字信号解决器的高速运算能力,可以实时地对信号进行数字滤波。本设计规定运用DSP的DMA方式进行信号采集和信号输出,同时对外部输入的信号进行数字滤波。
掌握运用DSP 实现信号实时FIR 滤波设计可使学生更加透彻的理解信号的采集方法和滤波方法。学会运用Matlab 对信号进行FIR 滤波,掌握Matlab 的信号仿真。同时通过对DSP 信号解决器及A/D、D/A 转换器以及DMA 的编程,可以培养学生C 语言编程能力以及使用DSP 硬件平台实现数字信号解决算法的能力。
二、课题研究重要内容:
1.基本部分:
(1) 掌握运用滤波器设计FIR滤波器的方法,并提取滤波器参数。
(2) 掌握运用Matlab的信号解决工具箱的使用,以及运用Matlab对信号进行滤波。
(3) 设计数字滤波算法,或调用DSPLIB中的滤波函数,实现对信号的滤波。
(4) 运用C语言对A/D、D/A进行初始化。
(5) 运用C语言对DMA进行初始化。
(6) 编写DMA中断服务程序,实现信号的实时滤波。
(7) 运用CCS信号分析工具分析信号的频谱成分,拟定滤波器的参数
2.发挥部分:
(1)比较加不同窗和阶数时滤波器的滤波效果。
(2)测试所设计滤波器的幅频特性和相频特性,并与MATLIB下的设计结果进行比较。
(3)在实验板的Line in输入端接入正弦信号,分左右声道分别采集,并分别滤波。
三、规定完毕的任务:
(1)运用Matlab设计FIR滤波器,并对信号进行滤波。
(2)掌握CCS的安装、设立,工程的建立、工程设立、编译运营和调试方法。
(3)编写C语言程序实现设计规定,并在CCS集成开发环境下调试通过,实现设计所规定。
的各项功能。
(4)运用信号发生器产生输入信号,经DSP运算后对的地在示波器上显示。
(5)按规定撰写课程设计报告。
四、研究方法及技术途径:
运用DSP实现对模拟信号滤波的框图
外部模拟信号先进行A/D转换,运用MCBSP的接受寄存器接受数据。运用CCS的频谱分析工具对输入信号进行频谱分析;根据频谱成分拟定滤波器参数,然后运用Matlab设计FIR滤波器,将参数提取出来,存放到DSP存储区中。调用DSPLIB中的FIR滤波函数,对信号进行滤波。滤波后的数据运用DMA方式送到D/A转换器转换为模拟信号。
本设计可以分为两部分:
(1) 信号仿真
(a)一方面运用Matlab的fdatool工具箱设计滤波器,在sptool工具箱进行信号分析与滤波。
(b)运用CCS进行信号滤波算法的仿真,即运用simulator进行仿真。调用DSPLIB库中的fir()滤波函数实现信号FIR滤波,或自行编写FIR滤波程序实现信号FIR滤波。
(2) 运用Emulator,即DSP硬件板、采用DMA方式实现信号采集与传输,结合FIR滤波算法,实现实时FIR滤波。
五、实验背景:
1.课题研究的现状:
凡是有能力进行信号解决的装置都可以称为滤波器。在近代电信设备和各类控制系统中,滤波器应用极为广泛;在所有的电子部件中,使用最多,技术最为复杂的要算滤波器了。滤波器的优劣直接决定产品的优劣,器的研究和生产历来为各国所重视。
192023美国和德国科学家分别发明了LC滤波器,次年导致了美国第一个多路复用系统的出现。20世纪50年代无源滤波器日趋成熟。自60年代起由于计算机技术、集成工艺和材料工业的发展,滤波器发展上了一个新台阶,并且朝着低功耗、高精度、小体积、多功能、稳定可靠和价廉方向努力,其中小体积、多功能、高精度、稳定可靠成为70年代以后的主攻方向。导致RC有源滤波器、数字滤波器、开关电容滤波器和电荷转移器等各种滤波器的飞速发展,到70年代后期,上述几种滤波器的单片集成已被研制出来并得到应用。80年代,致力于各类新型滤波器的研究,努力提高性能并逐渐扩大应用范围。90年代至现在重要致力于把各类滤波器应用于各类产品的开发和研制。当然,对滤波器自身的研究仍在不断进行。
我国广泛使用滤波器是50年代后期的事,当时重要用于话路滤波和报路滤波。通过半个世纪的发展,我国滤波器在研制、生产和应用等方面已纳入国际发展步伐,但由于缺少专门研制机构,集成工艺和材料工业跟不上来,使得我国许多新型滤波器的研制应用与国际发展有一段距离。我国现有滤波器的种类和所覆盖的频率己基本上满足现有各种电信设备。从整体而言,我国有源滤波器发展比无源滤波器缓慢,尚未大量生产和应用。从下面的生产应用比例可以看出我国各类滤波器的应用情况:LC滤波器占50%;晶体滤波器占20%:机械滤波器占15%;陶瓷和声表面滤波器各占1%;其余各类滤波器共占13%。从这些应用比例来看,我国电子产品要想实现大规模集成,滤波器集成化仍然是个重要课题。
在上一个世纪中,电滤波器的发展经历了从无源到有源和从模拟到数字两个过程。高精度无源滤波器从设计到制造都是难度非常高的技术。有源滤波器虽然很大地改善了滤波器的性能,也减少了一些制造工艺的难度,但从其性能的大幅度改善,与其它信号解决技术的结合,实现的手段之便捷,还是要数数字滤波器后来居上。随着电子工业的发展,对滤波器的性能规定越来越高,功能也越来越多,并且规定它们向集成方向发展。我国滤波器研制和生产与上述规定相差甚远,为缩短这个差距,电子工程和科技人员负有重大的历史责任阴。所以,对滤波器的研究和生产历来为各国所重视。
2.国内外相关领域的研究:
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号解决技术应运而生,并得到了迅猛的发展。当时还没有DSP,数字信号解决只能依靠MPU来完毕。但MPU(微解决器)的速度无法满足高速实时的规定。因此数字信号解决技术多是停留在理论上,得不到广泛的应用,但这为DSP的诞生打下了基础。
70年代至80年代初是DSP发展的第二阶段。70年代初,有人提出了DSP的理论和算法基础。但是直到1978,世界上第一个世界上第一枚DSP才诞生,它是由1978AMI公司发布的S2811。1979年美国Intel公司发布的商用可编程器件2920是DSP芯片的一个重要里程碑;1980年NEC公司推出的PD7720是第一个具有乘法器的商用DSP芯片。美国德州仪器公司Texas Instruments也于1982年推出了其第一代DSP芯片TMS32023及其系列产品,它们都是基于NMOS工艺。此时的DSP运营速度较以前的MPU有了较大的提高,但由于制造工艺所限,体积和功耗都比较大,内部资源较少,且价格昂贵。
80年代中期直到现在是DSP得到了蓬勃发展并广泛应用的时期。80年代中期,随着大规模集成电路技术特别是CMOS技术的发展,基于CMOS工艺的DSP应运而生,体积功耗都大大减少,而存储容量和运算速度都得到成倍提高,成为语音解决、图像硬件解决技术的基础;80年代后期,DSP运算速度进一步提高,应用范围逐步扩大到通信、计算机领域。90年代直到现在,DSP发展最快,此时的DSP集成度极高,体积、功耗进一步减少,内部资源更是成倍增长,而价格却进一步下降。此时,DSP芯片不仅在通信、计算机领域大显身手,并且已扩大到人们的学习、工作和生活的各个方面。生产DSP 器件的公司也不断壮大,目前,市场占有率前四名依次为:Texas Instruments、 Lucent 、Analog Device、Motorola。在所有生产DSP的公司中,TI可谓一枝独秀,它是世界上最大的DSP供应商,TI系列的DSP也是公认的最成功的DSP。其DSP市场份额占全世界份额近50%。其产品覆盖了高、中、低端几乎所以市场,广泛应用于各种领域。自从在1982年成功推出了其第一代DSP TMS32023及其系列产品TMS32023、TMS320C10/C14/C15等,TI相继推出了第二代DSP TMS32023、TMS320C25/C26/C28,第三代DSP TMS320C30/C31/C32,第四代DSP TMS320C40/C44,第五代DSP TMS3205X/C54X/C55X及目前速度最快的第六代DSP TMS320C62X/C67X等等。
DSP器件应用面从起初的局限于军工,航空航天等军事领域,扩展到今天的诸多电子行业及消费类电子产品中。在TI公司的 DSP 产品中C1X、C2X、C2XX、C5XX、C54X、C62X等系列是定点运算指令系统的DSP;C3X、C4X、C67X等系列是浮点运算指令系统的DSP;AV7100、AV7110等系列是用于视频、音频领域的专用数字压缩产品。
六、实验原理:
1.DSP:
一个典型的 DSP 系统如下图所示:
该图是一个用DSP做信号解决的典型框图。由于DSP是用来对数字信号进行解决的,所以一方面必须将输入的模拟信号变换为数字信号。于是先对输入模拟信号进行调整,输出的模拟信号通过A/D变换后变成DSP可以解决的数字信号,DSP根据实际需要对其进行相应的解决,如FFT、卷积等;解决得到的结果仍然是数字信号,可以直接通过相应通信接口将它传输出去,或者对它进行D/A变换将其转换为模拟采样值,最后再通过内插和平滑滤波就得到了连续的模拟波形模拟信号。当然,图中的有些环节并不是必需的。如A/D转换,假如输入的是数字信号,就可以直接交给DSP进行运算。
由于数字信号解决系统是以数字信号解决理论为基础,所以具有数字信号解决的所有优点:
(1)接口方便
DSP 系统与其它以数字技术为基础的系统或设备都是互相兼容的,比模拟系统与这些系统接口要容易的多。
(2)编程方便
DSP 系统中的可编程DSP芯片可以使设计人员在开发过程中灵活方便的进行修改和升级,可以将C语言与汇编语言结合使用。
(3)具有高速性
DSP系统的运营较高,最新的DSP芯片运营速度高达10GMIPS以上。
(4)稳定性好
DSP 系统以数字解决为基础, 受周边环境,如噪声、温度等的影响小、可靠性高;
(5)精度高
例如16位数字系统可以达成10-5的精度;
(6)可反复性好
模拟系统的性能受元件参数性能变化影响大,而数字系统基本不受影响,更便于测试、调试和大规模生产。
(7)集成方便
DSP系统中的数字部件有高度的规范性,便于大规模生产。
当然DSP也存在一定的缺陷。例如,对于一些简朴的信号解决任务,如与模拟互换线的电话接口,若采用DSP则使成本增长。此外,DSP 系统中的高速时钟通常在几十兆赫,也许带来高频干扰和电磁泄漏等问题, 并且DSP 的功率消耗在系统中也是较大的。此外,DSP技术发展得不久,数学知识规定多,开发和调试工具还很不完善。虽然DSP系统还存在一些缺陷,但是随着近两年来 DSP 技术突飞猛进的发展,成本的下降,很多问题都得到了缓解。其突出的优点已经使其在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许多领域得到越来越广泛的应用。
2.DMA技术:
直接存储器访问(Direct Memory Access,简称DMA)是C55x DSP非常重要的片上外设,DMA控制器可以在不影响CPU的情况下完毕数据的传输,因此数据传输速度快,在规定信号实时采集和解决的系统中常采用DMA方式进行信号采集与传输。TMS320C5502有6个可独立编程的DMA通道,每个DMA通道受各自的5个16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、单元计数寄存器DMCTR、同步事件和帧计数寄存器DMSFC、发送模式控制寄存器DMMCR。此外,DMA的6个通道还受通道优先级和使能控制寄存器DMPREC控制。
DMA是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行。CPU除了在数据传输开始和结束时做一点解决外,在传输过程中还可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处在并行操作,因此使整个计算机系统的效率大大提高。DMA是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载,否则,CPU 需要历来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方,在这个时间中,CPU对于其他的工作来说就无法使用。DMA传输将数据从一个地址空间复制到此外一个地址空间,当CPU初始化这个传输动作,传输动作自身是由DMA控制器来实行和完毕。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让解决器工作迟延,反而可以被重新排程去解决其他的工作。DMA 传输对于高效能嵌入式系统算法和网络是很重要的。
一个设备接口试图通过总线直接向另一个设备发送数据(一般是大批量的数据), 它会先向CPU发送DMA请求信号。外设通过DMA的一种专门接口电路――DMA控制器(DMAC),向CPU提出接管总线控制权的总线请求,CPU收到该信号后,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应DMA信号。CPU对某个设备接口响应DMA请求时,会让出总线控制权。于是在DMA控制器的管理下,外设和存储器直接进行数据互换,而不需CPU干预。数据传送完毕后,设备接口会向CPU发送DMA结束信号,交还总线控制权。
实现DMA传送的基本操作如下:
1、外设可通过DMA控制器向CPU发出DMA请求;
2、CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器;
3、由DMA控制器发送存储器地址,并决定传送数据块的长度;
4、执行DMA传送;
5、DMA操作结束,并把总线控制权交还CPU。
DMA方式重要合用于一些高速的I/O设备。这些设备传输字节或字的速度非常快。对于这类高速I/O设备,假如用输入输出指令或采用中断的方法来传输字节信息,会大量占用CPU的时间,同时也容易导致数据的丢失。而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。
3.FIR低通滤波器:
假设数字滤波器的频率响应函数H用下式表达:
幅频特性表达信号通过该滤波器后各频率成分振幅衰减情况,而相频特性反映各频率成分通过滤波器后在时间上的延时情况。一般选频滤波器的技术规定由幅频特性给出,其相频特性是拟定的,所以在设计过程中,对相频特性一般不作规定。在低通滤波器的幅频特性中,Wp和Ws分别称为通带边界频率和阻带截止频率。从Wp到Ws称为过渡带,过渡带上的频响一半是单调下降的。
当冲击响应满足下列条件时,FIR滤波器具有对称结构,为线性相位滤波器:
这种对称性,可使得乘法器数量减半:对n价滤波器,当n为偶数时,乘法器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。在电路实现中,乘法器占用的逻辑单元数较多。乘法器的增长,意味着电路成本增长,此外对电路的工作速度也有影响。
在DSP的应用中,可以应用Matlab的滤波器设计工具箱fdatool工具箱生成需要的FIR滤波器,在生成C文献,提取出相应的滤波数据,应用CCS来调用这些数据,从而应用DSP产生信号的滤波效果,这样就实现了FIR的低通滤波效果。
在信号解决中,滤波占有十分重要的地位。数字滤波是数字信号解决的基本方法。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格规定。低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,由于FIR系统只有零点,因此,系统总是稳定的,并且容易实现线性相位和允许实现多通道滤波器。
DSP(数字信号解决器)与一般的微解决器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号解决问题提供了便利,本文选用TMS320C54X作为DSP解决芯片,通过对其编程来实现FIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。但是FIR系统有自己突出的优点:①系统总是稳定的;②易实现线性相位;③允许设计多通带(阻带)滤波器。其中后两项是IIR系统不易实现的。
设a i(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器的输入输出关系为:
FIR滤波器的结构如下图所示:
4. 乒乓操作:
输入数据流通过“输入数据选择单元”将数据流等时分派到两个数据缓冲区,数据缓冲模块可认为任何存储模块,比较常用的存储单元为双口 RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第1个周期数据通过“输出数据选择单元”的选择,送到 “数据流运算解决模块”进行运算解决;在第3个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据选择单元”切换,送到“数据流运算解决模块”进行运算解决。如此循环。
通过“输入数据选择单元”和“输出数据选择单元”按节拍、互相配合的切换,将通过缓冲的数据流没有停顿地送到“数据流运算解决模块”进行运算与解决。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处 理。所以乒乓操作经常应用于流水线式算法,完毕数据的无缝缓冲与解决。
通过乒乓操作实现低速模块解决高速数据的实质是:通过DPRAM这种缓存单元实现了数据流的串并转换,并行用“数据预解决模块1”和“数据预解决模块2”解决分流的数据,是面积与速度互换原则的体现。
七、 实验流程:
1.一方面运用Matlab的fdatool工具箱设计滤波器,在sptool工具箱进行信号分析与滤波:
Matlab编程,产生题所规定的数字信号
k=0:255;%取256点数据
a=sin(2*pi*k*2023/32023);
b=sin(2*pi*k*2023/32023)+ sin(2*pi*k*12023/32023);
2.运用CCS进行工程打开、编译链接、装载、运营:
3. 运用信号发生器产生输入信号,经DSP运算后对的地在示波器上显示:
4. 变量观测、图形观测:
输入时域、频域:
输出时域、频域:
噪声时域、频域:
5. 比较加不同窗和阶数时滤波器的滤波效果:
Hamming
Hann
Blackman
七、实验程序:
/*
运用DSP实现实时信号FIR滤波
*/
/************main_dma4.c**************/
#include <stdio.h>
#include <csl_mcbsp.h>
#include <csl_dma.h>
#include <csl_irq.h>
#include <csl.h>
#include <csl_chip.h>
#include <csl_i2c.h>
#include <csl_pll.h>
#include <csl_emif.h>
#include <csl_emifBhal.h>
#include "5502_FLASH.h"
#include "E2PROM_Function.h"
#include "CODEC.h"
#include <math.h>
#include <tms320.h>
#include <dsplib.h>
#include "fir.h"
//---------Global data definition---------
/* Constants for the buffered ping-pong transfer */
#define BUFFSIZE 96
#define PING 0
#define PONG 1
/*
* Data buffer declarations - the program uses four logical buffers of size
* BUFFSIZE, one ping and one pong buffer on both receive and transmit sides.
*/
#pragma DATA_SECTION (gBufferXmtPing, "buffer_sect");
Int16 gBufferXmtPing[BUFFSIZE]; // Transmit PING buffer
#pragma DATA_SECTION (gBufferXmtPong, "buffer_sect");
Int16 gBufferXmtPong[BUFFSIZE]; // Transmit PONG buffer
#pragma DATA_SECTION (gBufferRcvPing, "buffer_sect");
Int16 gBufferRcvPing[BUFFSIZE]; // Receive PING buffer
#pragma DATA_SECTION (gBufferRcvPong, "buffer_sect");
Int16 gBufferRcvPong[BUFFSIZE]; // Receive PONG buffer
DATA *dbptr = &db[0];
DATA *dbptrx = &dbx[0];
/*------------------------------------------------------------------------------------*/
//
// Config McBSP: Use McBSP to send and receive the data between DSP and AIC23B
//
/*------------------------------------------------------------------------------------*/
MCBSP_Config Mcbsp1Config = {
MCBSP_SPCR1_RMK(
MCBSP_SPCR1_DLB_OFF, // DLB = 0
MCBSP_SPCR1_RJUST_LZF, // RJUST = 0,right justify the data and zero fill the MSBs
MCBSP_SPCR1_CLKSTP_DISABLE, // CLKSTP = 0
MCBSP_SPCR1_DXENA_ON, // DXENA = 1,DX delay enabler on
0, // Reserved = 0
MCBSP_SPCR1_RINTM_RRDY, // RINTM = 0
MCBSP_SPCR1_RSYNCERR_NO, // RSYNCER = 0
// MCBSP_SPCR1_RFULL_NO, // RFULL = 0
// MCBSP_SPCR1_RRDY_NO, // RRDY = 0
MCBSP_SPCR1_RRST_DISABLE // RRST = 0; Disable receiver
),
MCBSP_SPCR2_RMK(
MCBSP_SPCR2_FREE_NO, // FREE = 0
MCBSP_SPCR2_SOFT_NO, // SOFT = 0
MCBSP_SPCR2_FRST_FSG, // FRST = 1 ; Enable the frame-sync logic
MCBSP_SPCR2_GRST_CLKG, // GRST = 1 ; The sample rate generator is take out of its reset state
MCBSP_SPCR2_XINTM_XRDY, // XINTM = 0
MCBSP_SPCR2_XSYNCERR_NO, // XSYNCER =0
// MCBSP_SPCR2_XEMPTY_NO, // XEMPTY = 0
// MCBSP_SPCR2_XRDY_NO, // XRDY = 0
MCBSP_SPCR2_XRST_DISABLE // XRST = 0 Disable transimitter
),
// 单数据相,接受数据长度为16位,每相2个数据
MCBSP_RCR1_RMK(
MCBSP_RCR1_RFRLEN1_OF(1), // RFRLEN1 = 1
MCBSP_RCR1_RWDLEN1_16BIT // RWDLEN1 = 2
),
MCBSP_RCR2_RMK(
MCBSP_RCR2_RPHASE_SINGLE, // RPHASE = 0
MCBSP_RCR2_RFRLEN2_OF(0), // RFRLEN2 = 0
MCBSP_RCR2_RWDLEN2_8BIT, // RWDLEN2 = 0
MCBSP_RCR2_RCOMPAND_MSB, // RCOMPAND = 0 No companding,any size data, MSB received first
MCBSP_RCR2_RFIG_YES, // RFIG = 1 Frame-sync ignore
MCBSP_RCR2_RDATDLY_1BIT // RDATDLY = 1 1-bit data delay
),
MCBSP_XCR1_RMK(
MCBSP_XCR1_XFRLEN1_OF(1), // XFRLEN1 = 1
MCBSP_XCR1_XWDLEN1_16BIT // XWDLEN1 = 2
),
MCBSP_XCR2_RMK(
MCBSP_XCR2_XPHASE_SINGLE, // XPHASE = 0
MCBSP_XCR2_XFRLEN2_OF(0), // XFRLEN2 = 0
MCBSP_XCR2_XWDLEN2_8BIT, // XWDLEN2 = 0
MCBSP_XCR2_XCOMPAND_MSB, // XCOMPAND = 0
MCBSP_XCR2_XFIG_YES, // XFIG = 1 Unexpected Frame-sync ignore
MCBSP_XCR2_XDATDLY_1BIT // XDATDLY = 1 1-bit data delay
),
MCBSP_SRGR1_DEFAULT,
MCBSP_SRGR2_DEFAULT,
MCBSP_MCR1_DEFAULT,
MCBSP_MCR2_DEFAULT,
MCBSP_PCR_RMK(
// MCBSP_PCR_IDLEEN_RESET, // IDLEEN = 0
MCBSP_PCR_XIOEN_SP, // XIOEN = 0
MCBSP_PCR_RIOEN_SP, // RIOEN = 0
MCBSP_PCR_FSXM_EXTERNAL, // FSXM = 0 Tranmit frame-syn is provided by AIC23B
MCBSP_PCR_FSRM_EXTERNAL, // FSRM = 0 Receive frame-syn is provided by AIC23B
MCBSP_PCR_CLKXM_INPUT, // CLKR is input
MCBSP_PCR_CLKRM_INPUT, // CLKX is input
MCBSP_PCR_SCLKME_NO, // SCLKME=0 CLKG is taken from the McBSP internal input clock
// MCBSP_PCR_CLKSSTAT_0, // The signal on the CLKS pin is low
MCBSP_PCR_DXSTAT_0, // Drive the signal on the DX pin low
// MCBSP_PCR_DRSTAT_0, // The signal on the DR pin is low
MCBSP_PCR_FSXP_ACTIVEHIGH, // FSXP = 1 Because a falling edge on LRCIN or LRCOUT starts data transfer
MCBSP_PCR_FSRP_ACTIVELOW, // FSRP = 1
MCBSP_PCR_CLKXP_FALLING, // CLKXP = 1 The falling edge of BCLK starts data transfer
MCBSP_PCR_CLKRP_RISING // CLKRP = 1
),
MCBSP_RCERA_DEFAULT,
MCBSP_RCERB_DEFAULT,
MCBSP_RCERC_DEFAULT,
MCBSP_RCERD_DEFAULT,
MCBSP_RCERE_DEFAULT,
MCBSP_RCERF_DEFAULT,
MCBSP_RCERG_DEFAULT,
MCBSP_RCERH_DEFAULT,
MCBSP_XCERA_DEFAULT,
MCBSP_XCERB_DEFAULT,
MCBSP_XCERC_DEFAULT,
MCBSP_XCERD_DEFAULT,
MCBSP_XCERE_DEFAULT,
MCBSP_XCERF_DEFAULT,
MCBSP_XCERG_DEFAULT,
MCBSP_XCERH_DEFAULT
};
DMA_Config dmaRcvConfig = {
DMA_DMACSDP_RMK(
DMA_DMACSDP_DSTBEN_NOBURST,
DMA_DMACSDP_DSTPACK_OFF,
DMA_DMACSDP_DST_DARAMPORT1,
DMA_DMACSDP_SRCBEN_NOBURST,
DMA_DMACSDP_SRCPACK_OFF,
DMA_DMACSDP_SRC_PERIPH,
DMA_DMACSDP_DATATYPE_16BIT
), /* DMACSDP */
DMA_DMACCR_RMK(
DMA_DMACCR_DSTAMODE_POSTINC,
DMA_DMACCR_SRCAMODE_CONST,
DMA_DMACCR_ENDPROG_OFF, /* ENDPROG OFF */
DMA_DMACCR_WP_DEFAULT,
DMA_DMACCR_REPEAT_OFF,
DMA_DMACCR_AUTOINIT_ON, /* AUTOINIT ON */
DMA_DMACCR_EN_STOP,
DMA_DMACCR_PRIO_LOW,
DMA_DMACCR_FS_DISABLE,
DMA_DMACCR_SYNC_REVT1
), /* DMACCR */
DMA_DMACICR_RMK(
DMA_DMACICR_AERRIE_ON,
DMA_DMACICR_BLOCKIE_OFF,
DMA_DMACICR_LASTIE_OFF,
DMA_DMACICR_FRAMEIE_ON,
DMA_DMACICR_FIRSTHALFIE_OFF,
DMA_DMACICR_DROPIE_OFF,
DMA_DMACICR_TIMEOUTIE_OFF
), /* DMACICR */
(DMA_AdrPtr)(MCBSP_ADDR(DRR11)), /* DMACSSAL */
0, /* DMACSSAU */
NULL, /* DMACDSAL, to be loaded by submit */
0, /* DMACDSAU */
BUFFSIZE, /* DMACEN */
1, /* DMACFN */
0,
展开阅读全文