adc采样的值跳动_请帮忙分析下ADS1248测PT100,读取的ADC值跳动较大?是什么原因?
本帖最后由 chen849928055 于 2018-3-20 16:12 编辑
碰到的问题:1.在调试过程中,首先是采集的ADC值乱跳,都几百1000多的跳, 后来发现把增益PGA设置为16以上,读到的值总为0x007FFFFF;PGA设置为1时,读取的ADC值接近自己实际计算的值;
查手册我的PGA设置为16以下, 共模电压(ADCINP + ADCINN)/2在共模范围之内。V IN = ADCINP – ADCINN是差模输入电压,可正可负,但它的绝对值要<=VREF/PGA
0.5
2:用示波器测试波形,SCK DIN DO写入读出的寄存器的值都是正确的;读取的ADC值波动这问题找了一个多星期了还没找到,望使用过ADS1248这类芯片的网友多指点指点,提提建议,先谢谢了!!!
1.先上原理图
2.下面是我的程序初始化:
/*********************************************************************************************************
* @Function Name: SPI_FLASH_Init
* @Description : SPI和GPIO初始化
* @param : void
* @retval : void
* @date : 2018/03/04 PA4->SPI0_SCK PA5->SPI0_MOSI PA6->SPI0_MISO PA7->SPI0_SEL
#define ADS1248_RST GPIO_PIN_2 PA
#define ADS1248_READY GPIO_PIN_3 PA
#define ADS1248_SCK GPIO_PIN_4 PA
#define ADS1248_DO GPIO_PIN_5 PA
#define ADS1248_DIN GPIO_PIN_6 PA
#define ADS1248_CS GPIO_PIN_7 PA
#define ADS1248_START PC12
注意一点:SCK时钟不能太快,必须小于2MHz,程序实际采用的时钟约1MHz. ADS1248芯片是在SCK下降沿采样数据.
********************************************************************************************************/
void SPI_FLASH_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
/* Enable AFIO & SPI SEL pin port & SPI clock */
CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
CKCUClock.Bit.PA = 1;
CKCUClock.Bit.SPI0 = 1;
CKCUClock.Bit.AFIO = 1;
CKCUClock.Bit.PDMA = 1;
CKCU_PeripClockConfig(CKCUClock, ENABLE);
/* Configure SPI SCK pin, SPI MISO pin, SPI MOSI pin */
AFIO_GPxConfig(GPIO_PA, ADS1248_SCK , AFIO_FUN_SPI);
AFIO_GPxConfig(GPIO_PA, ADS1248_DIN, AFIO_FUN_SPI);
AFIO_GPxConfig(GPIO_PA, ADS1248_DO, AFIO_FUN_SPI);
AFIO_GPxConfig(GPIO_PC, ADS1248_START , AFIO_MODE_DEFAULT); //START io初始化
GPIO_DirectionConfig(HT_GPIOC, ADS1248_START, GPIO_DIR_OUT);
AFIO_GPxConfig(GPIO_PA, ADS1248_RST , AFIO_MODE_DEFAULT); // RST io初始化
GPIO_DirectionConfig(HT_GPIOA, ADS1248_RST, GPIO_DIR_OUT);
GPIO_DirectionConfig(HT_GPIOA, ADS1248_READY, GPIO_DIR_IN); //输入 DRDY
GPIO_PullResistorConfig(HT_GPIOA, ADS1248_READY, GPIO_PR_UP); //设置上拉
GPIO_InputConfig(HT_GPIOA, ADS1248_READY, ENABLE); //上拉使能
/* SEL output inactive level */
// AFIO_GPxConfig(GPIO_PA, ADS1248_CS , AFIO_MODE_DEFAULT); //CS io初始化
ADS1248_CS_H();
GPIO_DirectionConfig(HT_GPIOA, ADS1248_CS, GPIO_DIR_OUT);
/* SPI Configuration */
SPI_InitStructure.SPI_Mode = SPI_MASTER;
SPI_InitStructure.SPI_FIFO = SPI_FIFO_ENABLE;
SPI_InitStructure.SPI_DataLength = SPI_DATALENGTH_8;
SPI_InitStructure.SPI_SELMode = SPI_SEL_SOFTWARE;
SPI_InitStructure.SPI_SELPolarity = SPI_SELPOLARITY_LOW;
SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_LOW ; // SCK 的下降沿被采集
SPI_InitStructure.SPI_CPHA = SPI_CPHA_SECOND;
SPI_InitStructure.SPI_RxFIFOTriggerLevel = 4;
SPI_InitStructure.SPI_TxFIFOTriggerLevel = 4;
SPI_InitStructure.SPI_ClockPrescaler = 36; /* 原来为2 72/2=36MHz, Normal Read frequency */ // 72/32=24/32=0.75MHz,ADS1248的SCLK最快约2MHz
SPI_Init(FLASH_SPI, &SPI_InitStructure);
SPI_SELOutputCmd(FLASH_SPI, ENABLE);
SPI_Cmd(FLASH_SPI, ENABLE);
}
void ADS1248_Init(void)
{
unsigned char temp;
SPI_FLASH_Init();
ADS1248_RST_L();
ADS1248_START_L();
ADS1248_Delay(4000);
ADS1248_RST_H();
ADS1248_START_H();
ADS1248_Delay(60000); //延时20ms;手册要求延时至少16ms
ADS1248_CS_L();
ADS1248_WriteREG(ADS_MUX0, 0x01);
ADS1248_WriteREG(ADS_MUX1, 0x30);//00110000,Bit7:启用内部晶振,Bit6-5:内部基准一直打开,Bit4-3:输入基准为片上基准,Bit2-0:普通模式
ADS1248_Delay(10000); //延时10ms
ADS1248_WriteREG(ADS_VBIAS, 0x00); //00000000,Bit7-0:偏置电压选择关闭(默认)
ADS1248_WriteREG(ADS_IDAC1, 0xFF); //11111111,Bit7-4:断开内部第一恒流源的连接,Bit3-0:断开内部第二恒流源的连接 0X8F打开第一内部恒流源
ADS1248_WriteREG(ADS_IDAC0, 0x08); //00001000,Bit7-4:只读,Bit3:DRDY/DOUT功能复用Dout线 ,Bit2-0:关闭内部恒流源
ADS1248_WriteREG(ADS_SYS0, 0x00); //00000000,Bit7:必须设置为0,Bit6-41:选择1倍增益,Bit3-0:选择5SPS测量速度
}
/*******************************************************************************
* @Function Name: ADS1248_ReadREG
* @Description : 写寄存器的第byteToRead个字节
* @param : u8 regName
* @param : u8 byteToRead
* @retval : u8
* @date : 2014/10/05
*******************************************************************************/
void ADS1248_WriteREG(u8 regaddr, u8 databyte)
{
//向寄存器写入数据地址
ADS1248_WriteByte(ADS_WREG+(regaddr&0x0f));
ADS1248_WriteByte(0x00);
//向regaddr地址指向的寄存器写入数据databyte
ADS1248_WriteByte(databyte);
}
adc采样的值跳动_请帮忙分析下ADS1248测PT100,读取的ADC值跳动较大?是什么原因?相关推荐
- linux xrdp 多人性能,关于XRDP的日志,请帮忙分析一下
关于XRDP的日志,请帮忙分析一下 发布时间:2015-04-09 22:17:06来源:红联作者:fengcloud centos6.5下载编辑安装XRDP 0.4.2版,在WINDOWS下用mst ...
- matlab里1stopt,请帮忙运行下1stopt 程序?(MATLAB没有解出结果)
问题描述:4个待拟合未知参数 n,v,c,s(实际有8个,这里先能拟合好4个就很不错了),五个已测变量cno,ctan,cchl,a,cdrp,三个ODE 方程.(已经尝试用过MATLAB求解,结果不 ...
- xtragrid 某个值 查找_二分查找(下):如何快速定位IP对应的省份地址?
通过IP地址来查找IP归属地的功能,不知道你有没有用过?没用过也没关系,你现在可以打开百度,在搜索框里随便输一个IP地址,就会看到它的归属地. 这个功能并不复杂,它是通过维护一个很大的IP地址库来实现 ...
- 两路音频合成一路电路_请高手指点下:两路模拟音频信号怎么样才能合成一路再通过喇叭输出...
请高手指点下:两路模拟音频信号怎么样才能合成一路再通过喇叭输出 nino61 Post at 2008/3/31 9:56:16 小弟,刚接触这方面的知识,不太懂,查了好多资料都没有收获, 希望好心人 ...
- 简单因式分解100道及答案_请帮忙出100道简单的初二因式分解题 (象x y类型) 急用!!!!!!!!1...
匿名用户 1级 2019-01-20 回答 http://wyzx.zjhyedu.cn/xkjd/sx/UploadFiles_4228/200804/20080407180802488.doc h ...
- java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序
在这篇文章中,您将学习如何使用Java对Map按照键或值进行排序.前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题.所以我决定写这样一篇文章.在Ja ...
- python中 a or b 的值为_若a=1, b=2,那么(a or b)的值为( )。 (2.0分)_学小易找答案...
[单选题]假设a=9, b=2,那么下面运算中,错误的是( ). (2.0分) [填空题]若a=10, b=20, 那么(a and b)结果为( ). (2.0分) [填空题]表达式 int('12 ...
- 计算机系统异常检测修复,原版64位win7刚刚出现windows已从异常关机中恢复,请帮忙分析原因?...
应该是 CBox 央视影音与显示驱动之间存在兼容问题.如果是前者的 BUG,可能通过升级版本解决:如果是显示驱动的问题,看看有没有其它版本的显示驱动可用.现在用的这个版本是从何获取的? Alexis ...
- android+webview+打不开,webview 在android下无法打开 ?是否为一个bug?请帮忙看下!谢谢!...
android 平台上(已经试过 nexus 5 , samsung s6等三个机型),如果先点击右边的图标打开预加载好的webview, 顺利滑出:但是不管之后还是之前,如果打开过左边的webvie ...
最新文章
- 整理对应_JSP第二版课后习题答案【侵权联系我删除】
- 通过事件同步两个窗体之间的数据
- mysql sock golang_golang thrift 总结一下网络上的一些坑
- args和kwargs以及argv用法
- UOJ#449. 【集训队作业2018】喂鸽子 min-max容斥,FFT
- NativeScaler()与loss_scaler
- javascript 性能 · 平稳退化、渐进增强
- 概率论与数理统计(二)选择题
- PHP 接口中echo die和return的区别
- springboot志愿者管理系统
- oracle将汉字转为全拼或返回拼音首字母sql
- C++实现一个线程池
- SQL2008 视频教程 SQL Server 2008高级视频教程
- php蘑菇街商城源码,php源码:dedecms精仿蘑菇街(mogujie.com)源码,时尚购物社区源码...
- 如何编写一个投票功能的智能合约
- Redis高可用之主从复制、哨兵、cluster集群
- 【今日头条2019,笔试题】机器人跳跃问题
- 基于平台的软件开发(一)
- Unity ILRuntime Debugger使用及常见问题
- 爬虫:爬东方财富网股票数据
热门文章
- Python 速效复习汇总(新手慎用)二
- “切割您的图片:将您的照片切割成四个完美的部分!“
- Ant Design Pro 使用自定义iconfont图标,改变导航栏的图标
- 主页(八)-顶部导航——NavBar 导航栏 Icon 图标
- 华为公有云云服务-计算类(1)
- 香橙派OrangePi 4 LTS开发板通过Mini PCIE连接SATA硬盘的操作方法
- 问题2:如何在TravisCI里设置Maven插件
- dgl-01 deepwalk
- 成长中必须知道的20个故事 (藏)---(转)
- SBAS星基增强系统 及 广域增强系统WAAS