找回密码
 立即注册
查看: 864|回复: 11

STC8G数据采集跳变为0

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-1 22:56:02 | 显示全部楼层 |阅读模式
1、原先用STC15W408AS单片机做控制芯片,数据采集没有问题;
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15626
发表于 2024-4-1 22:59:53 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-1 23:04:27 | 显示全部楼层
1、原先用STC15W408AS单片机做控制芯片,数据采集没有问题;
2、因为STC15W408AS-SOP20与STC8G1K08-SOP20管脚一样,原位替换原单片机,单片机配置及初始化升级程序;
3、开机几分钟内上报数据准确,时间长(几分钟)了出现AD值跳变为0现象,时间越长,出现概率越大;
4、读内部精准电压,没有重新跳0现象;
5、批量产品,现象一致

点评

STC8G的ADC初始化可以控制好几个时间参数,比STC15的ADC好多了。 ADC输入端对地一定要接1nF~100nF的电容,最好串联一个1K~3K的电阻。 开机时间越长,出现几率越大,可能跟你的信号稳定性有关,可以使用STC的官方例子  详情 回复 发表于 2024-4-2 23:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-1 23:09:33 | 显示全部楼层
https://www.stcaimcu.com/forum.php?mod=attachment&aid=NDAyNzd8OGZlMzc4ZTF8MTc0NjE3MjIwMXwwfA%3D%3D
截图202404012309111537.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-1 23:10:18 | 显示全部楼层
这个吗?speed=1
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-1 23:11:23 | 显示全部楼层
截图202404012311157126.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-1 23:12:53 | 显示全部楼层

SYSclk=11.0592MHz
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-4-2 23:32:57 | 显示全部楼层
本帖最后由 梁工 于 2024-4-2 23:35 编辑
yzh*** 发表于 2024-4-1 23:04
1、原先用STC15W408AS单片机做控制芯片,数据采集没有问题;
2、因为STC15W408AS-SOP20与STC8G1K08-SOP20管 ...

STC8G的ADC初始化可以控制好几个时间参数,比STC15的ADC好多了。
ADC输入端对地一定要接1nF~100nF的电容,最好串联一个1K~3K的电阻。
开机时间越长,出现几率越大,可能跟你的信号稳定性有关,可以使用STC的官方例子测试一下。
读内部精准电压,没有重新跳0现象,更说明是跟输入信号有关(也跟外部电路有关)。
截图202404022332528523.jpg
STC8G的ADC初始化:

#define ADC_START        (1<<6)        /* 自动清0 */
#define ADC_FLAG        (1<<5)        /* 软件清0 */

#define        ADC_SPEED        1                /* 0~15, ADC时钟 = SYSclk/2/(n+1) */
#define        RES_FMT                (1<<5)        /* ADC结果格式 0: 左对齐, ADC_RES: D9 D8 D7 D6 D5 D4 D3 D2, ADC_RESL: D1 D0 0  0  0  0  0  0 */
                                                        /*             1: 右对齐, ADC_RES: 0  0  0  0  0  0  D9 D8, ADC_RESL: D7 D6 D5 D4 D3 D2 D1 D0 */

#define CSSETUP                (0<<7)        /* 0~1,  ADC通道选择时间      0: 1个ADC时钟, 1: 2个ADC时钟,  默认0(默认1个ADC时钟) */
#define CSHOLD                (1<<5)        /* 0~3,  ADC通道选择保持时间  (n+1)个ADC时钟, 默认1(默认2个ADC时钟)                */
#define SMPDUTY                20                /* 10~31, ADC模拟信号采样时间  (n+1)个ADC时钟, 默认10(默认11个ADC时钟)                                */
                                                        /* ADC转换时间: 10位ADC固定为10个ADC时钟, 12位ADC固定为12个ADC时钟.                                 */


P_SW2 |=  0x80;        //访问XSFR
P1n_pure_input(0xff);        //设置要做ADC的IO做高阻输入
P3n_pure_input(0x7f);        //设置要做ADC的IO做高阻输入
ADC_CONTR = 0x80 + 0;        //ADC on + channel
ADCCFG = RES_FMT + ADC_SPEED;
ADCTIM = CSSETUP + CSHOLD + SMPDUTY;





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-4-8 14:20:12 | 显示全部楼层
谢谢!输入端加了10K//0.1uF。
我反复设置参数,好像效果不大,机器温度高了就频繁出现跳0现象,好在有规律,我用软件方法把它剔除了。
奇怪的是:STC15W没有跳0现象
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-06-27 15:16:12

2

主题

12

回帖

97

积分

注册会员

积分
97
发表于 2024-5-31 09:16:42 | 显示全部楼层
梁*** 发表于 2024-4-2 23:32
STC8G的ADC初始化可以控制好几个时间参数,比STC15的ADC好多了。
ADC输入端对地一定要接1nF~100nF的电容, ...

梁工:您好!
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 15:50 , Processed in 0.160342 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表