BF544没有A0地址线,所以你写555和554在数据线上的反应是一样的。你注意一下硬件连接,ADI的A1地址线应该是接在Flash的A0上的。这就导致了当你需要给flash送0xaaa时,BF544的地址实际是要向左偏移1的。于是BF544送入的值是0x1554。
你参考的代码,应该是BF533上的,肯定不是BF54系列的官方代码。533上用的是2MB的flash。数据手册有一句话不要忽略:
5. Address bits A19–A11 are don’t cares for unlock and command cycles, unless SA or PA required.
就是说从A11开始,数据开始被忽略,于是0x1554变成了0x554。
官方默认的是16bit驱动,只是命令字移位,你误以为是8位。