不知道论坛的大侠,做过类似的工程实验没?我用Cypress的USB芯片68013和ADSP_BF518做个上下位机数据传输的实验,目前上位机PC往下位机发数据已经能够接收到了。但是由下位机ADSP_BF518往上位机PC发存在很多的问题,给*EP6赋值总是赋值不进去,一直为0,以至于上位机接收下位机数据一直都是0。
描述问题:
1、 对*Ep6的读出访问错误,数据总是写入不到地址0x20200008中去。但是,用了printf打印*EP6的值是正确的,是已经被读出了的,可是在BLACKFIN Memory查看又全都是0。
2、 怎么样才能实现对*Ep6数据的写入呢?我这样才做有误吗?
for(k=0;k<256;k) //512字节时,EP6 AUTOIN自动提交
{
// Delay(5000);
*EP6=k;
// printf("\nb[k] receite Data is %x\n",b[k]);
// printf ("\n*EP6 receite Data is %x\n",*EP6);
k++;
}
这怎么解释呢?详细见图片:
以下是我主要的程序:
#define EP2
(volatile unsigned int *)0x20200000 //定义一个指针,地址指向 BANK2
#define EP6
(volatile unsigned int *)0x20200008 //定义一个指针,地址指向 BANK2
void
Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc0ffc0;
*pEBIU_AMGCTL = 0x0006;
}
void
Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL =0x00000025;
*pEBIU_SDGCTL =0x0091998d;
ssync();
}
void
InitPorts(void)
{
*pPORTH_FER |=PH4; //复用为AOE
*pPORTH_MUX =1<<2;
*pPORTH_FER |=PH5; //复用为ARDY
*pPORTH_MUX =1<<2;
*pPORTG_FER |=PG11; //复用AMS[2]
*pPORTG_MUX |=1<<0x0C;
sync();
}
主程序如下:
int main( void )
{
unsigned int k,i,j;
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
InitPorts();
i=0;
k=0;
while(1)
{
DataBuf[i] =*EP2;
//
printf("\n*EP2 receite Data is %x\n",*EP2);
//
printf("\nDataBuf receite Data is %x\n",DataBuf[i]);
i++;
if(i==5)
{
i=0;
for(k=0;k<256;k) //512字节时,EP6 AUTOIN自动提交
{
// Delay(5000);
*EP6=k;
// printf("\nb[k] receite Data is %x\n",b[k]);
// printf("\n*EP6 receite Data is %x\n",*EP6);
k++;
}
}
}
}
「该帖子被 懒得取名 在 2014-04-11 16:25:47 编辑过」