我的系统由前端fpga缓存数据,并口转交给ARM(lpc2214)打包,再交给网络控制器(lan9115)发送到pc端,三个芯片共用总线,程序烧写在flash中,fpga对应arm CS1片选区(主要用来缓存数据),lan9115对应cs0片选区(寄存器映射)。当我进入fpga发给arm的中断时,lan9115对应的cs0片选区(0x80000000-0x80ffffff)内容就变乱了,类似以下情况:<br />0x80000000 2e 00 2e 00 ff ff 5a 00 5a 00<br />0x80000010 12 00 12 00 00 00 00 00 00 00<br />0x80000020 34 bc 34 bc 11 ab 11 ab ff ff<br />0x80000030 07 14 07 14 aa bb aa bb 00 00<br />0x80000040 ff 00 ff 00 ac 09 ac 09 ff ff<br />.....<br />(高低位相互映射,且数据杂乱...)<br />fpga对应的中断程序仅仅是把fpga数据从cs1片选区(0x81000000-0x81ffffff)缓存到静态ram中去(0x40003200-XXXXX),按道理不会影响cs0片选区的值啊?arm自己发数据给lan9115一切正常,先前由于fpga三态输出没做导致一进中断cs0-cs3 4个片选区值全被改成定值,无法读写,难道这次也是三态的原因? |
|