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