小弟最近在linux下做一个驱动,OMAP3530通过GPMC与FPGA进行通信,速度要求为大于20.48MByte,我想通过异步的方式进行传输。通过配置,从ARM端得到了一个稳定的时序如图:
下载附件 (46.25 KB)SignalTap II得到的时序图
我的配置如下:
#define FPGA_GPMC_CONFIG1 0x00001000
#define FPGA_GPMC_CONFIG2 0x000a0a00 //CSRDACCESSTIME=10, CSWRACCESSTIME=10
#define FPGA_GPMC_CONFIG3 0x00020200 //ADVRDOFFTIME=2, ADVWROFFTIME=2
#define FPGA_GPMC_CONFIG4 0x08050805 //OEOFFTIME=8, WEOFFTIME=8, OEONTIME=5, WEONTIME=5
#define FPGA_GPMC_CONFIG5 0x00080b0b //RDCYCLETIME=11, WRCYCLETIME=11#define FPGA_GPMC_CONFIG6 0x08000000 //WRACCESSTIME=8
我的问题如下,如图,我设置的是两次连续读取之间的时间间隔为0,得到的时序中可以看到,两次CS拉低之间有很长一段高电平,占用了大量的时间,远远达不到20M的要求。一时间找不到原因。
noaming:
两次连续读取之间的时间间隔不能设置到0,这个是芯片GPMC访问本身的局限。
xia Lee:
用DSP控制应该可以做到,我这边CS的波形是完全没有间隔的
xin liu1:
您好,请问楼主,GPMC里的GPMC_CONFIG1-GPMC_CONFIG7
这些时间参数是如何计算出来的?
CSRDACCESSTIME=10, CSWRACCESSTIME=10
ADVRDOFFTIME=2, ADVWROFFTIME=2
OEOFFTIME=8, WEOFFTIME=8, OEONTIME=5, WEONTIME=5
RDCYCLETIME=11, WRCYCLETIME=11 ?
Feng Dong:
回复 xin liu1:
若想提高速度应该用同步而不是异步时序
Devin:
回复 noaming:
你好,我试过不设置为0,但是也不行,始终不能将片选的高电平的宽度降低,有没有可能是我在驱动中读取的函数ioread16_rep(info->IO_ADDR_R, kern_buf, len/2);在两次读取时所占用的时间太长呢?
Devin:
回复 xia Lee:
DSP啊,这个确实还不太了解,可以再讲得详细点么?谢谢!
Devin:
回复 Feng Dong:
我已经修改配置为同步了,但是还是一样!不知道问题出在哪里。
Devin:
回复 xin liu1:
首先是看芯片手册,手册上面有相关的时序,至于那些参数,我的理解是GPMC_FCLK的个数。
Devin:
回复 xia Lee:
小弟初学,所以还不太会,还向您多请教一下,DSP如何去控制?
Feng Dong:
回复 Devin:
你看手册的同步burst的实现,一次读取更多的数据,另外同步输出时钟是可以调整的
相关推荐
- 自己焊接的DM8168板,CCS5.4+20pinJTAG测试DDR,程序成功下载,运行是出现如下错误,是硬件问题吗?
- davinci的DM81xx是dm64xx的升级吗?但是从datasheet看dm8没有vpif接口
- 咨询TMS320DM642上电时序的问题
- 使用dm385进行图像采集编码,热插拔摄像头会导致程序崩溃,这种情况有办法解决吗?
- 请教,ccs3.3打开报错,无法使用。请问是什么问题?
- 请教,ccs3.3打开报错,无法使用。请问是什么问题?
- 请教,ccs3.3打开报错,无法使用。请问是什么问题?
- 使用官網的am335x-evm-linux-06.03.00.106.img開機會有 kernel panic