1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
FPGA当作RAM挂在am3354的GPMC上。数据位是16bit的,地址用的是A0到A11。片选用的CS0,异步读写。GPMC上没有NAND等其他东西,只有个FPGA。引脚如图
问题就是:读写都没问题,但是读写地址超过0x800时,地址线A11没有变化,其他地址位都会有变化。 举个例子:往0xC22的地方写0x1234,signaltag抓回来的信号如图 写入的地址显示是0x422,最高地址位A11没有输出高电平。 1.已经再三检查过管脚复用的配置,GPMC_A11管脚就是配成A11,也读取过引脚配置寄存器查看过没问题。 2.把GMPC_A11配成GPIO输出高电平,sinaltag能捕获到。也试过将GMPC_A11配成A11的地址位加上上拉输出使能,发现低地址时A11也一直是高电平,感觉就没有输出。 3.在linux阶段跟uboot阶段都试过读写,一样A11没有任何反应。 管脚配置代码如下: static struct pinmux_config fpga_pin_mux[] = [ ["gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad8.gpmc_ad8", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad9.gpmc_ad9", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad10.gpmc_ad10", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad11.gpmc_ad11", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad12.gpmc_ad12", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad13.gpmc_ad13", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad14.gpmc_ad14", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_ad15.gpmc_ad15", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_a0.gpmc_a0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a1.gpmc_a1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a2.gpmc_a2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a3.gpmc_a3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a4.gpmc_a4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a5.gpmc_a5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a6.gpmc_a6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a7.gpmc_a7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a8.gpmc_a8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a9.gpmc_a9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a10.gpmc_a10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_a11.gpmc_a11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT], ["gpmc_wait0.gpmc_wait0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_wpn.gpmc_wpn", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP], ["gpmc_csn0.gpmc_csn0", OMAP_MUX_MODE0 | AM33XX_PULL_DISA], ["gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA], ["gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA], ["gpmc_wen.gpmc_wen", OMAP_MUX_MODE0 | AM33XX_PULL_DISA], ["gpmc_ben0_cle.gpmc_ben0_cle", OMAP_MUX_MODE0 | AM33XX_PULL_DISA], [NULL, 0],]; |
|
相关推荐
10个回答
|
|
|
|
|
|
sczclever 发表于 2018-5-15 11:11 确认几个信息,你是不是在当前片选的CONFIG0上已经配成了NOR flash类型的device,然后,16位数据线,地址数据不复用? 在你的这个测试里面,除了GPMC_A11管脚,其他的pin脚都是正常的? 看你原理图上面的是16位数据宽度,data线从0~15都用上了,如果找这样配置的话,地址线的最低位A0,应该是GPMC_A1这个脚,GPMC_A0这个脚在这种配置模式下应该是没有使用的,参考TRM手册的7.1.3.1 gpmc signals。但你原理图上面把GPMC_A0接出来了,确认没用错吧。 |
|
|
|
hwjj940056201 发表于 2018-5-15 11:16 确认了GPMC_CONFIG1配的是Nor flash,16bit数据,Non-multiplexed attached device。 A0接到FPGA了,后来发现16bit数据的模式A0没有用,所以没有去理它,纯粹就是连了根线。 除了A11管脚,其他都能用,所以觉得很奇怪。 我看手册gpmc模块中,地址ADD[10:1]跟ADD[27:11]分成两个部分,是不是这个有什么玄机啊。 求教,我已经把能我考虑的点都考虑过了。 |
|
|
|
sczclever 发表于 2018-5-15 11:24 没什么玄机,你看下TRM手册的table 7-5,复用的16bit 模式,其中GPMC_A10之后不是连续的。所以在这里写开了。 Pinmux通过寄存器打印的方式也核查了没问题? 你有没有连接gpmc_a12 pin出来?你的寻址空间分了16MByte,你配成的非复用模式下,这才用到了几KB。鉴于A11是你目前用到的最高位,如果有可能的话,测一下A12,看对这里的读写是否正确? |
|
|
|
hwjj940056201 发表于 2018-5-15 11:33 问题解决了,在配置gpmc各个寄存器之间写GPMC_SYSCONFIG 进行软复位,然后A11管脚就有输出了。 不过现象还是蛮奇怪的,所以编程还是地按流程来。 |
|
|
|
hwjj940056201 发表于 2018-5-15 11:33 问题解决了,在配置gpmc各个寄存器之间写GPMC_SYSCONFIG 进行软复位,然后A11管脚就有输出了。 不过现象还是蛮奇怪的,所以编程还是地按流程来。 |
|
|
|
sczclever 发表于 2018-5-15 11:54 |
|
|
|
楼主的驱动是基于哪个版本的kernel写的?我现在遇到一个问题就是把你初始化的那部分修改为了dts文件,加载ko,再进行写数据的时候,数据位全部变低,但是CSN1还是高电平,麻烦楼主分享下哈. |
|
|
|
yh3091876423 发表于 2018-5-15 12:26 3.2.0的版本,这版本TI还没用设备树。我的驱动是基于这个改的http://bbs.eeworld.com.cn/thread-333652-1-1.html。 你确认pinmux管脚复用设置对了,GPMC_CONFIG1i和GPMC_CONFIG7i这两个寄存器设置对了,就基本会有反应的。 |
|
|
|
sczclever 发表于 2018-5-15 12:37 我的复用也是基于你说的这篇帖子做的,只是将帖子中楼主的复用配置写到DTS中去了,驱动也是帖子中的驱动,加载驱动后,写数据前,AD位和CSn1(P8-21)位都为高,写数据后,AD位都为低,但是CSn1位还是高,BTW,楼主的3.2.0的版本可以跑在beaglebone black的板子上不?我QQ:40693489,希望楼主加下,请教下!多谢! |
|
|
|
只有小组成员才能发言,加入小组>>
332 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
772 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1124 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
54浏览 29评论
92浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
248浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
196浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
54浏览 13评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 21:15 , Processed in 0.904966 second(s), Total 65, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号