1. 程式人生 > 其它 >MSP430 DAC模組 學習筆記

MSP430 DAC模組 學習筆記

一、DAC結構與效能:

MSP430f169微控制器有2DAC通道,這兩個通道在操作上是完全平等的,可以通過DAC12GRP控制位將多個DAC12通道結合起來;

DAC特點:

  1. 812位解析度
  2. 可程式設計的時間和能量損耗
  3. 支援無符號和有符號資料輸入
  4. 內部和外部參考電壓的選擇
  5. 具有自效驗功能
  6. 二進位制或者二進位制補碼形式
  7. 多路DAC同步更新
  8. 可以直接用於儲存器存取

二、DAC相關暫存器設定

  1. DAC轉換控制暫存器——DAC12_xCTL

其中灰色的部分只有在DAC12ENC = 0時才能修改,位DAC12GRP只有在DAC12_1暫存器中才使用。

15——保留

14、位13——DAC12REFx

:選擇DAC12的參考緣。01VREF+23VEREF+

12——DAC12RES:選擇DAC12解析度。012位解析度;18位解析度。

11、位10——DAC12LSELx:鎖存器觸發源選擇當 DAC12鎖存器得到觸發之後,能夠將鎖存器中的資料傳送到DAC12的核心。當 DAC12LSELx=0的時候,DAC資料更新不受DAC12ENC 的影響。0 DAC12_XDAT執行寫操作將觸發(不考慮DAC12ENC 的狀態)1DAC12_XDAT執行寫操作將觸發(考慮DAC12ENC 的狀態)2Timer_A3.OUT1的上升沿3Timer_B7.OUT2的上升沿

9——DAC12CALON

DAC12效驗操作控制。置位後啟動效驗操作,效驗完成後自動被複位。效驗操作可以校正便宜誤差。0:沒有啟動效驗操作;1:啟動效驗操作。

8——DAC12IRDAC12輸入範圍,此位設定輸入參考電壓和輸出的關係。0DAC12的滿量程位參考電壓的3倍(不操作AVcc);1DAC12的滿量程為參考電壓。

7~5——DAC12AMPxDAC12運算放大器設定

0 輸入緩衝器關閉,輸出緩衝器關閉,高阻

1 輸入緩衝器關閉,輸出緩衝器關閉,0V

2 輸入緩衝器低速低電流,輸出緩衝器低速低電流

3 輸入緩衝器低速低電流,輸出緩衝器中速中電流

4 輸入緩衝器低速低電流,輸出緩衝器高速高電流

5 輸入緩衝器中速中電流,輸出緩衝器中速中電流

6 輸入緩衝器中速中電流,輸出緩衝器高速高電流

7 輸入緩衝器高速高電流,輸出緩衝器高速高電流

4——DAC12DFDAC12的資料格式。0:二進位制;1:二進位制補碼

3——DAC12IEDAC12的中斷允許。0:禁止中斷;1:允許中斷

2——DAC12IFGDAC12的中斷標誌位。0:沒有中斷請求;1:有中斷請求

1——DAC12ENCDAC12轉換控制位。DAC12LSEL>0時,DAC12DAC12ENC才有效。

0DAC12停止;1DAC12轉換。

0——DAC12GRPDAC12組合控制位。0:沒有組合;1:組合

  1. DAC資料暫存器DAC12_xDAT

DAC12_xDAT4位為0,不影響DAC12的工作。DAC12工作在8位模式時,DAC12_xDAT的最大值為0x00FFDAC12工作在12位模式時,DAC12_xDAT的最大值為0x0FFF

三、DAC12的操作及設定和應用

(1)選擇參考電壓。

(2)DAC12核心

(3)更新DAC12的電壓輸出

(4)DAC12_xDAT的資料格式

(5)校正DAC12的輸出

(6)DAC12使用時要注意的問題;

1)參考電壓的選擇,如果使用後內部參考電壓則需要在DAC12模組中開啟參考內部電壓發生器,DAC12核心不用開啟;

2)MSP430F169微控制器上DAC120通道使用的是A61通道使用的是A7的引腳;

3)如果使用了DAC122個通道,A6A7就不能使用;

4)校正DAC12的編譯誤差

5)設定DAC12的位數和滿量程電壓(滿量程電壓最高為AVCC);

6)設定DAC12的觸發方式。

四、輸出電壓

簡單的輸出1V程式碼

 1 #include <msp430f169.h>
 2 void main(void){
 3         WDTCTL = WDTPW + WDTHOLD;                       //關閉看門狗
 4         ADC12CTL0 = REFON + REF2_5V;                    //DA使用內部1.5V參考電壓
 5         DAC12_0CTL = DAC12IR + DAC12AMP_5 +DAC12ENC;    //滿量程輸出是參考電壓的1倍,輸入輸出緩衝器中速電流,DAC使能
 6 
 7         DAC12_0DAT = 0x0666;                            //P6.7輸出1V電壓
 8         _BIS_SR(LPM4_bits);                             //進入LPM4
 9 
10 }