msp430內部含有ADC12模塊,可以完成12位的模數轉換,當對精度或其他指標要求不高時,可以選用430單片機內部的ADC12完成模數轉換工作。這里主要實現了一個比較通用的ADC12模塊初始化程序,具體的數據存儲和處理需要自己在中斷處理函數中添加。
硬件介紹:
msp430單片機內的ADC12模塊的特點如下:12位轉換精度,1位非線形誤差,1位非線形積分誤差;多種時鐘源給ADC12模塊,切本身自帶時鐘發生器;內置溫度傳感器;TimerA/TimerB硬件觸發器;8路外部通道和4路內部通道;內置參考電壓源和6種參考電壓組合;4種模式的模數轉換;16bit的轉換緩存;ADC12關閉支持超低功耗;采用速度快,最高200Kbps;自動掃描和DMA使能。430內部的ADC12功能還是蠻強大的,可以有定時器觸發模數轉換開始,還可以和內部的DMA模塊共同使用,完成高速的采樣轉儲等高級功能。
這個AD的轉化公式如下,可以根據它計算采樣的模擬電壓值:
使用AD是還要注意采樣時間,430單片機的模數ADC12模塊的等效模擬電壓輸入電路如下:
其中VS是信號源電壓,RS是信號源內阻,VI在Ax(ADC12模塊模擬輸入端)上的電壓,RI單片機內多路開關等效電阻,VC是保持電容上的電壓(ADC12模塊采樣的電壓),CI 是電容的值。需要根據這些值計算采樣時間:
代入單片機上的參數后公式如下:
我的程序中采樣時間設的是4us,可以算出如果用我的程序(不更改采樣時間)的話,最大信號源內阻可以是6.8k,當信號源內阻更大時,可以自己按要求設采樣時間(在程序的初始化函數內的寄存器設置部分)。
還有,ADC模數轉換時要求參考電壓等很穩定,為了達到這個要求,德州儀器要求這部分的電路如下:
即:所有參考源和電源均并聯一組 0.1uF和10uF的電容。
硬件部分就說這么多了;如果需要更詳細的說明,參考用戶指南。
程序實現:
程序主要實現的是一個比較通用的初始化程序,內容如下:
char ADC12Init(char n,char channels[],char rep)
{
if(n>15)
return 0;
//SHT0_0
ADC12CTL0 = ADC12ON + MSC + SHT0_0 + REFON + REF2_5V;// 開啟ad,參考電壓2.5v
ADC12CTL1 = SHP + ADC12SSEL_3; //Use sampling timer, SMCLK
for(int i = 0;i < n;i++)
{
if(channels[i] >= 0x80)
return 0;
*(char*)(ADC12MCTL0_ + i) = channels[i]; //每個MCTL設置
}
*(char*)(ADC12MCTL0_ + n - 1) |= EOS; //序列結束
if(rep != 0) //多次轉換
{
ADC12CTL1 |= CONSEQ_3;
}
else
{
ADC12CTL1 |= CONSEQ_1;
}
ADC12IE = 1<<(n-1); // Enable ADC12IFG.n-1
return 1;
}
程序先判斷n 通道總數是否超過了可用的個數,超過則返回零然后設置ADC12CTL0和ADC12CTL1中不需要特殊設置的部分,然后在設置通道模式(根據rep參數的值);for循環設置的是每個存儲寄存器的設置ADC12MCTLx ;*(char*)(ADC12MCTL0_ + n - 1) |= EOS; //序列結束 這句加入序列結束標志;最后設置中斷寄存器并返回成功設置標志。其中比較特殊的是ADC12MCTL0_,這個是430提供的頭文件中定義的ADC12MCTL0的地址值,以其為指針首址操作ADCMCTLx寄存器,從而利用循環設置寄存器的內容,大量減少了代碼行數。
參數channels[]是每個存儲寄存器的設置(除EOS位之外的),含義如下:
channels[]:對應通道設置,高四位,參考源選擇;
低四位,通道選擇。具體如下:
SREFx Bits
6-4
Select reference
000 VR+ = AVCC and VR. = AVSS
001 VR+ = VREF+ and VR. = AVSS
010 VR+ = VeREF+ and VR. = AVSS
011 VR+ = VeREF+ and VR. = AVSS
100 VR+ = AVCC and VR. = VREF./ VeREF.
101 VR+ = VREF+ and VR. = VREF./ VeREF.
110 VR+ = VeREF+ and VR. = VREF./ VeREF.
111 VR+ = VeREF+ and VR. = VREF./ VeREF.
INCHx Bits
3-0
Input channel select
0000 A0
0001 A1
0010 A2
0011 A3
0100 A4
0101 A5
0110 A6
0111 A7
1000 VeREF+
1001 VREF./VeREF.
1010 Temperature sensor
1011 (AVCC – AVSS) / 2
1100 (AVCC – AVSS) / 2
1101 (AVCC – AVSS) / 2
1110 (AVCC – AVSS) / 2
1111 (AVCC – AVSS) / 2
這是從用戶指南里復制來的,每一位和ADC12MCTLx的意義相同(去掉EOS位),所以可用宏定義來制定這個參數,如:
char channels[3];
channels[0] = SREF_1+INCH_0;
channels[1] = SREF_1+INCH_1;
channels[2] = SREF_1+INCH_2;
ADC12Init(3,channels,1);
這是3個通道A0-A2采樣,多次采樣。
啟動轉換函數:
void ADC12Start()
{
ADC12CTL0 |= ENC;
ADC12CTL0 |= ADC12SC;
}
ADC初始化完成后,調用此函數開始AD轉換,轉換完成后(一個序列通道,如:剛才的0-2),程序自動進入AD中斷,用戶需要在這里為自己的函數添加處理邏輯;這里只存儲了轉化的結果:
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
static int i;
results[0][i] = ADC12MEM0; // Move results, IFG is cleared
results[1][i] = ADC12MEM1; // Move results, IFG is cleared
results[2][i] = ADC12MEM2; // Move results, IFG is cleared
i++;
if(i>31) //多次轉換時 轉換次數
{
//多次重復采樣時,在這里方處理函數
ADC12CTL0 &=~ ENC; //停止轉換
i=0;
}
}
該程序實現的是多次A0-A2 32次轉換,把結果存入results數組。單次時,僅僅采樣一次(A0-A2)可用自己更改處理函數。
程序部分就完成了,調用時注意要自己實現處理邏輯或存儲邏輯。
使用示例:
本程序使用方式還是加入C文件,包含H文件;不過和之前的程序不同的是要自己實現中斷處理邏輯。
使用示例參見程序庫中的ADC12.
#include #include "ADC12.h" void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; ClkInit(); char channels[3]; channels[0] = SREF_1+INCH_0; channels[1] = SREF_1+INCH_1; channels[2] = SREF_1+INCH_2; ADC12Init(3,channels,1); _EINT(); ADC12Start(); LPM0; } 這里實現的是3通道多次轉換,參考電壓都是內部參考電壓。自己實現的處理邏輯參見前面的程序實現的最后一部分。 ADC12模塊部分就到這里了,有什么不足之處,歡迎提出建議、討論。
上一篇:MSP430程序庫<十一>定時器TA的PWM輸出
下一篇:MSP430程序庫<九>數碼管顯示
推薦閱讀
史海拾趣
在追求經濟效益的同時,AOTC也積極履行社會責任。公司注重環保和可持續發展,采用環保材料和節能技術生產產品,降低對環境的影響。此外,公司還積極參與公益事業,支持教育、科研等領域的發展,為社會做出了積極貢獻。
這些故事雖然是虛構的,但它們反映了一個電子行業中公司可能經歷的一些典型發展階段和挑戰。在真實情況中,公司的發展路徑會受到市場環境、技術變革、競爭態勢等多種因素的影響。
隨著產品線的不斷擴展,AOTC開始進軍國際市場。公司積極與各大電子廠商合作,將光電轉換器集成到各類電子產品中,從而實現了市場份額的快速增長。同時,公司還不斷投入研發,對產品進行升級迭代,以滿足市場不斷變化的需求。
在競爭激烈的電子行業中,持續的研發和創新是企業生存和發展的關鍵。Semi-Films Division 深知這一點,因此始終將研發和創新作為公司的核心競爭力。公司投入大量資金和資源用于新技術和新產品的研發,不斷推出具有更高性能、更低成本的產品來滿足市場的需求。這些創新產品不僅為公司帶來了豐厚的利潤,也提升了公司在行業中的地位和影響力。
隨著市場的擴大和競爭的加劇,Semi-Films Division 意識到品質是品牌的核心。因此,公司加大了對產品質量控制的投入,引入了先進的生產設備和檢測手段,確保每一批產品都符合客戶的要求。同時,公司還建立了完善的質量管理體系,對生產過程進行全程監控,確保產品質量的穩定性和可靠性。這些努力使得 Semi-Films 的產品在市場上贏得了良好的口碑。
在技術創新的同時,順芯公司也注重市場拓展和品牌建立。公司積極參加國內外各類展會和論壇,與潛在客戶和合作伙伴建立了廣泛的聯系。同時,順芯公司還加強了與渠道商的合作,提高了產品的市場覆蓋率。通過一系列的市場推廣活動,順芯公司的品牌知名度和美譽度逐漸提升。
CAROLCABLE公司的創立,標志著電子線纜行業迎來了一位新的競爭者。在電子科技飛速發展的時代背景下,創始人憑借對線纜技術的深刻理解和市場需求的敏銳洞察,決定創立CAROLCABLE公司。公司初期,面臨著資金短缺、技術瓶頸和市場認知度低等多重挑戰。然而,創始人憑借著堅定的信念和不懈的努力,帶領團隊克服了一個又一個困難。他們積極研發新產品,優化生產工藝,提高產品質量,逐漸在市場上站穩了腳跟。
隨著公司業務的不斷拓展,CAROLCABLE開始與一些知名的電子企業建立合作關系,為其提供高質量的線纜產品。這些合作不僅為公司帶來了穩定的訂單和收入,也進一步提升了CAROLCABLE在行業內的知名度和影響力。
多數現行微處理器、DSP、現 場可編程門陣列都集成了硬件和軟件資源,它們支持兩種常見接口標準——SPI(串行外設接口)和I2C /SMBus——中的一種或兩種。兩種雙線接口標準都有幾個關鍵缺點。例如,I2C在標準模式、快速模式 ...… 查看全部問答∨ |
醫療儀器原理 王成 上海交通大學出版社 2008-05-01 目錄: 1 緒論 ----------------8 1.1 醫療儀器 ----------------8 1.2 醫療儀器的構成 ----------------10 1.3 ...… 查看全部問答∨ |
各位大俠: 我現在是交叉編譯了一個驅動模塊,現在已經能夠成功的加載在開發板上,這個開發板是MIPS處理器,上面跑的是linux系統。但是我的程序里有printk()函數,按道 理說應該可以打印出信息在/var/log/messages里 ...… 查看全部問答∨ |
|
有沒人在調試S3C6400下的SPI通信,我的怎么怪怪的,設置成接收模式,還沒接數據源,SPI中斷會被不斷地被觸發,不知道為什么?干擾嗎?! 有沒人在調試S3C6400下的SPI通信,我的怎么怪怪的,設置成接收模式,還沒接數據源,SPI中斷會被不斷地被觸發(進了SPI中斷,接到的數據個數一般為1個,數據不定,0X00和0XFF居多),不知道為什么?干擾嗎?怎么查干擾因素?!… 查看全部問答∨ |
|
HelloM3應用筆記--TI M3 Tempest C1版本編程說明 2010年5月份以后生產的Tempest系列C1版本的芯片,其前4K內部Flash里打了一個復位補丁,所以所有的用戶程序的代碼起始地址需要修改為0x1000,在用戶程序的啟動代碼中,需要將FLASH Controll的中斷向量指向0x881的地址(注意不要將該補丁擦除 ...… 查看全部問答∨ |
硬件連接電路如:USB電路.jpg和cpu.jpg所示,電源4腳USB_HOST_DEC接AD,不過現在不用。CPU為STM32F103VCT6,采用外部晶振12M,固件庫采用STM32_USB-FS-Device_Lib_V3.2.1中的virtual_Com_port。 按照USB時鐘要求,已經把PLLCLK配置為72M,USB ...… 查看全部問答∨ |
STM32的同步注入模式怎么用阿?怎么設置都只能使得ADC1可以轉換,ADC2似乎沒有反應。/******************************************************************************** Function Name : ADC_Config* Descr ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 將低功耗設計進行到底——評論、轉發贏大禮!
- 芯幣競拍:感恩教師節專場
- Keysight示波器主題月有獎系列活動之 注冊大獎天天抽 搶樓踩中亦有獎
- Microchip有獎直播:VectorBlox™ SDK 報名中
- 有獎直播|ADI 慣性MEMS應用那些事
- 借助 Microchip 生態系統中的 PIC® 和 AVR® 單片機開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點入門STM32(專為嵌入式應用而開發的內核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中