HSPI的DMA数据和USB3.0的DMA数据是怎么交互的?

最近有个项目想实现USB3.0和FPGA的双向高速通讯,查到贵公司的CH569比较合适,查看了相关资料和例程,明白数据从HSPI接口通过DMA到RAMX,也能够明白USB3.0数据通过DMA到RAMX,但是两个不同的RAMX地址数据是怎么交互的?HSPI的DMA和USB3.0的DMA怎么怎么连一起的?例程没有相关说明,麻烦帮忙指导一下,如果有USB3.0到HSPI的例程就更好了!

外设在初始化的时候需要配置DMA目标地址,当然也可以在传输过程中配置DMA地址。

规划环形缓冲区,交替的在传输完一包数据后修改DMA偏移来实现数据交互。RAMX没有限制访问,外设都是可以调用DMA访问任意地址的。


HSPI采用双缓冲,一个缓冲填满之后,启动USB3.0的DMA将缓冲的数据上传给PC机,USB3.0的DMA首地址和填满的HSPI缓冲的首地址一样!是这个思路吧?我看例程上,USB的收发缓冲是同一个,能否分开成2个独立的缓冲?


是的。核心思路就是避免出现memcpy类的CPU执行的复制操作,修改DMA地址可以将代码开销做到最小。


楼主你好!我对FPGA熟悉,C语音实在不懂,断断续续搞了这么久还是没有搞定!您那里有现成的例程吗?基于CH569芯片,USB和HSPI之间高速双向通讯。HSPI端,master和slave!我的邮箱是个人信息保护,已隐藏万分感谢!


只有登录才能回复,可以选择微信账号登录