找回密码
 立即注册
楼主: 神农鼎

利用ADC15通道在内部固定接的1.19V辅助固定信号源,反推其他通道的输入电压或VCC

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:290
  • 最近打卡:2025-05-01 11:04:37
已绑定手机

5

主题

57

回帖

226

积分

中级会员

积分
226
发表于 2024-9-6 09:59:09 | 显示全部楼层
神*** 发表于 2023-8-13 14:34
内部参考信号源电压为BGV,从CHIP中读取,或STC-ISP烧录时指定将重要参数烧录入程序Flash
+

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-10-10 16:02:31 | 显示全部楼层
您好,请教一个问题,Ai8051U,   ADC_DMA  

截图202410101557414379.jpg

本以为配合  DMA_ADC_ITV  启动无限循环模式DMA, 是完美的模式,
万万没想到啊,DMA写入地址也无限累加,那不是把RAM给写爆了?
循环模式为何不重置 DMA_ADC_RXA ?

我的想法是如果不能自动重置DMA_ADC_RXA,那么无限循环没法用!

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:53
  • 最近打卡:2024-12-27 08:18:49

0

主题

132

回帖

136

积分

注册会员

积分
136
发表于 2024-11-14 14:18:48 | 显示全部楼层
学习了
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:90
  • 最近打卡:2025-04-12 15:58:13

24

主题

70

回帖

644

积分

高级会员

积分
644
发表于 2024-11-17 08:16:53 | 显示全部楼层
学习了
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:72
  • 最近打卡:2025-04-30 16:18:01
已绑定手机

5

主题

109

回帖

481

积分

中级会员

积分
481
发表于 2024-12-20 08:05:15 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-05-01 08:01:38
已绑定手机

1

主题

833

回帖

1441

积分

金牌会员

积分
1441
发表于 2025-3-15 08:43:20 | 显示全部楼层
用来反推锂电池电压,挺方便的
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2025-4-7 13:47:27 | 显示全部楼层
我读出来的怎么是00 00,芯片用STC8H8K64U-SOP16,究竟是哪里错了

  1. //测试工作频率为11.0592MHz
  2. #include "stc8h.h"
  3. #include "intrins.h"
  4. #define       FOSC                 11059200UL
  5. #define       BRT                    (65536-(FOSC / 115200+2) / 4)
  6. //加2操作是为了让Keil编译器
  7.                                                                                                                 //自动实现四舍五入运算
  8. int              *BGV;                                                                                  //内部参考信号源值存放在idata中
  9. //idata的EFH地址存放高字节
  10. //idata的F0H地址存放低字节
  11. //电压单位为毫伏(mV)
  12. bit               busy;
  13. void UartIsr() interrupt 4
  14. {
  15.          if(TI)
  16.          {
  17.                   TI = 0;
  18.                   busy = 0;
  19.          }
  20.          if(RI)
  21.          {
  22.                   RI = 0;
  23.          }
  24. }
  25. void UartInit()
  26. {
  27.          SCON= 0x50;
  28.          TMOD= 0x00;
  29.          TL1= BRT;
  30.          TH1= BRT >> 8;
  31.          TR1= 1;
  32.          AUXR= 0x40;
  33.          busy= 0;
  34. }
  35. void UartSend(char dat)
  36. {
  37.          while(busy);
  38.          busy= 1;
  39.          SBUF= dat;
  40. }
  41. void ADCInit()
  42. {
  43.          ADCTIM= 0x3f;                                                                          //设置ADC内部时序
  44.          ADCCFG= 0x2f;                                                                         //设置ADC时钟为系统时钟/2/16
  45.          ADC_CONTR= 0x8f;                                                                  //使能ADC模块,并选择第15通道
  46. }
  47. int     ADCRead()
  48. {
  49.          int res;
  50.          ADC_CONTR|= 0x40;                                                                //启动AD转换
  51.          _nop_();
  52.          _nop_();
  53.          while(!(ADC_CONTR & 0x20));                                                //查询ADC完成标志
  54.          ADC_CONTR&= ~0x20;                                                            //清完成标志
  55.          res= (ADC_RES << 8) | ADC_RESL;                                        //读取ADC结果
  56.          return res;
  57. }
  58. void Delay2000ms(void)        //@11.0592MHz
  59. {
  60.         unsigned char data i, j, k;
  61.         i = 113;
  62.         j = 53;
  63.         k = 228;
  64.         do
  65.         {
  66.                 do
  67.                 {
  68.                         while (--k);
  69.                 } while (--j);
  70.         } while (--i);
  71. }
  72. void main()
  73. {
  74.          int res;
  75.          int vcc;
  76.          int i;
  77.          P_SW2|= 0x80;                                                                            //使能访问XFR
  78.          P0M0= 0x00;
  79.          P0M1= 0x00;
  80.          P1M0= 0x00;
  81.          P1M1= 0x00;
  82.          P2M0= 0x00;
  83.          P2M1= 0x00;
  84.          P3M0= 0x00;
  85.          P3M1= 0x00;
  86.          P4M0= 0x00;
  87.          P4M1= 0x00;
  88.          P5M0= 0x00;
  89.          P5M1= 0x00;
  90.          BGV= (int idata *)0xef;
  91.          ADCInit();                                                                                     //ADC初始化
  92.          UartInit();                                                                                     //串口初始化
  93.          ES= 1;
  94.          EA= 1;
  95. //       ADCRead();
  96. //       ADCRead();                                                                                  //前两个数据建议丢弃
  97.          while(1)
  98.                  {                 
  99.                  res= 0;
  100.                          for(i=0; i<8; i++)
  101.                          {
  102.                                           res += ADCRead();                                                             //读取8次数据
  103.                          }
  104.                          res>>= 3;                                                                                      //取平均值
  105.                          vcc= (int)(4096L * *BGV / res);                                                 //(12位ADC算法)计算VREF管脚电压,即电池电压
  106.         //       vcc= (int)(1024L * *BGV / res);                                                 //(10位ADC算法)计算VREF管脚电压,即电池电压
  107.         //注意,此电压的单位为毫伏(mV)
  108.                          UartSend(vcc>> 8);                                                                     //输出电压值到串口
  109.                          UartSend(vcc);         
  110.                          Delay2000ms();
  111.                          }
  112. }
复制代码

000.jpg


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 15:08 , Processed in 0.125376 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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