主题 : 关于MINI2440 TEST程序中SDI.C的困惑,求解释 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 33255
精华: 0
发帖: 13
金钱: 85 两
威望: 17 点
综合积分: 26 分
注册时间: 2010-11-28
最后登录: 2011-05-21
楼主  发表于: 2011-05-06 21:27

 关于MINI2440 TEST程序中SDI.C的困惑,求解释


程度中定义block=3072
在void TR_Buf_new(void)中定义的发送数据缓冲区大小为
for(i=0;i<2048;i++)    //128[word]*16[blk]=8192[byte]
*(Tx_buffer+i)=i+j;
即16个block(不知我理解的对不对)
而在void Wt_Block(void)程序中这里
while(wt_cnt<128*block)
{
     status=rSDIFSTA;
     if((status&0x2000)==0x2000)
      {
            rSDIDAT=*Tx_buffer++;
            wt_cnt++;
            //Uart_Printf("Block No.=%d, wt_cnt=%d\n",block,wt_cnt);
      }
}
128*4*3072=1572864[byte]
如些看来前8192个byte为发送数据缓冲区的数据,而后(1572864-8192)个字节则为随机数

不知我理解是否正确,求解释,谢谢!
级别: 新手上路
UID: 33255
精华: 0
发帖: 13
金钱: 85 两
威望: 17 点
综合积分: 26 分
注册时间: 2010-11-28
最后登录: 2011-05-21
1楼  发表于: 2011-05-06 22:33
还得靠自己啊,刚把block改为2,在电脑上打印出来数据是初始的数据,改为3072再打印随机数出现,如下
rSDIDAT=-281021441, wt_cnt=3280
rSDIDAT=-268959889, wt_cnt=3281
rSDIDAT=-1074545665, wt_cnt=3282
rSDIDAT=-1145048147, wt_cnt=3283
rSDIDAT=-268439687, wt_cnt=3284
rSDIDAT=-7491, wt_cnt=3285
rSDIDAT=-268959769, wt_cnt=3286
rSDIDAT=-1073922721, wt_cnt=3287
rSDIDAT=-33555334, wt_cnt=3288
rSDIDAT=-2098233, wt_cnt=3289
rSDIDAT=-268435657, wt_cnt=3290
rSDIDAT=-69287977, wt_cnt=3291
rSDIDAT=-335548809, wt_cnt=3292
rSDIDAT=2147347391, wt_cnt=3293

结论,程序中的blodk不用3072这么大,就用初始化的16block就行了
[ 此帖被zj89c2051在2011-05-06 22:41重新编辑 ]