外部ADC通道,我们现在用的是A0脚,也就是P00通道

把它设置成输出的一个模式。在程序中设置,代码如下:

#include <ioCC2540.h>

#define HAL_ADC_REF_125V 0x00

#define HAL_ADC_DEC064 0X00

#define HAL_ADC_CHN_VDD3 0x0f

unsigned char cmd;

unsigned int Read_Vddvalue(void)

{

unsigned int value;

unsigned char tmpADCCON3 = ADCCON3;

ADCIF=0;

ADCCON3=(HAL_ADC_REF_125V|HAL_ADC_DEC064|HAL_ADC_CHN_VDD3);    //选择一个进程为125v的基准电压,设置抽取率,选择ADC的引脚

while(!ADCIF);

value=ADCL>>2;

value|=((unsigned int)ADCH)<<6;

ADCCON3=tmpADCCON3;

return (value);

}

#pragma vector = URX0_VECTOR

__interrupt void UART0_ISR(void)

{

URX0IF = 0;       // 清中断标志

cmd = U0DBUF;

}

void UartSendString(char *Data, int len)

{

unsigned int i;

for(i=0; i<len; i++)

{

U0DBUF = *Data++;

while(UTX0IF == 0);

UTX0IF = 0;

}

}

void InitUart(unsigned int baudrate)

{

CLKCONCMD &= ~0x40;                        //设置系统时钟源为32MHZ晶振

while(CLKCONSTA & 0x40);                   //等待晶振稳定为32M

CLKCONCMD &= ~0x47;                        //设置系统主时钟频率为32MHZ

PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1

P0SEL = 0x0c;            //P0_2,P0_3用作串口(外设功能)

P2DIR &= ~0xC0;          //P0优先作为UART0

U0CSR |= 0x80;           //设置为UART方式

switch(baudrate)

{

case 115200:

U0GCR = 11;

U0BAUD = 216;           //波特率设为115200

break;

case 9600:

U0GCR = 8;

U0BAUD = 59;           //波特率设为9600

break;

default:

U0GCR = 8;

U0BAUD = 59;           //波特率设为9600

break;

}

UTX0IF = 0;              //UART0 TX中断标志初始置位0

U0CSR |= 0x40;           //允许接收

IEN0 |= 0x84;            //开总中断允许接收中断

}

/****************************************************************************

* 程序入口函数

****************************************************************************/

void main(void)

{

unsigned int vddvalue;

unsigned char buf[5]="0.0V";

InitUart(115200);

while(1)

{

if(cmd=='A')

{

cmd = 0;

vddvalue=Read_Vddvalue();

vddvalue=(vddvalue*25)>>8;//(vddvalue*1.25/2^7)放大10倍(vddvalue*12.5/2^7)

//(vddvalue*25/2^8)->(vddvalue*25)>>8

vddvalue=vddvalue*3;//VDD/3作为一个ADC输入通道,因此对该通道的检测,得到VDD/3的值,那么VDD高行是这个值乘以3

buf[0]=vddvalue/10+'0';

buf[1]='.';

buf[2]=vddvalue%10+'0';

UartSendString(buf,strlen(buf));

}

}

}

寄存器图表:

运行结果,发送一个A产生一个数据

如果采用其他的通道,转换过后也是和这个一样的,这里寄存器有选择的地方,就是用正电压作为参考,使用内部的温度传感器来采,对应的地方把它旋转过来,最后可以传播或者获取这个相应的温度信息。

原文链接:http://www.maiziedu.com/wiki/bluetooth/vdd/

蓝牙4.0 BLE基础之vdd检测new的更多相关文章

  1. 蓝牙4.0 BLE入门

    在BLE协议中有两个角色,一个是周边(Periphery),另外一个是中央(Central).一个中央可以同时连接多个周边,但一个周边某一时刻只能连接一个中央.但是不管periphery还是centr ...

  2. Android 蓝牙4.0 BLE

    Android ble (Bluetooth Low Energy) 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用. BLE是蓝牙4.0的核心Profil ...

  3. IOS学习之蓝牙4.0 BLE

    IOS学习也一段时间了,该上点干货了.前段时间研究了一下IOS蓝牙通讯相关的东西,把研究的一个成果给大家分享一下. 一 项目背景 简单介绍一下做的东西,设备是一个金融刷卡器,通过蓝牙与iphone手机 ...

  4. Android项目实战(三十四):蓝牙4.0 BLE 多设备连接

    最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据. 查询了很多资料终于实现,现进行总结. ------------------------------------------- ...

  5. Android 蓝牙4.0 BLE (onServicesDiscovered 返回 status 是 129,133时)

    Android ble (Bluetooth Low Energy) 蓝牙4.0,也就是说android 4.3+, API level >= 18,且支持蓝牙4.0的手机才可以使用. BLE是 ...

  6. android蓝牙4.0(BLE)开发之ibeacon初步

    一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...

  7. 蓝牙4.0 BLE 广播包解析

    在使用EN-Dongle捕获和解析广播包之前,我们先了解一下BLE报文的结构,之后,再对捕获的广播包进行分析.在学习BLE的时候,下面两个文档是极其重要的,这是SIG发布的蓝牙的核心协议和核心协议增补 ...

  8. 蓝牙BLE: 蓝牙4.0 BLE广播数据解析(转)

    BLE 设备工作的第一步就是向外广播数据.广播数据中带有设备相关的信息.本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析. 1. 广播模式 BLE 中有两种角色 Central 和 Per ...

  9. 蓝牙4.0 BLE 开发

    在BLE开发中的一些随记,供大家参考: 凡事皆有状态 低功耗蓝牙背后有个基本的概念:任何事务都有状态.状态可以是任何东西:当前的温度,设备里电池的状态,设备名称或者对测量温度的地点的描述.它通过属性服 ...

随机推荐

  1. [spark案例学习] WEB日志分析

    数据准备 数据下载:美国宇航局肯尼迪航天中心WEB日志 我们先来看看数据:首先将日志加载到RDD,并显示出前20行(默认). import sys import os log_file_path =' ...

  2. 每天记一些php函数,jQuery函数和linux命令(三)

    简介:学习完了php和jQuery之后,对函数的记忆不到位,导致很多函数没记住,所以为了促进自己的记忆,每天花一点时间来写这个博客. 时间:2016-12-21   地点:太原    天气:雨夹雪 一 ...

  3. Python成长笔记 - 基础篇 (九)

    创建一个socketserver 至少分以下几步: First, you must create a request handler class by subclassing the BaseRequ ...

  4. Lua与C++互相调用(上)

    int main1(int argc, const char * argv[]) { lua_State* L = luaL_newstate();//创建栈 luaopen_base(L); lua ...

  5. Bookstore project using XAMPP 详细配置 Part 1

    这是学校的一个project,记录在这里,以备复习.主要是用XAMPP通过phpMyAdmin连接MySQL数据库,实现一个简单的查询功能. Outline Setup of XAMPP Implem ...

  6. css长度值与颜色值

    颜色值 在网页中的颜色设置是非常重要的,有字体颜色,背景颜色,边框颜色等,设置颜色的方法也有很多种: 1.英文命令颜色 p{color:red;} 2.rgb颜色 p{color:rgb(133,45 ...

  7. dex分包变形记

    腾讯Bugly特约作者:李金涛 一.背景 就在项目灰度测试前不久,爆出了在 Android 3.0以下手机上安装时出现 INSTALL _ FAILED_DEXOPT,导致安装失败.这一问题意味着项目 ...

  8. 四则运算的实现(C++)重做

    #include <iostream> using namespace std; void main() { int a0[1000],b0[1000],c0[1000],a1[1000] ...

  9. JavaScript函数柯里化

    函数式 JavaScript是以函数为一等公民的函数式语言.函数在JavaScript中也是一个对象(继承制Function),函数也可以作为参数传递成函数变量.最近几年函数式也因为其无副作用的特性. ...

  10. 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法

    Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...