CY7C68013 GPIF模式

用了gpif模式,该模式,在实现上位机传输command命令方面,具有很好的实用性。不过这个芯片入门时间需要的久一点,开始一头雾水。但对软件整体思路的理解很重要。。根据我的经验,总结如下几步 分享一下,给新接触迷茫的人:

(1)  配置endpoint,这些是基础,是实现具体软件功能的硬件设备(endpoint)的初始化配置。。。。。包括几个寄存器:EPxCFG(配置EPx的缓存大小,个数,以及out还是in),outpktend(清除EPx的缓存,具体解释见芯片说明书),EPxFIFOCFG(配置EPx自动还是手动的commit模式,一般fifo大量数据传输可自动),EPxGPIFFLGSEL(配置在waveform中,终止的flag标志选择,如果不配置,就要配置传输的次数数量,见下(3)),可能还有其它的 但主要是这几个。

这些都是初始化函数TD_INIT里面

(2)配置waveform(就是状态机,及不同状态机情况下 芯片的输出值,从状态0到状态6),这一步,就是实现GPIF模式下(还有一种模式是slavefifo),状态机及不同状态下的ctl和data数据线的输出的配置。通过官方的 GPIF Designer实现,可视化界面 比写c文件简单多了,配置完 输出c文件,一起放到固件文件系统中,和固件c文件一起编译。。。这部分参考芯片说明书, 一目了然;

(3)在td_poll函数中,启动waveform(包括终止waveform过程):waverform一共有四种模式(固定的,每一种模式的启动都不一样,因此 四种waveform可以同时存在,程序知道执行哪个waveform):对于single write和single read,需要往xGPIFSGLDATLX寄存器中写数据,然后启动,waveform执行一次 结束 。。还要循环往寄存器写入,所以写寄存器的逻辑放在td_poll函数文件中;对于fifo write和fifo read,需要往GPIFRIG中写数据,然后启动,至于waveform什么时候结束,要看你是定义了需要传输的字符数 还是定义的是fifo flag满足条件就终止。二者选一个就行。

当然,上面的启动waveform的写操作 需要在某些条件满足情况下(条件语句),比如fifo不是空,有数据需要输出等。

总体是上述三步。。理解了整体思路,在具体操作中 参考芯片说明书操作即可。理解思路和过程就成功了一大半。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值