869|21

504

帖子

0

资源

纯净的硅(初级)

沁恒CH583的AD测试 [复制链接]

 

通过usb下载程序后,断电,把串口连接到开发板,电源指示灯微亮,可是程序并不运行。

打开串口助手,没有任何信息,配置好串口后,接通usb电源后,电源等变得更亮了。

串口助手也显示

Start @ChipID=82

1.Temperature sampling...
2805 
2806 
2807 
2805 
2804 
2806 
2804 
2805 
2807 
2806 
2805 
2807 
2805 
2805 
2806 
2805 
2806 
2807 
2804 
2806 

连续20次的采样,最小的2804,最大的2807

12位的AD,最低两位还是丢弃,当10位的AD来用吧,有的场合也够用了。

这个例子测试的是内部温度的ADC,连续20次读取温度的AD值。

 

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

发完上个帖子,就想再看一下AD吧,就按了下reset。

有一次的连续20次AD采样,会有奇迹出现吗?

2807 
2804 
2806 
Start @ChipID=82

1.Temperature sampling...
2808 
2806 
2809 
2807 
2805 
2811 
2806 
2805 
2809 
2809 
2805 
2809 
2808 
2808 
2811 
2808 
2806 
2809 
2808 
2807 

 

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

估计是程序运行,芯片温度升高,AD采样值从2805到2811,整体增加了,这样的话,12位的AD只能用9位了吧

点评

有跳动很正常,电源、外部干扰这些都会影响ADC的测量。你把AD值转换成对应的温度看看,感觉读取的不像温度呢。  详情 回复 发表于 2022-3-12 15:37
个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

再读一次

Start @ChipID=82

1.Temperature sampling...
2810 
2807 
2811 
2809 
2807 
2811 
2807 
2809 
2809 
2810 
2809 
2809 
2811 
2809 
2811 
2809 
2809 
2809 
2808 
2810 

内部温度AD值从2807到2811。

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

内部温度采样就这样了。

下边看下第一个AD通道的情况,接一个电阻

 

  /* 单通道采样:选择adc通道0做采样,对应 PA4引脚, 带数据校准功能 */
  PRINT( "\n2.Single channel sampling...\n" );
  GPIOA_ModeCfg( GPIO_Pin_4, GPIO_ModeIN_Floating );
  ADC_ExtSingleChSampInit( SampleFreq_3_2, ADC_PGA_0 );

  GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeIN_Floating );
  RoughCalib_Value = ADC_DataCalib_Rough(); // 用于计算ADC内部偏差,记录到全局变量 RoughCalib_Value中
  PRINT( "RoughCalib_Value =%d \n", RoughCalib_Value );

  ADC_ChannelCfg( 0 );

  for( i = 0; i < 20; i++ )
  {
    abcBuff[i] = ADC_ExcutSingleConver() + RoughCalib_Value;      // 连续采样20次
  }
  for( i = 0; i < 20; i++ )
  {
    PRINT( "%d \n", abcBuff[i] ); // 注意:由于ADC内部偏差的存在,当采样电压在所选增益范围极限附近的时候,可能会出现数据溢出的现象
  }

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

9948

帖子

21

资源

版主

kangkls 发表于 2022-3-12 13:59 估计是程序运行,芯片温度升高,AD采样值从2805到2811,整体增加了,这样的话,12位的AD只能用9位了吧

有跳动很正常,电源、外部干扰这些都会影响ADC的测量。你把AD值转换成对应的温度看看,感觉读取的不像温度呢。

点评

对应的程序   /* 温度采样并输出, 包含数据校准 */   PRINT( "\n1.Temperature sampling...\n" );   ADC_InterTSSampInit();   RoughCalib_Value = ADC_DataCalib_Rough(); // 用于  详情 回复 发表于 2022-3-12 22:01
Start @ChipID=82 1.Temperature sampling... 第1次采样的AD数值2802 对应的温度3  第2次采样的AD数值2804 对应的温度4  第3次采样的AD数值2804 对应的温度4  第4次采样的AD数值2802 对应的温  详情 回复 发表于 2022-3-12 22:00

回复

504

帖子

0

资源

纯净的硅(初级)

littleshrimp 发表于 2022-3-12 15:37 有跳动很正常,电源、外部干扰这些都会影响ADC的测量。你把AD值转换成对应的温度看看,感觉读取的不像温 ...

Start @ChipID=82

1.Temperature sampling...
第1次采样的AD数值2802 对应的温度3 
第2次采样的AD数值2804 对应的温度4 
第3次采样的AD数值2804 对应的温度4 
第4次采样的AD数值2802 对应的温度3 
第5次采样的AD数值2805 对应的温度4 
第6次采样的AD数值2804 对应的温度4 
第7次采样的AD数值2801 对应的温度3 
第8次采样的AD数值2802 对应的温度3 
第9次采样的AD数值2804 对应的温度4 
第10次采样的AD数值2805 对应的温度4 
第11次采样的AD数值2805 对应的温度4 
第12次采样的AD数值2802 对应的温度3 
第13次采样的AD数值2804 对应的温度4 
第14次采样的AD数值2802 对应的温度3 
第15次采样的AD数值2804 对应的温度4 
第16次采样的AD数值2804 对应的温度4 
第17次采样的AD数值2801 对应的温度3 
第18次采样的AD数值2804 对应的温度4 
第19次采样的AD数值2802 对应的温度3 
第20次采样的AD数值2805 对应的温度4 

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

littleshrimp 发表于 2022-3-12 15:37 有跳动很正常,电源、外部干扰这些都会影响ADC的测量。你把AD值转换成对应的温度看看,感觉读取的不像温 ...

对应的程序

  /* 温度采样并输出, 包含数据校准 */
  PRINT( "\n1.Temperature sampling...\n" );
  ADC_InterTSSampInit();
  RoughCalib_Value = ADC_DataCalib_Rough(); // 用于计算ADC内部偏差,记录到变量 RoughCalib_Value中,注意这个变量需要定义为有符号变量

  for( i = 0; i < 20; i++ )
  {
    abcBuff = ADC_ExcutSingleConver() + RoughCalib_Value;      // 连续采样20次
  }
  for( i = 0; i < 20; i++ )
  {
    PRINT( "第%d次采样的AD数值%d 对应的温度%d \n", (i+1),abcBuff,ADC_GetCurrentTS(abcBuff) );
  }

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

这个3度,4度,我认为也是不对,应该再有个校正值。

点评

我觉得更像是你的通道没选对,测量到的可能是一个悬空的AD输入引脚。  详情 回复 发表于 2022-3-12 22:35
个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

又读了两次温度


1.Temperature sampling...
第1次采样的AD数值2811 对应的温度5 
第2次采样的AD数值2810 对应的温度5 
第3次采样的AD数值2809 对应的温度5 
第4次采样的AD数值2813 对应的温度5 
第5次采样的AD数值2811 对应的温度5 
第6次采样的AD数值2810 对应的温度5 
第7次采样的AD数值2813 对应的温度5 
第8次采样的AD数值2811 对应的温度5 
第9次采样的AD数值2811 对应的温度5 
第10次采样的AD数值2809 对应的温度5 
第11次采样的AD数值2815 对应的温度6 
第12次采样的AD数值2809 对应的温度5 
第13次采样的AD数值2808 对应的温度5 
第14次采样的AD数值2811 对应的温度5 
第15次采样的AD数值2811 对应的温度5 
第16次采样的AD数值2812 对应的温度5 
第17次采样的AD数值2814 对应的温度5 
第18次采样的AD数值2811 对应的温度5 
第19次采样的AD数值2814 对应的温度5 
第20次采样的AD数值2813 对应的温度5 
Start @ChipID=82

1.Temperature sampling...
第1次采样的AD数值2810 对应的温度5 
第2次采样的AD数值2807 对应的温度5 
第3次采样的AD数值2812 对应的温度5 
第4次采样的AD数值2815 对应的温度6 
第5次采样的AD数值2812 对应的温度5 
第6次采样的AD数值2810 对应的温度5 
第7次采样的AD数值2811 对应的温度5 
第8次采样的AD数值2815 对应的温度6 
第9次采样的AD数值2810 对应的温度5 
第10次采样的AD数值2812 对应的温度5 
第11次采样的AD数值2811 对应的温度5 
第12次采样的AD数值2810 对应的温度5 
第13次采样的AD数值2814 对应的温度5 
第14次采样的AD数值2812 对应的温度5 
第15次采样的AD数值2811 对应的温度5 
第16次采样的AD数值2810 对应的温度5 
第17次采样的AD数值2811 对应的温度5 
第18次采样的AD数值2815 对应的温度6 
第19次采样的AD数值2812 对应的温度5 
第20次采样的AD数值2810 对应的温度5 
 

点评

或者你测量时用手机或者其他东西加热芯片,看看温度有没有明显变化。  详情 回复 发表于 2022-3-12 22:38
个人签名http://www.jslaser.com高性价比激光测距传感器

回复

9948

帖子

21

资源

版主

kangkls 发表于 2022-3-12 22:01 这个3度,4度,我认为也是不对,应该再有个校正值。

我觉得更像是你的通道没选对,测量到的可能是一个悬空的AD输入引脚。

点评

芯片内置温度传感器温度,程序如下,都是例程。   /* 温度采样并输出, 包含数据校准 */   PRINT( "\n1.Temperature sampling...\n" );   ADC_InterTSSampInit();   RoughCalib_Va  详情 回复 发表于 2022-3-13 10:40

回复

9948

帖子

21

资源

版主

kangkls 发表于 2022-3-12 22:04 又读了两次温度 1.Temperature sampling... 第1次采样的AD数值2811 对应的温度5  第2次采样的A ...

或者你测量时用手机或者其他东西加热芯片,看看温度有没有明显变化。


回复

504

帖子

0

资源

纯净的硅(初级)

littleshrimp 发表于 2022-3-12 22:35 我觉得更像是你的通道没选对,测量到的可能是一个悬空的AD输入引脚。

芯片内置温度传感器温度,程序如下,都是例程。

 

/* 温度采样并输出, 包含数据校准 */
  PRINT( "\n1.Temperature sampling...\n" );
  ADC_InterTSSampInit();
  RoughCalib_Value = ADC_DataCalib_Rough(); // 用于计算ADC内部偏差,记录到变量 RoughCalib_Value中,注意这个变量需要定义为有符号变量

  for( i = 0; i < 20; i++ )
  {
    abcBuff = ADC_ExcutSingleConver() + RoughCalib_Value;      // 连续采样20次
  }
  for( i = 0; i < 20; i++ )
  {
    PRINT( "第%d次采样的AD数值%d 对应的温度%d \n", (i+1),abcBuff,ADC_GetCurrentTS(abcBuff) );
  }

 

 

 

/*******************************************************************************
* Function Name  : ADC_InterTSSampInit
* Description    : 内置温度传感器采样初始化
* Input          : None
* Return         : None
*******************************************************************************/
void ADC_InterTSSampInit( void )
{
    R8_TKEY_CFG &= ~RB_TKEY_PWR_ON;
    R8_TEM_SENSOR = RB_TEM_SEN_PWR_ON;
    R8_ADC_CHANNEL = CH_INTE_VTEMP;
    R8_ADC_CFG = RB_ADC_POWER_ON            \
                |RB_ADC_DIFF_EN             \
                |( 3<<4 )    ;
}

点评

例程里直接输出温度了吗?看一下是不是转换温度计算有误,或者加热芯片看一下温度变化是不是正常。  详情 回复 发表于 2022-3-13 18:27
个人签名http://www.jslaser.com高性价比激光测距传感器

回复

9948

帖子

21

资源

版主

kangkls 发表于 2022-3-13 10:40 芯片内置温度传感器温度,程序如下,都是例程。   /* 温度采样并输出, 包含数据校准 */ &nb ...

例程里直接输出温度了吗?看一下是不是转换温度计算有误,或者加热芯片看一下温度变化是不是正常。

点评

由这个函数实现温度转换ADC_GetCurrentTS,都是自带例程的函数,未做更改 /******************************************************************************* * Function Name  : ADC_GetCurrentTS * Desc  详情 回复 发表于 2022-3-13 21:15
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

504

帖子

0

资源

纯净的硅(初级)

littleshrimp 发表于 2022-3-13 18:27 例程里直接输出温度了吗?看一下是不是转换温度计算有误,或者加热芯片看一下温度变化是不是正常。

由这个函数实现温度转换ADC_GetCurrentTS,都是自带例程的函数,未做更改
/*******************************************************************************
* Function Name  : ADC_GetCurrentTS
* Description    : 获取当前采样的温度值(℃)
* Input          : ts_v:当前温度传感器采样输出
* Return         : 转换后的温度值(℃)
*******************************************************************************/
int ADC_GetCurrentTS( UINT16 ts_v )
{
  int  C25;
  int  cal;

  C25 = (*((PUINT32)ROM_CFG_TMP_25C));
  cal = ( ( (ts_v * 1050) + 2048 ) >> 12 ) + ( 1050 >> 1 );
  cal = 25 + ((cal - C25)*10/14);
  return (  cal );
}
 

点评

你实验的环境温度真的只有5摄氏度左右吗?  详情 回复 发表于 2022-3-13 21:31
个人签名http://www.jslaser.com高性价比激光测距传感器

回复

9948

帖子

21

资源

版主

kangkls 发表于 2022-3-13 21:15 由这个函数实现温度转换ADC_GetCurrentTS,都是自带例程的函数,未做更改 /*************************** ...

你实验的环境温度真的只有5摄氏度左右吗?

点评

厂家说这个是个相对值,不是绝对值  详情 回复 发表于 2022-3-14 09:22
肯定不是5度,至少15度吧。    详情 回复 发表于 2022-3-14 09:22

回复

504

帖子

0

资源

纯净的硅(初级)

littleshrimp 发表于 2022-3-13 21:31 你实验的环境温度真的只有5摄氏度左右吗?

肯定不是5度,至少15度吧。

 

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

504

帖子

0

资源

纯净的硅(初级)

littleshrimp 发表于 2022-3-13 21:31 你实验的环境温度真的只有5摄氏度左右吗?

厂家说这个是个相对值,不是绝对值

个人签名http://www.jslaser.com高性价比激光测距传感器

回复

1883

帖子

3

资源

版主

我原来也做过内部温度转换,厂家说,这个较正还在开发中。。。。


回复

7

帖子

0

资源

一粒金砂(中级)

582ad测温在绝对温度上目前还需要自己手动校准,如测试转换出的数据为5度,而实际温度为15度,则将结果加10.另外关于ad是12位是全部用到了不,只是在测温的时候你温度达不到那么高,可以测量电压值试试。

点评

我个人觉得,这个芯片温度,有个相对值也可以满足普通的使用,也不拿这个温度来做什么,想参考的时候,自己校正一下就行。 1.Temperature sampling... 第1次采样的AD数值2815 对应的温度6  第2次采样的A  详情 回复 发表于 2022-3-14 17:36

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    推荐帖子
    三极管应用从入门到精通---三极管资料全收录

    三极管应用从入门到精通---三极管资料全收录 说起三极管,搞电子设计的一点也不会陌生,但是说起三极管的 ...

    DSP外扩SRAM的应用测试心得体会

    363337 图1-1 Code Composer Studio 6.0.0.00190 C/C++开发环境 硬件平台基于TMS320F28335芯片,软件平台基于TI的Code Compos ...

    教师节来了,大家快乐快乐

    工程师,您贵姓?@ 脚最多的工程师姓吴,叫吴工(蜈蚣);@ 脸最黑的工程师姓包,叫包工(包公);@ 脸最红的工程师姓关,叫关工(关 ...

    人体吹气感应模块

    用什么模块来感应人体吹气好呢?是微弱的吹气,不是测肺活量那样测。 有没有好的空气流量计推荐下,目前的方案是用吹风叶转动测 ...

    Altium Designer v20.1.12.249

    下载地址: https://545c.com/dir/17401394-32057813-893144

    【基于NUCLEO-F746ZG电机开发应用】12.参数配置-定时器TIM1配置

    在伺服电机的控制过程中,使电机能够按照自己的想法转起来,一定要用到PWM输出控制,但是PWM该如何产生,频率如何控制,占空比 ...

    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表