根据您提供的信息,您在使用STM32F103的SPI3与ADS1248通信时,读取的ADC值波动很大,甚至出现负值。以下是一些可能的原因和解决方案:
1. 硬件连接问题:请确保您的硬件连接正确,包括电源、地线、SPI接口等。您可以使用万用表检查连线是否正确连接,确保没有短路或断路。
2. 时钟问题:请检查您的STM32F103的SPI时钟设置是否正确。确保SPI时钟频率与ADS1248的时钟频率兼容。您可以在STM32F103的SPI配置中设置时钟频率,以确保与ADS1248的时钟频率匹配。
3. ADS1248配置问题:请检查您的ADS1248配置是否正确。根据您的描述,您已经设置了MUX1为0x37,使用内部时钟、内部参考源、参考源一直开启、system monitor选择DVDD测量。请确保这些设置正确无误。
4. 温度传感器问题:您提到使用了四线制温度传感器,并且采用了Burnout Current source检测温度传感器是否连接。请检查温度传感器的连接是否正确,以及Burnout Current source是否正常工作。
5. 读取ADC值函数问题:您提到了读取寄存器的函数为u8 ADS1248_ReadR。请检查该函数的实现是否正确,确保SPI通信正常进行,并且正确读取ADC值。
6. 干扰问题:请检查您的电路是否存在电磁干扰,这可能导致ADC值波动。您可以尝试使用屏蔽线、地线等方法减少干扰。
7. 软件滤波:如果硬件连接和配置都正确,您可以尝试在软件层面对ADC值进行滤波处理,以减少波动。例如,您可以使用滑动平均滤波、中值滤波等方法。
综上所述,您需要检查硬件连接、时钟设置、ADS1248配置、温度传感器连接、读取ADC值函数以及干扰问题。如果问题仍然存在,您可以尝试在软件层面对ADC值进行滤波处理。希望这些建议能帮助您解决问题。
根据您提供的信息,您在使用STM32F103的SPI3与ADS1248通信时,读取的ADC值波动很大,甚至出现负值。以下是一些可能的原因和解决方案:
1. 硬件连接问题:请确保您的硬件连接正确,包括电源、地线、SPI接口等。您可以使用万用表检查连线是否正确连接,确保没有短路或断路。
2. 时钟问题:请检查您的STM32F103的SPI时钟设置是否正确。确保SPI时钟频率与ADS1248的时钟频率兼容。您可以在STM32F103的SPI配置中设置时钟频率,以确保与ADS1248的时钟频率匹配。
3. ADS1248配置问题:请检查您的ADS1248配置是否正确。根据您的描述,您已经设置了MUX1为0x37,使用内部时钟、内部参考源、参考源一直开启、system monitor选择DVDD测量。请确保这些设置正确无误。
4. 温度传感器问题:您提到使用了四线制温度传感器,并且采用了Burnout Current source检测温度传感器是否连接。请检查温度传感器的连接是否正确,以及Burnout Current source是否正常工作。
5. 读取ADC值函数问题:您提到了读取寄存器的函数为u8 ADS1248_ReadR。请检查该函数的实现是否正确,确保SPI通信正常进行,并且正确读取ADC值。
6. 干扰问题:请检查您的电路是否存在电磁干扰,这可能导致ADC值波动。您可以尝试使用屏蔽线、地线等方法减少干扰。
7. 软件滤波:如果硬件连接和配置都正确,您可以尝试在软件层面对ADC值进行滤波处理,以减少波动。例如,您可以使用滑动平均滤波、中值滤波等方法。
综上所述,您需要检查硬件连接、时钟设置、ADS1248配置、温度传感器连接、读取ADC值函数以及干扰问题。如果问题仍然存在,您可以尝试在软件层面对ADC值进行滤波处理。希望这些建议能帮助您解决问题。
举报