积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> DSP代码示例
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
个人制作的音频信号采集的DSP汇编程序
 
作者:未知   来源:互联网    点击数:823   更新时间:2007-2-7
您可以添加到网摘 让更多人关注此文章:

    

1.  头文件
*=====================================================================
*  FILENAME:  Regs.h
*=====================================================================
   .mmregs
*---------------------  McBSP0 Registers  -------------------------

DRR20      .set  0020h  ; McBSP0 Data Rx Reg2
DRR10      .set  0021h  ; McBSP0 Data Rx Reg1
DXR20     .set  0022h  ; McBSP0 Data Tx Reg2
DXR10      .set  0023h  ; McBSP0 Data Tx Reg1
SPSA0      .set  0038h  ; McBSP0 Sub Bank Addr Reg
SPSD0      .set  0039h  ; McBSP0 Sub Bank Data Reg

*---------------------  McBSP1 Registers  --------------------------

DRR21      .set  0040h  ; McBSP1 Data Rx Reg2
DRR11      .set  0041h  ; McBSP1 Data Rx Reg1
DXR21      .set  0042h  ; McBSP1 Data Tx Reg2
DXR11      .set  0043h  ; McBSP1 Data Tx Reg1
SPSA1      .set  0048h  ; McBSP1 Sub Bank Addr Reg
SPSD1      .set  0049h  ; McBSP1 Sub Bank Data Reg

*-------  McBSP0 & McBSP1 Sub-Bank Addressed Registers  -------------
 
SPCR1   .set  0000h      ; McBSP Ser Port Ctrl Reg1
SPCR2   .set  0001h      ; McBSP Ser Port Ctrl Reg2
RCR1   .set  0002h      ; McBSP Rx Ctrl Reg1
RCR2   .set  0003h      ; McBSP Rx Ctrl Reg2
XCR1   .set  0004h    ; McBSP Tx Ctrl Reg1
XCR2   .set  0005h      ; McBSP Tx Ctrl Reg2
SRGR1   .set  0006h      ; McBSP Sample Rate Gen Reg1
SRGR2   .set  0007h      ; McBSP Sample Rate Gen Reg2
MCR1   .set  0008h      ; McBSP Multichan Reg1
MCR2   .set  0009h      ; McBSP Multichan Reg2
RCERA   .set  000Ah      ; McBSP Rx Chan Enable Reg Partition A
RCERB   .set  000Bh      ; McBSP Rx Chan Enable Reg Partition B
XCERA   .set  000Ch      ; McBSP Tx Chan Enable Reg Partition A
XCERB   .set  000Dh      ; McBSP Tx Chan Enable Reg Partition B
PCR    .set  000Eh      ; McBSP Pin Ctrl Reg
2.  中断向量表
     .title "vectors.asm"
     .ref start
     .ref receive_int
     .sect ".vectors"
    
RESET:  B start                 ;复位矢量
        NOP
        NOP
NMI:    RETE                  ;非屏蔽中断                      
        NOP
        NOP
        NOP
     
SINT17  .space 4*16              ;软件中断
SINT18  .space 4*16
SINT19  .space 4*16
SINT20  .space 4*16
SINT21  .space 4*16
SINT22  .space 4*16
SINT23  .space 4*16
SINT24  .space 4*16
SINT25  .space 4*16
SINT26  .space 4*16
SINT27  .space 4*16
SINT28  .space 4*16
SINT29  .space 4*16
SINT30  .space 4*16

INT0:   RETE                   ;外部用户中断0
        NOP
        NOP
        NOP
INT1:   RETE                   ;外部用户中断1
        NOP
        NOP
        NOP
INT2:   RETE                   ;外部用户中断2
        NOP
        NOP
        NOP
TINT0:  RETE                   ;定时器0中断
        NOP
        NOP
        NOP
BRINT0: B receive_int              ;McBSP0接收中断
        NOP
        NOP
        NOP
BXINT0: RETE                   ;McBSP0发送中断
        NOP
        NOP
        NOP
DMAC0:  RETE                 ;DMA通道0中断
        NOP
        NOP
        NOP
TINT1:  RETE                   ;定时器1中断
        NOP
        NOP
        NOP
INT3:   RETE                   ;外部用户中断3
        NOP
        NOP
        NOP
HPINT:  RETE                   ;主机接口(HPI)中断
        NOP
        NOP
        NOP
BRINT1: RETE                   ;McBSP1接收中断
        NOP
        NOP
        NOP
BXINT1: RETE                   ;McBSP1发送中断
        NOP
        NOP
        NOP
DMAC4:  RETE                  ;DMA通道4中断
        NOP
        NOP
        NOP
DMAC5:  RETE                  ;DMA通道5中断
        NOP
        NOP
        NOP
        .end
3.  CMD文件
vectors.obj
audio.obj
-o audio.out
-m audio.out
-e start

MEMORY
{
   PAGE 0:
          PFLASH:   org=10000h,len=0C000h
          VECS:     org=0FF80h,len=0080h
   PAGE 1:
          DARAM:   org=20000h,len=20000h
          DFLASH:   org=00000h,len=4000h
}
SECTIONS
{
   .text    :>PFLASH   PAGE 0
   .data    :>PFLASH   PAGE 0
   .bss     :>DARAM   PAGE 1
   STACK  :>DFLASH  PAGE 1
   .vectors  :>VECS     PAGE 0
}
4.  主程序
            .title "audio.asm"
            .mmregs
            .include "regs.h"
            .def start
            .def init_5402
            .def init_mcbsp
            .def init_codec
            .def receive_int
STACK      .usect "STACK",200h
            .text
start:        STM  #STACK+200h,SP   ;设置堆栈指针
            B  init_5402             ;TMS320VC5402初始化(STO,ST1,PMST,SWWSR,BSCR)
            B  init_mcbsp            ;McBSP模块初始化
            B  init_codec             ;TLV320AIC15初始化
            STM  #0      ,IMR       ;中断屏蔽寄存器清0
            ORM  #0010h  ,IMR      ;使能BRINT0,BXINT0中断
            STM  #0FFFFh ,IFR       ;中断标志寄存器清0
            RSBX INTM              ;中断使能
end:        NOP
            NOP
            B    end
;--------------------------------------------------------------------------------------
init_5402:    STM  #2492h  ,SWWSR    ;插入2个等待状态
            STM  #0002h  ,BSCR       ;块切换时插入0个等待状态
            STM  #1800h  ,ST0         ;DP指针清0
            STM  #2940h  ,ST1         ;相对寻址使用DP指针,中断禁止
            STM  #0FF88h ,PMST        ;MP/MC=0,OVLY=0,DROM=1,CLKOUT输出使能
            RET
;---------------------------------------------------------------------------------------
W_McBSP_REG .macro addr  ,val          ;定义一个宏,写McBSP寄存器
            STM  addr    ,SPSA0       ;设置子地址寄存器的值
            NOP
            STM  val     ,SPSD0        ;设置子数据寄存器的值
            NOP
            NOP
            .endm
R_McBSP_REG .macro addr  ,acc           ;定义一个宏,读McBSP寄存器
            STM  addr    ,SPSA0        ;设置子地址寄存器的值
            NOP
            LDM  SPSD0   ,acc          ;将子数据寄存器的值传给累加器
            NOP
            .endm
WAIT_W     .macro                       ;定义一个宏,等待
WAIT?:      R_McBSP_REG  SPCR2 ,A
            AND  #10     ,A             ;发送RDY信号与A向与
            BC   WAIT?   ,AEQ          ;发送没准备好就继续等待
            .endm
PROGREG   .macro       progword         ;定义一个宏,向Codec写控制命令
            STM  #01h    ,DXR10         ;通过向数据最低位写1,使Codec由连续数据模式
;转换为编程模式
            WAIT_W
            STM  progword,DXR10          ;向数据发送寄存器写控制字
            WAIT_W
            .endm
;---------------------------------------------------------------------------------------
init_mcbsp:  W_McBSP_REG  SPCR1 ,#0000h    ;数据右对齐,接收器复位
            W_McBSP_REG  SPCR2 ,#0000h    ;帧同步发生器,采样率发生器,发送器复位
            W_McBSP_REG  PCR   ,#000Ch    ;DX,FSX,CLKX,DR,FSR,CLKR配置为串口,
;帧同步信号,发送时钟,接收时钟由外部器
;件驱动,发送,接收帧同步脉冲高电平有效,
                                              ;在CLKX的上升沿采样发送数据,CLKR的
;下降沿采样接收数据
            W_McBSP_REG  RCR1  ,#0040h    ;接收数据每帧长度为1个字,字长为16位
            W_McBSP_REG  RCR2  ,#0004h    ;接收数据为单相帧,无扩展,无延迟,第一
;个后的接收帧同步脉冲被忽略
            W_McBSP_REG  XCR1  ,#0040h    ;发送数据每帧长度为1个字,字长为16位
            W_McBSP_REG  XCR2  ,#0004h    ;发送数据为单相帧,无扩展,无延迟,第一
;个后的发送帧同步脉冲被忽略
            NOP
            NOP
            STM  #0      ,DRR10             ;数据接收寄存器清0
            STM  #0      ,DXR10             ;数据发送寄存器清0
            W_McBSP_REG  SPCR1 ,#0001h     ;使能接收器
            W_McBSP_REG  SPCR2 ,#0001h     ;使能发送器
            RET
;----------------------------------------------------------------------------------------
init_codec:   PROGREG      #2740h             ;设置控制寄存器1,选择连续数据模式,DAC
;输入数据长度为15bit
            PROGREG      #4720h             ;设置控制寄存器2,
;SCLK=16*FS*#Device*mode
            PROGREG      #6701h             ;设置控制寄存器3,FS/fs=1
            PROGREG      #8700h             ;设置控制寄存器4,N=16,P=8
            PROGREG      #8719h             ;设置控制寄存器4,M=9
            PROGREG      #0C704h            ;设置控制寄存器6,模拟输入为MICIN的公
;共外部模式
;----------------------------------------------------------------------------------------
receive_int:
            LDM  DRR10   ,A               ;将串口数据接收寄存器的值传给累加器A
            STL  A       ,DXR10           ;将累加器A的值传给串口数据发送寄存器
            RETE
            .end



相关文章
· 科技奥运与计算机技术的应用[425]
· Electromedical[2693]
· 患者监控[2742]
· 基于TMS320LF2407A DSP的心电监护系统研究[3187]
· 用S3C2410实现三导联远程心电监护系统[3096]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
严冬期如何发展半导体业 扩
2008年中国集成电路市场回顾与展望
分析师:亚洲芯片厂商库存远超预期
2008年基础电子业十大事件点评
Aptina并购智多微手机软件平台设
凌力尔特公司推出用于多核处理器的&n
安森美半导体任命麦满权为韩国及南亚区
Broadcom:半导体产业依然机会
飞思卡尔推i.MX51芯 
日立芯片守卫新年倒数计时晚会
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
低价专业PCB打样 双面板20...
深圳市天漠科技超低价供应atm...
深圳市天漠科技超低价供应ARM...
[推荐]2.5米精度,高灵敏度...
830实验箱+电脑没有并口...
[原创]平望科技助力自服终端国...
低价专业PCB打样 双面板20...
[原创]低价专业PCB打样 双...
Bootloader for ...
【有奖调查】08-09嵌入式开...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网