在C:\ti\C6748_StarterWare_1_20_04_01\examples\evmC6748\nand下的例程,是关于NANDFLASH的读写实验,此实验是基于EDMA3的NANDFLASH的读写操作。函数里面,关于EDMA3初始化以及param的参数设置做如下操作:
1: hNandDmaInfo->DMAXferSetup = EMIFANANDXferSetup; //EDMA的读写配置
2;EMIFANANDXferSetup(NandInfo_t *nandInfo, unsigned char *data, unsigned int len, NandDmaDir_t dir)函数里的
3:retVal = EMIFANANDRxDmaConfig(nandInfo->dataRegAddr, data, len);函数对相关param参数进行了设置
可是没有明确nandflash的地址,如下:
4:EMIFANANDRxDmaConfig(unsigned int csBaseAddr, unsigned char *data, unsigned int len)
5:{paramSet.srcAddr = csBaseAddr;}
是不是将相应的函数做如1操作,在代码被封装的底层就已经进行了相应的函数操作,如地址的定义,以及其他相关NANDFLASH的EDMA3的param参数?
由于EDMA3被设置成手动触发,所以函数集:
6:retVal = NANDPageWrite(&nandInfo, blkNum, pageNum, &txData[0],&eccData[0]);
即对NANDFLASH的写操作,是不是此函数直接出发了EDMA3?效果和函数:
7:EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 0, EDMA3_TRIG_MODE_MANUAL);一样呢?
Denny%20Yang99373:
这是把NAND的读写和EDMA事件挂钩了的。
这个例程有什么问题吗?
shouyi hu:
回复 Denny%20Yang99373:
这个例程没办法看到,具体的NAND在EDMA的源地址与目的地址,以及触发的方式。
是不是使用EMIFA配置好读写时序之后,就可以直接对相应的NAND的地址进行读写访问?
如果想将EDMA和NAND的配置模块化分开?或者不适用EDMA对NAND进行读写需要怎么实现?
Denny%20Yang99373:
回复 shouyi hu:
不用EDMA可以直接对NAND片选地址读写就行了
shouyi hu:
回复 Denny%20Yang99373:
还想问一个问题,初始化操作是否是对EMIFA初始化,完成读写时序的配置如使用函数:
/*配置EMIFA相关复用引脚*/ EMIFAPinMuxSetup();
/*配置数据总线16bit*/ //This function will set the buswidth of async device connected. EMIFAAsyncDevDataBusWidthSelect(SOC_EMIFA_0_REGS, EMIFA_CHIP_SELECT_2, // Device Interfaced on CS2 EMIFA_DATA_BUSWITTH_16BIT);
/*选着Normal模式*/ //This function selects the aync interface opmode. EMIFAAsyncDevOpModeSelect(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_ASYNC_INTERFACE_NORMAL_MODE);
/*禁止WAIT引脚*/ //This function configures the extended wait cycles to the device. EMIFAExtendedWaitConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_EXTENDED_WAIT_DISABLE);
/*配置W_SETUP/R_SETUP W_STROBE/R_STROBE W_HOLD/R_HOLD TA等参数*/ //This function configures the wait timing for the device interfaced on csNum. EMIFAWaitTimingConfig(SOC_EMIFA_0_REGS,EMIFA_CHIP_SELECT_2, EMIFA_ASYNC_WAITTIME_CONFIG(2, 3, 2, 2, 3, 2, 0 ));
这是EMIFA访问FPGA的初始化,是否对NANDFLASH或者NORFLASH之类的都按这样的初始化流程后,就可以实现正常的读写操作了呢?
因为TI提供的C:\ti\C6748_StarterWare_1_20_04_01\examples\evmC6748\nand下的例程,思路并不是那么清晰。
Denny%20Yang99373:
回复 shouyi hu:
连FPGA的初始化和NOR应该是差不多的。
NAND可能有点不一样,具体可以看看不同的DEMO代码
shouyi hu:
回复 Denny%20Yang99373:
好的,谢谢