TI CC2530 学习笔记-14-NewBit-CC2530-ADC-ADC采集电源电压

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21352095/article/details/83046917

TI CC2530 学习笔记-目录

演示使用CC2530的ADC采集电源电压。先对VDD/3进行采样,然后将结果乘3以得到VDD的电压值,按下按键S0时串口输出一次电压,同时翻转LED灯。

  1. 初始化UART
  halMcuWaitUs(10000);  //等待时间稳定,约10ms
  CLKCONCMD &= ~0x47;   //选择外部32MHZ时钟, 不分频
                        //TICKSPD不改变,保持为0x01
  while( (CLKCONSTA & 0x47) != 0x00 ); //切换时钟源后再次等待稳定
  
  P0DIR |= 0x40;    //配置IO为输出
  /* 初始化串口 */
  P0SEL |= 0x0C; //将P02,P03设为外设功能
  PERCFG &= ~0x01;   //串口0占用P02 P03
  U0CSR = 0X80;    //USART模式设为UART模式
  U0UCR = 0x00;    //禁用流控,禁用奇偶检验,1位停止位
  U0GCR   |= 8;     //9600
  U0BAUD  =  59;
  1. 按下按键时检测电压
while(1)
  {
    if (KV_1 == halScanKey())
    {
      adc = ADCL;
      adc = ADCH;       //清除ADCCON1.EOC标志
      ADCCON3 = 0x3f;   //内部参考电压,12位有效精度,带1位符号位,即11位有效数据2048
      while (!(ADCCON1 & 0x80));
      adcResult = ADCL;
      adcResult |= ((uint16)ADCH << 8);
      
      if (adcResult & 0x8000)//负温度
      {
        adcResult = ~adcResult + 1; 
      }
      adcResult >>= 4;
      tVdd = (float)(adcResult) * 1.15 / 2048;
      tVdd *= 3;
      
      if (tVdd > 1.0)
      {
        tString[0] = (uint8)tVdd % 10 + '0'; 
      }
      else
      {
        tString[0] = '0';
      }
      tString[1] = '.';
      tString[2] = (uint16)(tVdd * 10) % 10 + '0';
      tString[3] = 'V';
      tString[4] = '\n';
      halUart0SendString(tString,5);
      LED_R_TOG();
      while( KV_1 == halScanKey());
    }
  }

代码:NewBit-ZDK CC2530 基础例程

猜你喜欢

转载自blog.csdn.net/qq_21352095/article/details/83046917
今日推荐