基于VC的MV05芯片PWM功能測試軟件設計
3 上下位機通信協議
上下位機進行通信就要約定通信協議。上位機每次向下位機發送數據時首先發送“48 59 4c”3 個數據, 下位機判斷接收到的前3 個數據是不是“48 59 4c”,如果是則繼續接收后 面的數據,否則丟棄數據。“48,59,4c”后面緊跟的是8bit 數據,下位機接收到該8bit 數 據后進行按位解析,按照約定相應的位進入相應的特殊功能寄存器,下位機配置好特殊功能 寄存器后便會執行相應操作,從而驗證芯片功能是否正確。通過該協議可以降低下位機的編 程復雜度,接收一次數據就可以將所需配置的寄存器配置好,從而也提高了通信的效率。PWM 用戶自定義模式下的數據包的格式如表1 所示。
PWM 捕獲模式下與PWM 用戶自定義模式的數據包除了bit4~bit2 三位表示的意義不同 外,其余各位表示的意義相同,捕獲模式下 bit4~bit2 用來設置捕獲外部信號的周期數: 000:單個周期;001:兩個周期;010:4 個周期依次類推周期數成倍增長。
4 上位機軟件設計
本文上位機軟件使用VC++6.0 開發。使用VC++最重要的就是能夠了解控件的屬性,熟 練對控件編程。VC++6.0 中的每個控件都有一個ID 號進行標識,每個ID 可以映射成一個變 量或響應函數。VC++6.0 中的類是方法和變量的總和,通過例化該類使用其中的方法和變量, 如本軟件中的串口設置對話框:
CSettingDlg setDlg; // 例化
m_nPort = setDlg.m_nPort; //變量傳遞 將CsettingDlg 中的
m_nTime = setDlg.m_nTime; //變量映射到主控類的變量
m_strSettings = setDlg.m_strSettings;
4.1 串口通信模塊設計
在Microsoft Windows 下開發串行通信程序的方法有:(1)利用WindowsAPI通信函 數(2)利用Windows的讀寫端口函數或開發驅動程序直接對串口進行操作(3)利用第三方 提供的通信類(4)使用串口通信組件。其中第四種方法較簡單,只需要對串口進行簡單設置[3]。本上位機串口通信程序使用MSComm控件進行開發。
MSComm控件是Microsoft公司提供 的簡化Windows下串行接口收發數據的簡便方法。MSComm處理數據有兩種方法, 查詢法和事 件驅動法[4],本文使用事件驅動法。 串口設置對話框獨立于主對話框,通過串口設置按鈕彈出,用戶可以在串口設置對話框 中進行串口選擇,設置波特率、停止位、校驗位等參數[4]。軟件在主控類中定義了一個全局 變量m_strSendString,上位機要發送的數據賦給該變量,然后通過發送函數發送出去。
4.2 PWM 模塊
PWM 模塊包括PWM 用戶自定義模塊和PWM 捕獲模塊,PWM 捕獲模塊與PWM 用戶自定義模 塊在控件使用和編程思想上是一樣的,只不過數據包各位代表的意義不同,因此這里只介紹 PWM 用戶自定義模塊,PWM 捕獲模塊不再贅述。
PWM 用戶自定義模塊可以設置芯片PWM 模塊的工作周期和PWM 波不同占空比,另外還增 加了ADC 聯動功能。增加ADC 聯動功能是為了測試下一款芯片功能設計的,此次測試并未用 到。PWM 模塊的工作周期選擇,PWM 波占空比選擇和ADC 聯動功能選擇用復選框表示,用戶 根據自己測試需要,選擇不同的選項,最后按“確定”按鈕將所選項目封裝成數據包,按“啟 動PWM”按鈕將測試指令發送到下位機,進行測試。
根據通信協議將用戶選擇測試的項目封裝成一個8 位數據包,該數據包存放在一個整型 數組里面,將該8 位數據看作是一個字符的二進制表示,根據每位數據所占的權值取加權和 得到一個10 進制數,最后將該10 進制數轉化為一個16 進制數,該16 進制數就是最終要封 裝的數據包。為了防止用戶誤選測試項目,軟件中作了一些安全處理,當用戶選擇同類中的 一個測試項目后其它項目會變為不可選。軟件界面如圖1 所示。
pwm相關文章:pwm原理
評論