完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
请教大侠们。我使用microchip单片机控制ads1248进行ad转换。分别使用单片机spi接口和io模拟spi接口均能够正确读写ad寄存器数据。使用外部参考2.5v和外部激励19.5mA。读取ad转换结果值基本稳定,但是跟实际输入电压值不符,相差较远。根据手册描述,采用单次采样,start给个脉冲,然后监控DRDY低电平后,给出RDATA指令,然后在连续读取三个字节转换结果。通过示波器观察波形,跟手册中的时序图基本一致。但是转化结果跟实际输入相差很大,更换电阻采样结果也会随着阻值改变而改变,仍然不正确。附件是电路图截图。主要ad控制时序代码见下: ADC_CS = 0; spi_write(0x40|SYS0); spi_write(0x00); spi_write(0x15); //PGA = 2;DOR = 160 ads_ReadReg(SYS0,1,&data); ADC_CS = 1; ADC_START = 0; /*ads convert test */ //第一步:通道切换 CTRL_CH_SEL = 0; //第二步:引脚切换,DUT pos = 1; neg = 2; BridgeSwitch(pos,neg,ON); //第三步:加载激励电流 CTRL_CUR_SW = ON; //第四步:采集电压 for(int i = 0; i<100;i++) { ADC_START = 1; ADC_CS = 0; regdata = (AN0 << 3) + AN1; ads_WriteReg(MUX0,1,®data); ads_ReadReg(MUX0,1,&data); ADC_CS = 1; delay(10); ADC_START = 0; //4.3等待DRDY变电平 while(ADC_DRDY == 1); ADC_CS = 0; delay(10); spi_write(RDATA); MSB = spi_read(); MID = spi_read(); LSB = spi_read(); ADC_CS = 1; buf[0] = (MSB << 16) +(MID << 8) + LSB; ADC_START = 1; ADC_CS = 0; regdata = (AN2 << 3) + AN3; ads_WriteReg(MUX0,1,®data); ads_ReadReg(MUX0,1,&data); ADC_CS = 1; ADC_START = 0; //4.3等待DRDY变电平 while(ADC_DRDY == 1); ADC_CS = 0; spi_write(RDATA); MSB = spi_read(); MID = spi_read(); LSB = spi_read(); ADC_CS = 1; buf[1] = (MSB << 16) +(MID << 8) + LSB; 请各位大侠不吝赐教,感激之至!! |
|
相关推荐
3个回答
|
|
|
你的输入通道AIN1 与AIN0是什么?参考电压用的是REFP0与REFP1之间电压吗?AIN7与AIN4不能接地和悬空,要保证有一个合适的共模电压。可以尝试减小一下滤波的5.1k电阻,试一下。
|
|
|
|
|
|
|
|
|
|
|
|
根据您的描述,您已经正确地使用单片机SPI接口和IO模拟SPI接口读写AD寄存器数据,并且AD转换结果值基本稳定。但是,实际输入电压值与转换结果相差较大。以下是一些建议,以帮助您解决问题:
1. 检查参考电压:确保您的外部参考电压2.5V是准确的。您可以使用万用表测量参考电压,确保其在规定的范围内。 2. 检查输入信号:确保您的外部激励19.5mA是准确的。您可以使用电流表测量激励电流,确保其在规定的范围内。 3. 检查ADS1248配置:请仔细检查您的ADS1248配置,确保您已正确设置采样率、增益和其他相关参数。您可以查阅ADS1248的数据手册,了解如何正确配置这些参数。 4. 检查代码:请仔细检查您的AD控制时序代码,确保您已正确实现ADS1248的时序要求。您可以查阅ADS1248的数据手册,了解时序要求,并与您的代码进行对比。 5. 检查电路:请检查您的电路连接是否正确,特别是ADS1248的引脚连接。确保没有短路或断路的情况。 6. 检查电源:确保您的单片机和ADS1248的电源电压稳定且在规定的范围内。不稳定的电源电压可能会影响AD转换结果。 7. 尝试不同的采样模式:您可以尝试使用不同的采样模式,例如连续采样或差分采样,看看是否能得到更准确的结果。 8. 检查代码逻辑:请检查您的代码逻辑,确保您正确地处理了AD转换结果。例如,您需要将转换结果转换为实际电压值,这可能涉及到一些数学运算。 如果以上建议都无法解决问题,您可以尝试在论坛或社区寻求帮助,或者联系ADS1248的制造商寻求技术支持。希望这些建议能帮助您解决问题。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
584 浏览 0 评论
1641 浏览 0 评论
2080 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1533 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1372 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1782浏览 29评论
2810浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1742浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1653浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1670浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 17:34 , Processed in 0.648108 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
352