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