hi,all:
我现在遇到一个问题,自制的板子,从sd卡启动,不需要配GPMC的时序,am335x就可以和sc16c554正常通信。
从nand flash启动,am335x和sc16c554不能正常通信。
sc16c554的片选接gpmc cs3,会不会是gpmc 时序的问题,怎么去配置时序参数呢?
Jian Zhou:
NAND也是用GPMC的,很明显是,GPMC总线上有干扰。
你是Linux OS吗?最好先检查硬件然后再检查driver
Jian Zhou:
回复 Jian Zhou:
16C554的timming我已经配好了,可以读写,不知道你那边的进展如何?
xiaoning andy:
回复 Jian Zhou:
还没配好,你的timming能看一下么?
Jian Zhou:
回复 xiaoning andy:
如果用GPMC CS3做为16C554的片选寻址空间,那么驱动里需要单独配一下CS3的那7个寄存器,timming请参考:
.sync_clk = 0,
.cs_on = 0, .cs_rd_off = 90, .cs_wr_off = 70,
.adv_on = 0, .adv_rd_off = 15, .adv_wr_off = 15, .we_off = 65, .oe_off = 70,
.access = 90, .rd_cycle = 140, .wr_cycle = 90,
.wr_access = 90, .wr_data_mux_bus = 0,
xiaoning andy:
回复 Jian Zhou:
谢谢,我去试一下
xuegang zhou:
回复 Jian Zhou:
利用AM335X芯片的GPMC扩展8路串口,2400~57600bps条件下通讯收发均正常,在115200bps条件下出现误码,收到的数据通过485监测,数据是正确的,但在应用层读进来的数据,当接收的数据超过18个字节时,多了随机的00字节,请问一下这和读写时序有无关系!谢谢
监测到的数据帧:7E 32 30 30 31 34 30 30 30 30 30 30 30 46 44 42 39 0D
通过read读取的数据帧:7e 32 0 30 30 31 34 30 30 30 30 30 30 30 46 44 42 39
当向AM335X的扩展串口发送18个字节时,最后一个字节0D被截断,收到的数据第三个字节被00填充了,当接收的数据超过18个字节都会出现这种情况
Jian Zhou:
回复 xuegang zhou:
首先,您之前通过NAND加载程序后不能和16C554正常通信的问题已经解决了?是不是NAND驱动对GPMC重新做了初始化导致的?
我觉得波特率提高,应用层首发不正常,有可能是应用层的读写速度和16C554的收发速度匹配不上?
xuegang zhou:
回复 Jian Zhou:
我这里AM3352和TL16C554在2400~57600bps条件下通讯是完全没有问题的,只是在115200bps条件下出现丢包的情况,NAND和TL16C554对GMPC的初始化只进行了一次,没有重复初始化GPMC.
"有可能是应用层的读写速度和16C554的收发速度匹配不上"不知道你这里说的速度匹配不上作如何处理,read()只读一次,发送902个字节,只读到672个字节,这是出现丢包了,那该如何去控制应用层的read()呢?