V7板子上的FMC扩展IO操作, 通过A10,A11译码, 产生4组访问地址:
FMC_NE1 输出低电平:
FMC_A11(B),FMC_A10(A) = 00 时,1Y0 输出的低电平,选择的是 OLED。
FMC_A11(B),FMC_A10(A) = 01 时,1Y1 输出的低电平,选择的是 74HC574。
FMC_A11(B),FMC_A10(A) = 10 时,1Y2 输出的低电平,选择的是 DM9000。
FMC_A11(B),FMC_A10(A) = 11 时,1Y3 输出的低电平,选择的是 AD7606。
32bit 模式下,我们计算 A10 和 A11 的时候,实际上需要按 HADDR12 和 HADDR13 计算的。
NE1 + HADDR12 + HADDR13 四种组合地址:
NE1 + HADDR13 + HADDR12 = 0x6000000 + 0<<13 + 0<<12 = 0x60000000
NE1 + HADDR13 + HADDR12 = 0x6000000 + 0<<13 + 1<<12 = 0x60001000
NE1 + HADDR13 + HADDR12 = 0x6000000 + 1<<13 + 0<<12 = 0x60002000
NE1 + HADDR13 + HADDR12 = 0x6000000 + 1<<13 + 1<<12 = 0x60003000
如果配置为 16 位模式和 8 位模式,参照这种方式进行计算。我们使用FMC总线驱动扩展IO(即选择74HC574),那么地址为0x60001000。
那么:
关于地址引脚FMC_A10和FMC_A11的选择有什么特别考虑吗?
个人理解并非强制,选择别的地址也可以,如选择A8,A9作为译码器输入,只是最后产生的地址值变了。 |