ti工程师,您好
我们的产品开发现在有一个需求,使用AM445X系列cpu直接通过类似spi接口来连接ad芯片采集数据,cpu要跑linux内核
因为外部不想加fpga或者cpld做粘合,所以想问一下,有什么办法能让cpu直接操作ad采集,同时又要保证采样率的准确和稳定性
能挂载一个ad芯片就够用,采样率不超过200khz
之前考虑过一个方案是edma+spi控制器的方式自主读ad数据,不知道是否可行
请给我们一个建议
Jian Zhou:
目前Linux下的SPI驱动就是EDMA方式驱动的,因此直接用SPI挂载一个高速AD采样芯片就可以。
luo qi:
回复 Jian Zhou:
感谢您的回复
还有个疑问,spi控制器里我没看到如何控制2次spi间隔的方法,比如40us发送一次申请
不知道您有什么建议么
Jian Zhou:
回复 luo qi:
具体是想怎么控制数据发送呢?应用层控制还是驱动层控制?
luo qi:
回复 Jian Zhou:
40us的采集间隔靠驱动或者应用层是不是对cpu来说负荷太大了?
我想edma能不能和spi配合起来实现40us间隔的信号采集,直接放到内存里,攒够一定量的数据后,然后cpu根据edma中断来处理数据
Jian Zhou:
回复 luo qi:
这个只能优化底层驱动,也要看看用层跑的程序多不多。
luo qi:
回复 Jian Zhou:
其实我有点疑问,比如操作系统上运行一个录音程序,那么音频信息如何进入cpu呢?
如果要cpu控制音频采集那就太不合理了,应该有类似于dma的方式直接把音频数据存储到ddr里的方法吧?
Jian Zhou:
回复 luo qi:
这种底层驱动的话,如果是数据采集功能,一般还是会用EDMA方式传输的。
实际上,Linux SDK的驱动层,SPI和MCASP(audio)还都是EDMA传输方式,请参考:
http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.11_Features_and_Performance_Guide#Device_Driver_List
luo qi:
回复 Jian Zhou:
好的,感谢回复,我试一下
稍后来结贴报告
leo chen:
回复 Jian Zhou:
200K速度不低了,用dma模式试试吧