This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3358接收16位AD信号,从USB接口转发给上位机应该如何设计?

Other Parts Discussed in Thread: AM3358

我的任务是用am3358开发板做一个方案,在linux下运行,作为USB从机。

工作原理:AM3358接受某探测器的16位A/D信号,再把这个信号从USB转发给上位机(不需要储存),A/D信号采样最小周期约600ns,开发板通过SPI接口控制探测器。

我目前不清楚,用那个接口接收A/D信号合理一些?

还有,如何使数据的转发速度能够跟上探测器过来的数据?

因为刚刚接触AM3358,对这些问题不清楚,请提供一个大致方向,谢谢!

  • 你这里,说的开发板通过SPI接口控制探测器,是只是控制和设置是吧,然后返回值是有一组16位A/D信号,这个信号是不是就是0/1状态,还是要做AD采样?

    如果是前者,考虑GPMC接口就可。后者,我们只有8个通道的ADC采样。

  • 谢谢你的回复。

    是的,开发板(英蓓特Devkit8600)通过SPI控制FPGA,然后FPGA提供时序信号控制探测器,探测器出来的模拟信号进入16位的A/D,然后开发板接收这个16位的A/D数字信号,然后通过开发板的USB接口转发给上位机,开发板只负责这两个任务,使用linux系统。

    有以下几个问题:

                              如果前端A/D的数据量很大,是否可以通过EDMA读出GPMC然后提供给USB,使数据不经过CPU,提升数据转发速度,这个理解是否正确?

                              目前我们的A/D采样频率是10kHz,将来会有更高频率的需求,那么GPMC接口可以接受的最高的A/D频率能够到多少?

                              我手头没有以上相应的示例代码,去哪里可以找到?

  • 1. 从理论上来说是可以这样的。

    2. 根据我的理解,你这个所谓的接收的频率对应过来的就是GPMC的FCLK所带来的数据读写的时钟周期,GPMC_FCLK最大能到100M的,所以如果只是采样10K这个级别,应该是没问题的。

    3. 这个是没有现成的,需要自己编写。但是对于EDMA的运用,可以参考Starterware下面的UART_EDMA;对于GPMC的使用,这个应该是跟NOR flash的方式类似的,直接参考NOR flash的驱动就可以。

  • 好的,非常感谢你的答复。

  • 10Khz并不高啊,直接通过usb是可以传出去的