我的任务是用am3358开发板做一个方案,在linux下运行,作为USB从机。
工作原理:AM3358接受某探测器的16位A/D信号,再把这个信号从USB转发给上位机(不需要储存),A/D信号采样最小周期约600ns,开发板通过SPI接口控制探测器。
我目前不清楚,用那个接口接收A/D信号合理一些?
还有,如何使数据的转发速度能够跟上探测器过来的数据?
因为刚刚接触AM3358,对这些问题不清楚,请提供一个大致方向,谢谢!
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开发板做一个方案,在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的驱动就可以。