ADSP调试记录

 http://www.analogcn.com/Article/wz3/200802/20080213110735.html

 

 

ADSP调试记录

DSP外围不用管脚处理:   nmi<='0';   br<='1';   ardy<='1';

C编程

short int *p1;                //定义16位宽数据指针

int *p1;                        //定义32位宽数据指针

*p1=0xff;                            //访问p1指向地址的存储单元

SDRAM

地址线连接:

DSP        A1~A10  A12  A13  A18  A19  ABE0  ABE1 

SDRAM    A0~A9   A11  A12  BA0  BA1  SDQM0  SDQM1  相连

DSP寄存器设置:             

//SDRAM Refresh Rate Control Register

              *pEBIU_SDRRC = 0x00000304;

              //SDRAM Memory Bank Control Register

              *pEBIU_SDBCTL = 0x00000037;

              //SDRAM Memory Global Control Register 

              *pEBIU_SDGCTL = 0x0091998d;

然后可以直接访问SDRAM允许范围内的存储地址,无需其他操作。

DPRAM

DSP寄存器设置:             

       *pEBIU_AMBCTL0       = 0x7bb07bb0;

       *pEBIU_AMBCTL1       = 0x7bb07bb0;

       *pEBIU_AMGCTL = 0x000f;

然后可以直接访问DPRAM允许范围内的存储地址,无需其他操作。

PF端口调试

输入(PF8为例):

void Init_Flags(void)

{

       *pFIO_INEN         = 0x0100;

       *pFIO_DIR           = 0x0000;

}

然后读取*pFIO_FLAG_S寄存器的相应位即为输入数据。

输入(PF8中断为例)

void Init_Flags(void)

{

       *pFIO_INEN         = 0x0100;

       *pFIO_DIR           = 0x0000;

       *pFIO_EDGE        = 0x0100;

       *pFIO_MASKA_D = 0x0100;

}

输出(PF8为例)

void Init_Flags(void)

{

       *pFIO_DIR           = 0x0100;

       *pFIO_FLAG_S  = 0x0100;  //输出为1

       *pFIO_FLAG_C  = 0x0100;  //输出为0

}

中断调试

注意:中断调用要包含头文件:#include <sys\exception.h>

TIMER中断为例:

首先配置TIMER寄存器:

void Init_Timers(void)

{

       *pTIMER0_CONFIG           = 0x0019;  //此处设置为利用内部时钟

       *pTIMER0_PERIOD            = 0x00800000;

       *pTIMER0_WIDTH             = 0x00400000;

       *pTIMER_ENABLE             = 0x0001;

}

然后配置中断寄存器:

void Init_Interrupts(void)

{

       // assign core IDs to interrupts

       *pSIC_IAR0 = 0xffffffff;

       *pSIC_IAR1 = 0xffffffff;

       *pSIC_IAR2 = 0xfffffff4;                                 // Timer0 -> ID4;

       // assign ISRs to interrupt vectors

       register_handler(ik_ivg11, Timer0_ISR);             // Timer0 ISR -> IVG 11

       // enable Timer0 and FlagA interrupt

       *pSIC_IMASK = 0x00010000;

}

最后编写中断子程序:

EX_INTERRUPT_HANDLER(Timer0_ISR)

{

       // confirm interrupt handling

       *pTIMER_STATUS = 0x0001;

       printf("\n Timer0 interrupt!\n");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值