欢迎来到天天文库
浏览记录
ID:41287795
大小:872.50 KB
页数:33页
时间:2019-08-21
《TinyOS操作系统开发技术及实践(西电版)实践3平台移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实践3平台移植实践指导实践指导实践3.G.1ADC驱动的开发。【分析】(1)通过ADC(数模转换)驱动的开发理解发布平台上驱动开发的一般方法。(2)根据ADC特点,设计ADC驱动,包括ADC接口、实现接口的模块、提供接口的配件。(3)编写应用程序,测试ADC驱动。(4)将ADC驱动移动到平台的驱动目录中。(5)将驱动目录位置加入到“.platform”文件中。(6)重新编译应用程序,测试ADC驱动。【参考解决方案】1.程序目录建立在cygwin的“opt/mytinos/apps/”目录下建立“AdTest”目录。2.ADC驱动设计在“opt/mytinos/apps/A
2、dTest/”目录下建立4个文件:Adc.h:定义与ADC控制相关的宏和常量。AdcControl.nc:ADC接口文件。AdcP.nc:实现ADC接口的模块文件。AdcC.nc:ADC配件文件,用于封装AdcP模块,以对外提供ADC的控制。编写Adc.h文件,代码如下://设置ADCCON3寄存器#defineADC_SINGLE_CONVERSION(settings)do{ADCCON3=settings;}while(0)//设置ADCCON2寄存器#defineADC_SEQUENCE_SETUP(settings)do{ADCCON2=settings
3、;}while(0)//参考电压常量#defineADC_REF_1_25_V0x00#defineADC_REF_P0_70x40#defineADC_REF_AVDD0x80#defineADC_REF_P0_6_P0_70xC0//分辨率(精度):#defineADC_8_BIT0x00#defineADC_10_BIT0x10#defineADC_12_BIT0x20#defineADC_14_BIT0x30//输入通道#defineADC_AIN00x00#defineADC_AIN10x01#defineADC_AIN20x02#defin
4、eADC_AIN30x03#defineADC_AIN40x04#defineADC_AIN50x05#defineADC_AIN60x06#defineADC_AIN70x07#defineADC_AIN0_AIN10x08#defineADC_AIN2_AIN30x09#defineADC_AIN4_AIN50x0A#defineADC_AIN6_AIN70x0B#defineADC_GND0x0C#defineADC_PVR0x0D#defineADC_TEMP_SENS0x0E#defineADC_VDD_30x0F//------------
5、-----------------------------------------------------------------//开启ADC连续转换#defineADC_SAMPLE_CONTINUOUS()do{ADCCON1&=~0x30;ADCCON1
6、=0x10;}while(0)//停止ADC的连续转换#defineADC_STOP()do{ADCCON1
7、=0x30;}while(0)//初始化单端输入的ADC转换#defineADC_SAMPLE_SINGLE()do{ADC_STOP();ADCCON1
8、=0x40;}while(0)
9、//设置ADC从通道0开始#defineADC_TRIGGER_FROM_TIMER1()do{ADC_STOP();ADCCON1&=~0x10;}while(0)//判断转换是否结束#defineADC_SAMPLE_READY()(ADCCON1&0x80)//设置或清除ADC通道#defineADC_ENABLE_CHANNEL(ch)ADCCFG
10、=(0x01<11、*启用ADC.*@参数reference–参考电压*@参数resolution–精度(分辨率)*@参数input–通道*/commandvoidenable(uint8_treference,uint8_tresolution,uint8_tinput);/***停用ADC*/commandvoiddisable();}(3)编写AdcP模块,用于实现AdcControl接口,代码如下:#include"Adc.h"#defineADC_MAX_RETRY0x7fffmodule
11、*启用ADC.*@参数reference–参考电压*@参数resolution–精度(分辨率)*@参数input–通道*/commandvoidenable(uint8_treference,uint8_tresolution,uint8_tinput);/***停用ADC*/commandvoiddisable();}(3)编写AdcP模块,用于实现AdcControl接口,代码如下:#include"Adc.h"#defineADC_MAX_RETRY0x7fffmodule
此文档下载收益归作者所有