我們使用 STM32CubeMX 軟件進行配置。DAC 的配置是相對很簡單的,如下圖所示:
選擇兩個輸出通道,其中 External Trigger 選項為是否選擇 外部中斷EXTI9 觸發,如下圖所示:
DAC 的基本設置,很簡單,對于博主使用的 STM32L151 來說就只有2個選項:
DAC選擇了輸出緩存,可以用來減少輸出阻抗,無需外部運放即可直接驅動外部負載。但是輸出的電壓沒法低于20mv。
不使能輸出緩存,DAC可以輸出低于20mv的信號。
對于其他型號的 DAC ,可能還會有下面兩個選項:
Wave generation mode
波形生成模式:可選三角波發生器 ( Triangle wave generation ) 和 噪聲波形 ( noise wave generation )
Maximum Triangle Amplitude,最大三角波幅:0-4095 對應 0V~3.3V
1、觸發源software trigger與None的區別
這里要額外說明一下,最后一個選項 software trigger (軟件觸發) 與 選擇 None (沒有觸發源)的區別。
這兩種觸發源很多小伙伴在使用的時候會搞糊涂,實際上這兩者是完全不同的,先用文字簡單解釋一下(簡單使用 HAL 庫,不了解寄存器沒關系,這里只是為了說明區別,):選擇 None (沒有觸發源):只在向 DAC 數據寄存器 DHR 寫入數據之后,DAC 轉化模塊自動轉換一次。選擇 software trigger (軟件觸發):
向軟件觸發寄存器 SWTRIGR 中寫入命令時觸發轉換,將 DOR 寄存器中的數據進行轉換。 但是在這個之間需要向 DAC 數據寄存器 DHR 寫入數據, 再進行軟件觸發操作。
可以說,software trigger (軟件觸發)就比 None (沒有觸發源) 多一個步驟,首先都要寫 DHR 寄存器寫入數據,寫完后 None 自動轉換,但是 software trigger 需要多一步軟件觸發操作。
在標準庫中,使用步驟區別:如果模式為 DAC_Trigger_None :直接使用 DAC_SetChannelxData() 設置輸出電壓,就可以設定輸出電壓的大小
如果模式為軟件觸發:每次在使用 DAC_SetChannelxData() 設置或者修改輸出電壓后, 還需要調用 DAC_SoftwareTriggerCmd(),使能軟件觸發。
在 HAL 庫中,沒有單獨的軟件觸發的代碼,因為 HAL_DAC_Start() 函數中包含了軟觸發轉換的代碼。所以在 HAL 庫中,建議的使用方法步驟為:初始化完成后,先使用 HAL_DAC_SetValue(); ,然后再使用 HAL_DAC_Start(); ,這樣的先后順序不管是使用上面的那種方式,都能夠正常輸出電壓值。
在平時使用中需要謹慎使用,因為每一次修改輸出電壓后,都必須產生一次觸發信號來使得 DAC 觸發 。
-
dac
+關注
關注
43文章
2271瀏覽量
190840 -
STM32
+關注
關注
2266文章
10871瀏覽量
354821 -
中斷
+關注
關注
5文章
895瀏覽量
41394 -
stm32cubemx
+關注
關注
5文章
280瀏覽量
14756 -
CubeMx
+關注
關注
0文章
30瀏覽量
1324
發布評論請先 登錄
相關推薦
評論