i.MX6/i.MX7平台,支持EIM(External Interface Module)总线扩展。在实际项目中,大部分使用该总线和FPGA通信比较多,我们这里以与FPGA为例实现该驱动。
i.MX6是使用较多的一个,我们以i.MX6为例进行分析。我手上的芯片型号是i.MX6D。
我们实现的功能是:使用EIM的16根数据线与FPGA进行数据传输,EIM_OE/EIM_RW用来控制读写,EIM_CS用来选中。
最后效果:传输速度可以达到18MByte/S,这个传输速度应该是EIM异步通信比较大的一个传输速度了。要想再提速,对FPGA的性能要求就很高了,后续会介绍。
通过阅读i.MX6D手册Chapter 2 Memory Maps可以知道,EIM对应的内存映射地址是 0x0800_0000----0x0FFF_FFFF 共128MByte大小。这里的这个地址对我们非常的重要。
通过阅读i.MX6D手册Chapter 4 External Signals and Pin Multiplexing,可以知道,EIM比较重要的硬件资源有32根数据线(EIM_DAn/EIM_An),26根地址线(可寻址大小128MByte)(EIM_Dn),1根时钟线(EIM_BCLK),4根片选线(EIM_CSn),1根读信号(EIM_OE),1根写信号(EIM_RW)。
继续阅读i.MX6D手册Chapter 22 External Interface Module (EIM),EIM总线传输支持8bit、16bit、32bit位宽的数据长度。
同时:
8bit还支持DATA[7:0] DATA[15:8] DATA[23:16] DATA[31-24]可配。
16bit还支持DATA[15:0] DATA[31:16]