本帖最后由 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值跳动较大?是什么原因?相关推荐

  1. linux xrdp 多人性能,关于XRDP的日志,请帮忙分析一下

    关于XRDP的日志,请帮忙分析一下 发布时间:2015-04-09 22:17:06来源:红联作者:fengcloud centos6.5下载编辑安装XRDP 0.4.2版,在WINDOWS下用mst ...

  2. matlab里1stopt,请帮忙运行下1stopt 程序?(MATLAB没有解出结果)

    问题描述:4个待拟合未知参数 n,v,c,s(实际有8个,这里先能拟合好4个就很不错了),五个已测变量cno,ctan,cchl,a,cdrp,三个ODE 方程.(已经尝试用过MATLAB求解,结果不 ...

  3. xtragrid 某个值 查找_二分查找(下):如何快速定位IP对应的省份地址?

    通过IP地址来查找IP归属地的功能,不知道你有没有用过?没用过也没关系,你现在可以打开百度,在搜索框里随便输一个IP地址,就会看到它的归属地. 这个功能并不复杂,它是通过维护一个很大的IP地址库来实现 ...

  4. 两路音频合成一路电路_请高手指点下:两路模拟音频信号怎么样才能合成一路再通过喇叭输出...

    请高手指点下:两路模拟音频信号怎么样才能合成一路再通过喇叭输出 nino61 Post at 2008/3/31 9:56:16 小弟,刚接触这方面的知识,不太懂,查了好多资料都没有收获, 希望好心人 ...

  5. 简单因式分解100道及答案_请帮忙出100道简单的初二因式分解题 (象x y类型) 急用!!!!!!!!1...

    匿名用户 1级 2019-01-20 回答 http://wyzx.zjhyedu.cn/xkjd/sx/UploadFiles_4228/200804/20080407180802488.doc h ...

  6. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序

    在这篇文章中,您将学习如何使用Java对Map按照键或值进行排序.前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题.所以我决定写这样一篇文章.在Ja ...

  7. 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 ...

  8. 计算机系统异常检测修复,原版64位win7刚刚出现windows已从异常关机中恢复,请帮忙分析原因?...

    应该是 CBox 央视影音与显示驱动之间存在兼容问题.如果是前者的 BUG,可能通过升级版本解决:如果是显示驱动的问题,看看有没有其它版本的显示驱动可用.现在用的这个版本是从何获取的? Alexis ...

  9. android+webview+打不开,webview 在android下无法打开 ?是否为一个bug?请帮忙看下!谢谢!...

    android 平台上(已经试过 nexus 5 , samsung s6等三个机型),如果先点击右边的图标打开预加载好的webview, 顺利滑出:但是不管之后还是之前,如果打开过左边的webvie ...

最新文章

  1. 整理对应_JSP第二版课后习题答案【侵权联系我删除】
  2. 通过事件同步两个窗体之间的数据
  3. mysql sock golang_golang thrift 总结一下网络上的一些坑
  4. args和kwargs以及argv用法
  5. UOJ#449. 【集训队作业2018】喂鸽子 min-max容斥,FFT
  6. NativeScaler()与loss_scaler
  7. javascript 性能 · 平稳退化、渐进增强
  8. 概率论与数理统计(二)选择题
  9. PHP 接口中echo die和return的区别
  10. springboot志愿者管理系统
  11. oracle将汉字转为全拼或返回拼音首字母sql
  12. C++实现一个线程池
  13. SQL2008 视频教程 SQL Server 2008高级视频教程
  14. php蘑菇街商城源码,php源码:dedecms精仿蘑菇街(mogujie.com)源码,时尚购物社区源码...
  15. 如何编写一个投票功能的智能合约
  16. Redis高可用之主从复制、哨兵、cluster集群
  17. 【今日头条2019,笔试题】机器人跳跃问题
  18. 基于平台的软件开发(一)
  19. Unity ILRuntime Debugger使用及常见问题
  20. 爬虫:爬东方财富网股票数据

热门文章

  1. Python 速效复习汇总(新手慎用)二
  2. “切割您的图片:将您的照片切割成四个完美的部分!“
  3. Ant Design Pro 使用自定义iconfont图标,改变导航栏的图标
  4. 主页(八)-顶部导航——NavBar 导航栏 Icon 图标
  5. 华为公有云云服务-计算类(1)
  6. 香橙派OrangePi 4 LTS开发板通过Mini PCIE连接SATA硬盘的操作方法
  7. 问题2:如何在TravisCI里设置Maven插件
  8. dgl-01 deepwalk
  9. 成长中必须知道的20个故事 (藏)---(转)
  10. SBAS星基增强系统 及 广域增强系统WAAS