C6747访问adc,电路如图:
当CS4片选信号有效,EMA_A12为1时,74LV139译码电路的1Y1脚将有效,从而启动ADC转换。
AD7656为16位芯片,C6747的EMIFA将其作为16位异步外部存储设备访问。在片选初始化的时候(void CEint()函数),片选4的异步数据总线选择为16位。
AEMIF_A3CR = 0 //CE4
| ( 0 << 31 ) // selectStrobe
| ( 0 << 30 ) // extWait
| ( 15 << 26 ) // writeSetup //1 // 0 ns
| ( 31 << 20 ) // writeStrobe //4 // 50 ns
| ( 7 << 17 ) // writeHold //1 // 0 ns
| ( 24 << 13 ) // readSetup //1 // 0 ns
| ( 24 << 7 ) // readStrobe //20 // 200 ns
| ( 2 << 4 ) // readHold // 1 // 10 ns
| ( 3 << 2 ) // turnAround //3 // 10 ns
| ( 1 << 0 ); // asyncSize // 16-bit bus
此时EMIFA的地址线和16位异步存储设备的地址线对应如图:
(用户手册P710)
由图可见,EMA_A12对应的地址线为A13,故对应的偏移地址应为0x2000h,又因为该偏移地址为以16位数据为单元的半字地址(half word address),故需要转成字节地址,左移一位,为0x4000h,加上基地址0x64000000h,得到使片选4cs4信号有效,EMA_A12为高的地址为0x64004000h。(Uint16 *)0x64004000将0x64004000h转换为Uint16型的指针,*(Uint16 *)0x64004000取出指针所指单元的内容。