您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]新买的BF533板子 之前拿sport源程序测... 
本帖共有3213个阅读者
发表帖子 发表投票 回复主题
[求助]新买的BF533板子 之前拿sport源程序测试没问题 今天再测试居然接收不到数据了 iRxBuffer就是什么数据都没有 急
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]新买的BF533板子 之前拿sport源程序测试没问题 今天再测试居然接收不到数据了 iRxBuffer就是什么数据都没有 急
该连的线也连了   程序也没有动  为什么呢 为什么呢 为什么呢
上传的图片
  201610189335826.jpg [ 121.40 KB 486×868 ] (缩略时请点击查看原图)

 



「该帖子被 水下通信 在 2016-10-18 09:37:21 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 9:36:29
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
跑的是哪一个程序?程序名?“该连的线也连了”是连的什么线?建议详细阅读下面的帖子,你描述的越详细,获得帮助的几率就越大,首先得让我能够复现你现在的情况。猜的话好难找到问题


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2016/10/18 9:48:53
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
板子是ADSP-EDU-BF53x 仿真器是AD-HP-510ICE 开发环境是VDSP(update10)程序就是买板子时提供的bf53x_sport程序 没有任何改动 改程序要求将DR1PRI和DT1PRI用导线连接起来,将TFS1和RFS1连接起来
/********************************************************
*
*   北京四维卓信电子有限公司
*
*  【OpenADSP开源社区】
*
********************************************************/
#include <cdefBF533.h>
#include <sys\exception.h>

#define FLOW_1 0x1000

unsigned char iTxBuffer[4000];
unsigned char iRxBuffer[4000];

EX_INTERRUPT_HANDLER(Sport1_RX_ISR);
EX_INTERRUPT_HANDLER(Sport1_TX_ISR);

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Set_PLL(int pmsel,int pssel)
{
int new_PLL_CTL;
*pPLL_DIV = pssel;
asm("ssync;");
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm("ssync;");
asm("idle;");
}
}


void Init_Sport1_RX(int RCLKDIV,int RFSDIV)
{
*pSPORT1_RCLKDIV = RCLKDIV; //配置SPORT接收接口的时钟频率
*pSPORT1_RFSDIV = RFSDIV; //配置SPORT接收接口的同步频率
*pSPORT1_RCR1 = IRCLK|RFSR; //配置SPORT接收工作模式
*pSPORT1_RCR2 = 31; //配置SPORT以32Bit数据接收
}

void Init_Sport1_TX(int TCLKDIV,int TFSDIV)
{
*pSPORT1_TCLKDIV = TCLKDIV; //配置SPORT传输接口的时钟频率
*pSPORT1_TFSDIV = TFSDIV; //配置SPORT传输接口的同步频率
*pSPORT1_TCR1 = ITFS|TFSR|ITCLK; //配置SPORT传输工作模式
*pSPORT1_TCR2 = 31; //配置SPORT以32Bit数据传输
}

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

void Enable_DMA_Sport1_RX(void)
{
*pDMA3_CONFIG = (*pDMA3_CONFIG | DMAEN); //使能接收DMA
*pSPORT1_RCR1 = (*pSPORT1_RCR1 | RSPEN); //使能接收SPORT
}

void Enable_DMA_Sport1_TX(void)
{
*pDMA4_CONFIG = (*pDMA4_CONFIG | DMAEN); //使能传输DMA
*pSPORT1_TCR1 = (*pSPORT1_TCR1 | TSPEN); //使能传输SPORT
}

void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xfff32fff; //配置SPORT DMA中断等级
*pSIC_IAR2 = 0xffffffff;

register_handler(ik_ivg9, Sport1_RX_ISR); //注册接收中断
register_handler(ik_ivg10, Sport1_TX_ISR); //注册传输中断
*pSIC_IMASK = 0x00001800; //打开SPORT传输和接收中断屏蔽
}


EX_INTERRUPT_HANDLER(Sport1_RX_ISR) //接收DMA中断函数
{
*pDMA3_IRQ_STATUS = 0x0001; //清除中断标志位
printf("SPORT RX DMA Done!\n"); //打印信息
*pSIC_IMASK &= ~0x00000800; //屏蔽接收中断

}

EX_INTERRUPT_HANDLER(Sport1_TX_ISR) //传输DMA中断函数
{
*pDMA4_IRQ_STATUS = 0x0001; //清除中断标志位

printf("SPORT TX DMA Done!\n"); //打印信息
*pSIC_IMASK &= ~0x00001000; //屏蔽接收中断
}

main()
{
int i;
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
for(i=0;i<4000;i++) //产生测试数据
iTxBuffer[i]=i;
Init_Sport1_TX(7,9); //初始化Sport1传输接口
Init_Sport1_RX(7,9); //初始化Sport1接收接口
Init_Interrupts(); //初始化中断
Init_DMA(); //初始化DMA
Enable_DMA_Sport1_TX(); //使能Sport1传输接口及DMA
Enable_DMA_Sport1_RX(); //使能Sport1接收接口及DMA
while(1);
}

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 10:01:03
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

上传的图片
  201610181075939.jpg [ 133.92 KB 999×583 ] (缩略时请点击查看原图)

 


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 10:08:22
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
是不是导线连接松了?程序没变,硬件大板也没变的话,你这个连线比较可疑

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2016/10/18 10:44:40
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我之前也这样怀疑 还专门换了线  还是不行  我用示波器测了DT1PRI引脚  是正弦波  对吗  这样代表有数据输出?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 10:59:45
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
SPORT配置上发现一点冲突:
*pSPORT1_RCR1 = IRCLK|RFSR;
*pSPORT1_TCR1 = ITFS|TFSR|ITCLK; //配置SPORT传输工作模式

这两个配置,接收和发送都使用内部时钟,可能会造成读数不一致,也有可能造成接收数据丢失。建议接收改为外部时钟,硬件上把两个时钟线连接起来。
其他没有发现问题,不确定为何收不到数据。
你可以运行下板卡自带的代码中,驱动代码里面有个叫Talkthrough……的例子,通过输入接口输入一个声音,看输出接口有声音传出来没。

另外,确认下你的工程有没有开优化开关或者cache,如果有,先关闭。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2016/10/18 12:24:59
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
试了把时钟改为外部的 还是没有数据
优化开关是什么?cache是什么?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 14:47:43
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
那个talkthough我运行了一下  没有音乐  原来会有邓丽君的歌

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 14:55:32
水下通信(论坛新手)
水下通信
头衔:社区公民
帮派:无帮无派
帖数:54
金钱:417
积分:49
注册时间:2015/12/3
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
不会是烧了吧


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/18 17:18:31
41
1
1/5
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154525 Call, 1 Queries, Processed in 0.031250 second(s),