我使用arm3354与FPGA通信,使用GPMC,8位数据位,3位地址位,异步通信,驱动实现mmap函数,用mmap映射的地址去操作,现在已实现 正确的读写FPGA,但是每次读的时候,监视总线,总会看到它读了四次,而我的应用程序只是读了一次。
以下是寄存器配置
这是检测到的总线变化,读了四次。
请哪位朋友给我看看,给点意见和建议谢谢!
hongzheng liu:
写的时候 都是正常的,就是读 ,我应用程序读了一次,而波形显示却是读了四次!很奇怪!
leo chen:
回复 hongzheng liu:
片选信号现在是什么状态,能不能抓一下
hongzheng liu:
回复 leo chen:
最上边的就是片选信号,我设置的片选和读使能信号是一模一样的。
hongzheng liu:
回复 leo chen:
这四条时序依次是 片选 ,读使能 , 地址,数据。
hongzheng liu:
我赶脚 是我的寄存器设置的问题 但我现在找不到是哪的问题!
hongzheng liu:
请各位大侠 帮帮忙啊 我现在 就读一个也会读32个地址,现在正在试验读64个会出现什么现象。
Steven Liu1:
回复 hongzheng liu:
片选感觉怪怪的,好像有问题的样子。你看一下TRM的7.1.5.1.4 GPMC Configuration for Asynchronous Read Access节的内容,确认一下当前的配置信息是否正确。
Jian Zhou:
回复 Steven Liu1:
我感觉如果你要是每次读一个int型的变量,那么实际上是32位,FPGA是8位的肯定要度4次啊。
你每次读出来的数据是正确数据吗?
hongzheng liu:
回复 Jian Zhou:
数据读到的都是正确的,我读的不是int型,而是char型,后来我又给换成了16位数据线,读short型,它也是多读了,32个地址,到了最高地址就又回到地址0。
Jian Zhou:
回复 hongzheng liu:
感觉还是和GPMC的工作方式的配置有关,是不是配成burst读模式了,有看过我们TRM上的时序图么?