記一次DAC轉換功能修改的解決

来源:https://www.cnblogs.com/assassinx/archive/2022/04/23/16182791.html
-Advertisement-
Play Games

最近的項目搗鼓msp430需要用到dac轉換以輸出模擬信號,項目代碼是接手前同事的 有些地方調試不通,以前沒有接觸過msp430晶元,更是沒搞過這種晶元io口時序驅動層的東西,甚至純c的都是頭一次作為工作正式用。沒辦法 萬事開頭難嘛 ,硬著頭皮網上到處翻資料 找晶元的手冊 找dac外設的寄存器說明, ...


最近的項目搗鼓msp430需要用到dac轉換以輸出模擬信號,項目代碼是接手前同事的 有些地方調試不通,以前沒有接觸過msp430晶元,更是沒搞過這種晶元io口時序驅動層的東西,甚至純c的都是頭一次作為工作正式用。沒辦法 萬事開頭難嘛 ,硬著頭皮網上到處翻資料 找晶元的手冊 找dac外設的寄存器說明,功夫不負有心人 最終還是被我解決了。

記錄一下解決的過程

首先對以前的代碼瀏覽了一遍,以及對網上到處抄過去抄過來的文章有了個初步的大概套路瞭解。首先這是一個12位的dac外設 ,先對他進行初始化就是 設置參考電壓源 設置各個寄存器 打開外設,然後12位嘛 自然是0x00~0xfff輸出對應電壓。就像下麵這樣,事先我已經確保了硬體連線是正確的,知道了DAC12_0CTL是寄存器控制位,知道了DAC12ENC是使外設工作,DAC12_0DAT是輸出模擬量。

1 //不能使用內部參考電壓 會影響到溫度感測器
2   //ADC12CTL0 = REFON + REF2_5V;                        // 參考電壓為內部2.5v
3   DAC12_0CTL = DAC12AMP_5 + DAC12IR + DAC12LSEL_0;//控制寄存器設置,自動更新數據,內基準為滿量程
4   DAC12_0CTL |= DAC12SREF_2;//使用外部參考電壓 外部的為3.3v
5   DAC12_0CTL |= DAC12ENC; // 啟動DAC模塊(DAC12LSEL_0時此句可以省,這裡設置為1)
6   DAC12_0DAT = 0x0000;    //DAC初值為0,更新這個寄存器就可以更改DAC輸出數據

好我們繼續往下工作,然後在網上翻到了一篇晶元的中文手冊  https://www.docin.com/p-301491113.html  找到了第119頁關於DAC外設描述的位置,主要就是這幅圖。

 

 

 

學單片機入門的時候這種框圖也見識過 知道是單片機內部機制的描述 跟內部機制是對應的,自己憑這種圖真正解決問題的話是頭一遭。進而我觀察到了自己代碼跟圖上有聯繫關係,怎麼個聯繫法呢 ,那就是DAC12SREFX吸引了我的關註,因為代碼里跟圖上單詞是相似的,原來代碼里寫的是DAC12SREF_0 ,進而我跟蹤到了他的定義。

1 #define DAC12SREF_0         (0*0x2000u)  /* DAC12 reference 0: Vref+ */
2 #define DAC12SREF_1         (1*0x2000u)  /* DAC12 reference 1: Vref+ */
3 #define DAC12SREF_2         (2*0x2000u)  /* DAC12 reference 2: Veref+ */
4 #define DAC12SREF_3         (3*0x2000u)  /* DAC12 reference 3: Veref+ */

通過後面的註釋以及其它網站的說明瞭解到Vref+是內部參考電壓源 Veref+是外部參考電壓源,再進而發現下麵還有一個寄存器描述表,我知道事情有眉目了。

 

通過對照硬體原理圖我已經事先知道了確實是使用的0號通道,也就是DAC12_0CTL,再結合上面的框圖知道了第01是vref 通過框圖看到也是對應的節點也是連在一起的。23是veref,我們是使用外部電壓參考源那麼使用2。對照框圖和寄存器說明 以及註釋 覺得直接使用

DAC12SREF_2應該就對了,那麼我們還是來確保驗證一下吧。
1 #define DAC12SREF_2         (2*0x2000u)  /* DAC12 reference 2: Veref+ */

 2*0x2000u對照上面的寄存器說明可以看到第14 和13 位是二進位的10 ,也正好契合到框圖的DAC12SREFX處梯形的第三個。說明根據以前經驗的推測都是正確的。由於我用的IAR工具里沒法調試,於是把初始化的幾個巨集定義玲出來在vc++里查看了最終組合出的位元組值,以及把對應的二進位位對照寄存器說明進行了一個確認。然後DAC12_0DAT進行輸出 ,測試一下,大功告成,一切正常。

 

經過這一過程,感覺人真是神奇 對吧,  通過對現象規律關聯思索  對現象的預測 建立假想模型  ,主觀能動性加上摸索學習能力,竟然也可以解決未知的問題。

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Q641TC氣動陶瓷球閥具有超強的耐腐蝕、耐高溫、耐磨損及耐沖蝕等顯著特點。廣泛應用於石化、冶金、造紙、電站、煉油等行業的各類酸鹼鹽氣體、液體、高溫蒸汽和泥漿輸送系統中。 ...
  • 最近幾天我一直常用的Kubuntu(KDE yes!)更新至22.04後居然出現無法更改軟體源的bug,去Kubuntu論壇一看有同樣問題的人還不在少數,但卻沒有好的解決辦法,故而只有備份數據裝回Ubuntu。 由於學習需要,我需要再裝一遍Pytorch。Pytorch在linux上安裝推薦使用co ...
  • 最近沉寂的太久了,只為了給大家準備這一套試題,這大概是全網最全面的了,各位學這麼久Python,檢驗學習成果的時間到了!! 話不多說我們直接開始把! 一、填空題 001、Python安裝擴展庫常用的工具是lxx__lxx__和conda,其中後者需要安裝Python集成開發環境Anaconda3之後 ...
  • C++-類與對象(2)-繼承 繼承 一個小引子 有些類之間存在特殊的關係,像下麵的圖一樣: 定義這些類時,下級的成員除了有向上一級類的共性,還有自己的特性,這時,就可以用繼承的技術,減少代碼的重覆 繼承的基本語法 class 子類 : 繼承方式 父類 子類:也叫派生類 父類:也叫基類 #includ ...
  • 20212217劉恆謙 《Python程式設計》實驗三報告 代碼鏈接: 伺服器 客戶端 課程:《Python程式設計》 班級: 2122 姓名: 劉恆謙 學號:20212217 實驗教師:王志強 實驗日期:2022年4月23日 必修/選修: 公選課 1.實驗內容 利用socket進行網路通信,併在客 ...
  • 14-Reference & Value Semantics、 Pointers vs Values、 Loop Gotcha ...
  • 前言 圖像是 Web 應用中除文字外最普遍的媒體格式。 流行的 Web 靜態圖片有 JPEG、PNG、ICO、BMP 等。動態圖片主要是 GIF 格式。 為了節省圖片傳輸流量,大型互聯網公司還會定製特殊格式的圖片,WEBP 格式就是一個代表。 Python 除了數據分析,做圖片處理也是非常好用的。 ...
  • 前言 在一個Web應用中,通常會採用MVC設計模式實現對應的模型、視圖和控制器,其中,視圖是用戶看到並與之交互的界面。對最初的Web應用來說,視圖是由HTML元素組成的靜態界面;而後期的Web應用更傾向於使用動態模板技術,從而實現前後端分離和頁面的動態數據展示。Spring Boot框架為簡化項目的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...