我的flash是8bit4M的,里面从首地址(0x00800000)开始存放一个mp3音频文件,我需要每次读16bit数据,将数据放入数组。
我的程序是这样的:
unsigned short voicedata[5204];
for(add=0x00800000,j=0;add<0x00829398,j<5204;add+=2, j++)
{
voicedata[j]=IORD(add,0);
}
结果读出来的数据除了开始几个其他全为65535
我先前用同样的程序读wav文件却是正确的,请教,如果我要读mp3数据应该怎么读!!
我用的是DE2板,自带有control Panel软件,可以把文件写到flash的指定地址,所以我确定数据是已经写到flash里的了。
如果我把voicedata[5204]设成unsigned int (32bit)的话,读出来就是正常的数据,很奇怪
8位的flash,每个地址存的数据不是8bit吗?难道是32bit?还是读数据的时候连续读了4个地址?
请指点,谢谢!
应该说不管是读16bit还是32bit都会是正确的,读多少是由nios管理的,如果是8bitflash,16bit的读取应该读两次,32bit就是读三次。
IORD读出来的是32bit的数据,应该nios的寄存器都是32bit的。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |