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