您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]  BF537 SPORT 和AD7686 相连  无法进... 
本帖共有769个阅读者
发表帖子 发表投票 回复主题
[求助] BF537 SPORT 和AD7686 相连 无法进入中断
awzaa(论坛新手)
awzaa
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:129
积分:5
注册时间:2013/6/21
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助] BF537 SPORT 和AD7686 相连 无法进入中断
小弟初次用DSP 所以不太熟悉 我以以前的代码为基础 做了修改 但是我的程序一直没法进入中断
从示波器上看 片选信号和SCLK也是乱七八糟的。。。
谢谢啦
#include <cdefBF537.h>
#include <sys\exception.h>
#include <stdio.h>
#include <time.h>
#include "Dodotronic.h"
#include <ccblkfn.h>

//#define POLC  0x00004000
//#define PORT_CFG_2_3_EXT_FS 0x00000020
//#define XFR_TYPE_NON_ITU656 0x0000000C
//#define SLEN_32 0x001f
#define FLOW_1 0x1000
#define MFD(v) (((v)&0x0F)<<12)

#ifndef CLKIN
#define CLKIN 25000000
#endif

#define __tick_delay(__start_tick,__ticks) __start_tick=clock();\
while(clock()-__start_tick<__ticks) \
{ \
asm("nop;");asm("nop;");asm("nop;");asm("nop;");asm("nop;"); \
}
#define __ticks_per_secs (((*pPLL_CTL&0x7E00)>>9)*CLKIN)

#define __system_clk (__ticks_per_secs/(*pPLL_DIV&0x000f))


int32_t iTxBuffer[4000];
int32_t iRxBuffer[4000];



EX_INTERRUPT_HANDLER(Sport0_RX_ISR);
//EX_INTERRUPT_HANDLER(Sport0_TX_ISR);



void Init_Sport0_TX(int TCLKDIV,int TFSDIV)     //发送模块
{

*pSPORT0_TCLKDIV = TCLKDIV; //配置SPORT 传输接口的时钟频率
*pSPORT0_TFSDIV = TFSDIV; //配置SPORT 传输接口的同步频率
*pSPORT0_TCR1 = ITFS|TFSR|ITCLK; //配置SPORT 传输工作模式
*pSPORT0_TCR2 = 31; //配置SPORT 以32Bit 数据传输
}

void Init_Sport0_RX(uint32_t samplerate) //接收模块
{
int sclk = __system_clk;
// RSCLKx frequency = (SCLK frequency)/(2 x (SPORTx_RCLKDIV + 1))
// SPORTxRFS frequency = (RSCLKx frequency)/(SPORTx_RFSDIV + 1)
// fech = ((sclk)/(2 x (clkdiv + 1))/(fsdiv + 1)
int fsdiv = 16 + 16;
int rdiv = ( sclk / ( 2 * samplerate * ( fsdiv + 1 ) ) ) - 1;
*pSPORT0_RCLKDIV = rdiv;
*pSPORT0_RFSDIV = fsdiv;
// *pSPORT0_RCLKDIV = RCLKDIV; //配置SPORT 传输接口的时钟频率
// *pSPORT0_RFSDIV = RFSDIV; //配置SPORT 传输接口的同步频率
*pSPORT0_RCR1 = IRFS|RFSR|IRCLK|LRFS; //配置SPORT 传输工作模式 clk 上升沿 内部时钟 首先输出MSB 每帧同步 下降沿输出数据
*pSPORT0_RCR2 = SLEN(32); //配置SPORT 以32Bit 数据传输

//延时函数
*pSPORT0_MCMC1 = 0x3001;
*pSPORT0_MCMC2 = 0x8080;
*pSPORT0_CHNL = 1; //活动的频道

}



void Init_DMA(void)
{
//DMA3 pour recevoir les donnees
*pDMA3_PERIPHERAL_MAP =0x3000; //设置SPORT 传输接口DMA
*pDMA3_CONFIG = WDSIZE_32 | DI_EN | FLOW_1; //设置DMA 工作模式
*pDMA3_START_ADDR = (void *)iRxBuffer; //设置DMA 传输数据起始地址
*pDMA3_X_COUNT = 1000; //设置DMA 传输次数
*pDMA3_X_MODIFY = 4; //设置DMA 每次地址增量变化
//DMA4 pour transmettre les donnees
*pDMA4_PERIPHERAL_MAP = 0x4000; //设置SPORT 传输接口DMA
*pDMA4_CONFIG = DI_SEL | WNR |WDSIZE_32 | DI_EN |FLOW_1; //设置DMA 工作模式
*pDMA4_START_ADDR = (void *)iTxBuffer; //设置DMA 传输数据起始地址
*pDMA4_X_COUNT = 1000; //设置DMA 传输次数
*pDMA4_X_MODIFY = 4; //设置DMA 每次地址增量变化
//DI_SEL | WNR | WDSIZE_32 | DI_EN | FLOW_1
*pPORT_MUX |= PJCE(00) ;


//priorite de la interruption

int ivg = 7;
register_handler((interrupt_kind)ivg, Sport0_RX_ISR);
*pSIC_IAR0 &=  ~(0x000000FF<<5*4);
*pSIC_IAR0 |=  (ivg-7)<<5*4;
*pSIC_IMASK |= 0x00000020;
return 0;
}

void Enable_DMA_Sport0_TX(void)
{
*pDMA4_CONFIG = (*pDMA2_CONFIG | DMAEN); //使能传输DMA
*pSPORT0_TCR1 = (*pSPORT0_TCR1 | TSPEN); //使能传输SPORT
}

void Enable_DMA_Sport0_RX(void)
{
*pDMA3_CONFIG = (*pDMA1_CONFIG | DMAEN);
*pSPORT0_RCR1 = (*pSPORT0_RCR1 | RSPEN);
}



EX_INTERRUPT_HANDLER(Sport0_RX_ISR) //传输DMA 中断函数
{
// *pTIMER_STATUS |= TIMIL1;

*pDMA3_IRQ_STATUS = DMA_DONE; //清楚中断标志位
printf("SPORT RX DMA Done!\n"); //打印信息
// *pSIC_IMASK &= ~0x00000200; //关闭传输中断

}

EX_INTERRUPT_HANDLER(Sport0_TX_ISR)
{
*pDMA4_IRQ_STATUS = DMA_DONE;

printf("SPORT TX DMA Done!\n");
//*pSIC_IMASK &= ~0x00000400;
}

main()
{
int i;
*pPLL_CTL = 0x3000;
*pPLL_DIV = 5;

for(i=0;i<4000;i++)
iTxBuffer[i]=i;

// Init_Sport0_TX(7,32);
Init_Sport0_RX(500000);
Init_DMA();
// Enable_DMA_Sport0_TX();
Enable_DMA_Sport0_RX();
while(1);idle();
}

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/6/26 21:27:53
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

SIC_IAR0寄存器 配置完后 值为多少?

你示波器测量SPORT接收管脚信号有没有时钟,同步信号


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/6/27 10:01:43
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159201 Call, 1 Queries, Processed in 0.015625 second(s),