发布时间:2022-11-21 18:00
ADS8329 是一款具有单极性输入的低功耗、16 位、1MSPS 模数转换器 (ADC),同时具有采样保持功能。
电路板文件和STM32程序文件在立创开源平台,https://oshwhub.com/yang9536/ads8329
注意事项:
1.此ADC的最高采样速率为1M,16bit的SPI串行输出,所以SPI的速率会很高,本次的SPI_CLK为21M,采集1M信号已经较为勉强。
2.多芯片的同步采样时,一定要注意SPI的速度,或是用一个引脚控制采样保持,多路SPI分别读取数据。
3.CS片选,每次读写数据的时候一定要拉低再拉高,一次拉低后发多个指令会导致无响应。
4.SPI配置寄存器很简单,单芯片采集几乎不用配置,注意控制信号的时序即可完成。
5.硬件方面,要注意SPI线尽量短且等长,并在接收端并联pf级别的小电容,减少信号过冲造成的电磁干扰。(优化方向)
6.注意ADS8329芯片供电要求,①+VA = 4.5 V to 5.5 V, +VBD = 1.65 V to 5.5 V, VREF = 5 V, and fSAMPLE = 1 MHz,或者②+VBD = 1.65 V to 1.5×(+VA), VREF = 2.5 V, fSAMPLE = 1 MHz for 3 V ≤ +VA ≤ 3.6 V。项目中使用②方案供电。另外注意模拟输入范围0~VREF。
硬件电路
设计比较简单,仪表差分,放大2倍,注意信号范围0-2.5V,不要接入负电压。电压基准是REF3025,LDO稳压芯片是低噪声高PSRR的LP5907MFX。
keil程序
使用了TIM3作为同步采样的触发,在MX_TIM3_Init配置,计数值84为1us采样周期,计数值168为2us采样周期。在ADS8329_Init开启了时钟
使用SPI3读写ADC寄存器,配置在MX_SPI3_Init,在ADS8329_Init开启了SPI并配置了ADC.
在定时器中断中,进行了引脚时序控制,TIM3_IRQHandler函数。换主频或者主控时,建议使用示波器或者逻辑分析仪核对时序。
程序加了较多注释,如有不懂,欢迎交流
实测结果
输入使用了电阻分压1/2,放大2倍,所以实测结果与示波器一致
下图为两个ADC芯片级联,500k采样速率,采集50k的信号。