初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2020-9-24
- 在线时间
- 25 小时
|
15金钱
大佬们,我最近有个需求,要用单片机对一个正负电压信号实现不低于500kHz的采样。之前我是用F407内部ADC+DMA+外部模拟偏置电路实现的;现在我想提高采样精度,准备用STM32控制TI的ADS8681芯片(SPI接口,双极性输入,最高1M采样率),实现高速正负电压采样。
但是因为之前对SPI不太了解,本来我想的是同样通过SPI+DMA实现高速数据采集,但是在实操过程中遇到很大的问题:
1.ADS8681只能作为SPI从机,需要单片机执行SPI_TransmitReceive_DMA才能产生SPI时钟,无法像ADC一样等待数据到来;
2.ADS8681需要单片机在CONVST引脚上输出低电平信号,启动转换,转换完成后ADC拉低RVS引脚作为指示信号,之后单片机才可以读取数据。
本来我的想法是通过定时器固定输出一个1MHz的PWM信号接到CONVST引脚,控制ADC固定1M采样率,通过计算ADC的转换完成时间调整占空比;数据读取方面使用SPI-DMA循环模式读取数据就可以了。但是后面发现SPI的DMA循环模式好像是没有办法调节每次操作之间的时间间隔,我用SPI_TransmitReceive_DMA的话相当于是一股脑把设定次数的SPI读和写全部完成了,完全没办法按照1MHz的固定频率来进行。
请问大佬们对于这个问题有没有什么好的解决办法呢?如果想用外置ADC实现这样500kHz及更高采样率的采样,除了使用FPGA以外,有办法通过单片机来实现吗?
|
|