




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、CC2430單片機標稱 AD 轉換精度為 14位, 在單片機中算是比較高的了, CC2430最廣泛的用途是作為傳感器來使用的, 而傳感器測量的物理量的原理多半是將物理量轉換成電流、電壓等模擬信號,再通過 AD 轉換進入單片機處理。所有 用好 CC2430的 AD 是使用好 CC2430的一項基本技能。一、 CC2430的 ad 的幾個重要參數(shù)1、量化精度 14位2、轉換方式為代兒塔 -西格瑪方式3、 8路獨立通道、 4路差分通道4、參考電壓可選內部、外部參考電壓;(具體參考 datasheet 5、有 DMA 功能 ;(每個通道都能觸發(fā) ,這個功能我認為非常重要,主要是做交流采樣,很方便也很容
2、易處理6、精度可選;二、單通道 AD 轉換單通道 ad 轉換很簡單,需要注意的是1、搞清幾個 AD 寄存器的作用、設置的方法 P0IFG 、 PERCFG 、 P0SEL 、 ADCCFG 、 P0DIR2、被測電壓的負極要連到 CC2430的 GND 上3、轉換后數(shù)值的 ADCL 、 ADCH 內數(shù)值的處理,要將 ADCH 放在低字節(jié)、 ADCL 放在高字節(jié)。將一個 Uint16右移兩位(最后 兩位沒有用;即可得到所要的 ADC 值;4、電壓計算公式 =ADC/精度 *參考電壓;ADC :第 3條所得精度:根據所選位數(shù),例如位數(shù)選 14位,精度 =2的 14次方 =16384參考電壓:可選內
3、部或者外部,例如選內部的 1.25伏。5、輸入電壓不要超過參考電壓。二、差分通道轉換1、選對輸入引腳、設對寄存器2、電壓計算公式 =ADC/精度 *參考電壓;這里的精度相對于單通道的精度要再除以 2例如:轉換的值 =4567; 位數(shù) =14位 ;參考電壓 =1.25v 則被測電壓 =4567/16384*2*1.25=0.6969 伏再例如:轉換的值為 =12345; 位數(shù) =14位 ;參考電壓 =1.25v 則被測電壓 =(12345-16384 /16384*2*1.25=-0.6163 伏 三、使用差分通道轉換時如何進行補償所有的 AD 器件都有可能有一定的 0點偏差, 即電壓輸入為 0
4、時, 轉換結果不為 0, 有可能大于 0, 也有可能小于 0. 所以, 要得到正確的結果就要進行補償。應遵循以下幾個步驟:1、測 channel=0x0c,時的 AD 值通道號選 0xc 時,單片機認為被測電壓為 0,測得 AD 值為 ADoffset1(有可能為 +、也有可能為 -;2、測被測通道的 AD 值假設測 P0.4、 P0.5兩個引腳間的電壓,測得 AD 值為 ADC (有可能為 +、也有可能為 -;3、被測電壓 =(ADC-ADoffset /精度 *2*參考電壓;四、使用 DMA 通道進行 AD 采樣;CC2430的 DMA 通道功能很強大,有多個觸發(fā)源。詳見 datashee
5、t ;交流采樣時使用 DMA AD轉換有很多好處a 、采樣間隔容易計算采樣間隔可通過公式 Tconv = (decimation rate + 16 x 0.25 s. 來計算 14位是 decimation=512b 、 AD 采用的同時、單片機可以做其他事情,互相不干擾c 、存儲在一個數(shù)組之中,便于以后計算。1、首先要了解 CC2430的 DMA 怎么使用2、可參考我的另一篇文章 CC2430 利用 dma 存儲 adc 連續(xù)轉換數(shù)據的存儲,及轉換時間的計算3、舉例說明:程序比較長可以只看前半部分,后半部分功能為計算對正弦波正弦波正半周平均值, DMA 轉換的精髓在上 半部分。float
6、getseadc (uint8 channel, uint8 refvoltvolatile uint16 reading = 0;uint8 resbits;volatile uint16 adctemp,i;volatile uint8 tmp;uint8 adcChannel = 1;volatile float sum,sum1;int tmp1,max,m,n,X,lst;/m為大數(shù), n 為小數(shù)ADCCFG |= adcChannel;if (channel=0x0AADCCFG=0x30;/* Convert resolution to decimation rate */res
7、bits=0x30;/* read ADCL,ADCH to clear EOC */tmp = ADCL;tmp = ADCH;osal_int_disable( INTS_ALL ;/配置 dmaadcdma.srcAddrH=0xDF; /adch的邏輯地址adcdma.srcAddrL=0xBA; /adcl的邏輯地址adcdma.dstAddrH=(uint8(uint16&adctab>>8; /目標內存塊中的地址高位 adcdma.dstAddrL=(uint8&adctab; /目標內存塊中的地址地位adcdma.xferLenV=0x03; /ad
8、cdma.xferLenL=0x20; /傳送 0x320個字符adcdma.ctrlA=0xd7; / word傳送 not bytes ;重復單次傳送; 1號差分通道結束后觸發(fā) adcdma.ctrlB=0x10; /目的地址自動加 1,中斷不打開。DMA0CFGL=(uint8&adcdma; /將 0號 dma 通道設置為上述結構DMA0CFGH=(uint8(uint16&adcdma>>8;DMAARM=0x01; /投入 0號 dma 通道 asm("nop"asm("nop"asm("nop"
9、;asm("nop"asm("nop"asm("nop"/* Setup Sample */adctemp = channel | resbits | (refvolt<<6;/* writing to this register starts the extra conversion */ADCCON2 = adctemp;ADC_SAMPLE_CONTINUOUS(;/* Wait for the conversion to be done */tmp=0;while (!(DMAIRQ & 0x01;DMAA
10、RM|=(1<<7;asm("nop"asm("nop"asm("nop"asm("nop"asm("nop"asm("nop"asm("nop"asm("nop"DMAIRQ=0;/* Disable channel after done conversion */ADC_STOP(; /轉換結束 ,至此所有 800次 AD 轉換的值已經存在 adctab 中了。 tmp=ADCL;tmp=ADCH;ADCCFG &
11、;= adcChannel;sum=0;sum1=0;max=0;tmp1=0;X=-1;lst=-1;for(i=0;i<800;i+/int AdtoInt(uint16 adctmp,int offset/* =(uint8adctabi;reading=(uint16(tmp<<8;tmp=(uint8(adctabi>>8;reading|=(uint16tmp;reading>>=2;adctabi=reading;if(reading>8191tmp1=(floatreading-0x4000-ADoffset2;elsetmp1=
12、(floatreading-ADoffset2;*/轉換成 inttmp1=AdtoInt(adctabi,(intADoffset2;/存儲到原來的空間里adctabi=(uint16tmp1;/判斷過零點if(i>0 && ( *(int*(adctab+i<0 && (*(int*(adctab+i-1>=0if(X=-1n=(inti;lst=(inti;X=0;elseif(i-lst>120X+;lst=i;if(X=4m=(inti;/取絕對值if(tmp1<0tmp1=0-tmp1;/累加if(X>=0 &am
13、p;& X<4sum+=(floattmp1;/取最大值if(tmp1>maxmax=tmp1;sum1+=(floattmp1;osal_int_enable(INTS_ALL;/ 最大值如果小于 0x2000的 5%則有可能雜波干擾比較大,真正的過零點難找,而又因為只有 5%,所以累加后求平均 值對最后的計算結果影響很小if(max<410return (sum1/800;else return (sum/(m-n; ; /將無符號整數(shù)轉換為 int 大于 0x1fff 的為負數(shù) 偏移量要從 float 轉成 int int AdtoInt(volatile uint16 adctmp,int offse
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國水性罩光漆數(shù)據監(jiān)測研究報告
- 2025至2030年中國橙底吉祥花數(shù)據監(jiān)測研究報告
- 噪音中止租房合同范本
- 合作聘用服務合同范本
- 商業(yè)倉庫出租合同范本
- 商場物業(yè)職工勞動合同范本
- 債權轉讓融資合同范本
- 高評級企業(yè)債券違約成因及其經濟后果研究
- 賣場租金合同范本
- 合伙開花店合同范本
- 規(guī)模化豬場生物安全
- 2025年春節(jié)后復產復工方案及安全技術措施
- 維修基金使用合同范例
- 幼兒園小班美術欣賞《漂亮的糖紙》課件
- 互聯(lián)網接入服務提供商服務承諾
- 城市綠化景觀設施安裝與維護合同
- 解除凍結及撤銷納入失信和限高令申請書(文本)
- 2024年河北省公務員錄用考試《行測》真題及答案解析
- 英語語法-形容詞和副詞-復習資料
- 預防性侵安全教育主題課件
- 加油站防雷、防靜電自查自糾方案
評論
0/150
提交評論