你好!我现在用am1808的emif口作为数据总线传输信号,数据位宽为16bit。将ASIZE设置为16-bit data bus,发现在读写的时候,每读写一次读写使能信号出现使能两次。比如我在读的时候,用示波器抓取CS使能信号及WE使能信号,读一次,在CS使能期间,会出现两次WE使能。另外我将ASIZE设置为8-bit data bus,读一次,在CS使能期间,会出现四次WE使能。然后我将ASIZE设置为2时,读一次,在CS使能期间,就只会出现一次WE使能,但是低位地址线EMA_BA就被禁止了。请问是不是还有其他地方需要配置数据宽度,使得数据位宽为16bit时,只出现一次读写使能?
下面是ASIZE配置
ASIZE 0-3h Asynchronous Data Bus Width. This field defines the width of the asynchronous device's data bus.
0 8-bit data bus
1h 16-bit data bus
2h-3h Reserved
另外,SDRAM Configuration Register (SDCR)中有个NM参数,改变这个设置也没有任何变化
NM Narrow mode bit. This bit defines whether a 16- or 32-bit-wide SDRAM is connected to the EMIFA.
This bit field must always be set to 1. Writing to this field triggers the SDRAM initialization
sequence.
0 32-bit SDRAM data bus is used.
1 16-bit SDRAM data bus is used.
jia lu:
有没有大神帮忙解答一下
Jian Zhou:
请问您是用emif接什么外设,感觉这个时序是对应DDR的。
jia lu:
回复 Jian Zhou:
感谢回答!接了一个网口芯片,作为数据通信。我也觉得像是对应一个传送32bit的DDR,如果要接一个16bit的外设,该怎么设置?
Jian Zhou:
回复 jia lu:
建议你看下AM1808的TRM的19章,用异步接口去控制
jia lu:
回复 Jian Zhou:
这个我都看了,也都是按照异步来设置的,上面那个参数就是异步设置的,但是结果却不对
jia lu:
回复 jia lu:
哎,感觉TI这个论坛已经没什么用了,问了很多问题,没有一个问题得到解决。。。。
Ke Lee:
回复 jia lu:
你好,我想请问一下EMIF口接异步时,那些AWE和AOE是如何控制的
Tony Tang:
Jia Lu,
#1. 根据上面的描述,我想你是在做32-bit访问的时候观察到这个现象的,首先来说,你观察到的现象是正确的。因为AM1808的EMIF是16bit宽的,也可配置成8 bit使用。
#2. 当做EMIF访问时,CPU送出访问命令给EMIF,接下来的就是EMIF自己完成了。当是一个32bit访问时,EMIF为16bit宽时,则分为2次16位连续访问,即CS为低,WE或OE送出2次。这个操作是EMIF分解的,与CPU没有关系。
#3. 如果一定要得到一个CS出现一次读写使能,那么在你的代码中,对赋值对像设为16位的short型即可。
另个SDRAM的配置只影响CE0,与其它片选的表现无关。
Tony Tang:
回复 Ke Lee:
Ke Lee你好,我想请问一下EMIF口接异步时,那些AWE和AOE是如何控制的
Ke Lee,
AWE和AOE是接口根据读还是写操作送出的控制信号,并不需要人为控制,这是异步接口的标准信号。对于异步接口,只需要根据所接外设的时序要求,换算成EMIF相应的setup, strobe, hold参数即可。
Ke Lee:
回复 Tony Tang:
非常感谢!
我现在是想用6713EMIF接一个多通道DA,我采用EMIF的低3位地址线控制通道转换,对地址线怎么控制有点儿困惑
EA=0x00;EA=0x01;EA=0x02;……这样写吗?地址变量是EA吗还是其他?有没有类似的例程?