新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于VC的MV05芯片PWM功能测试软件设计

基于VC的MV05芯片PWM功能测试软件设计

作者:时间:2012-08-30来源:网络收藏

3 上下位机通信协议

上下位机进行通信就要约定通信协议。上位机每次向下位机发送数据时首先发送“48 59 4c”3 个数据, 下位机判断接收到的前3 个数据是不是“48 59 4c”,如果是则继续接收后 面的数据,否则丢弃数据。“48,59,4c”后面紧跟的是8bit 数据,下位机接收到该8bit 数 据后进行按位解析,按照约定相应的位进入相应的特殊功能寄存器,下位机配置好特殊功能 寄存器后便会执行相应操作,从而验证功能是否正确。通过该协议可以降低下位机的编 程复杂度,接收一次数据就可以将所需配置的寄存器配置好,从而也提高了通信的效率。 用户自定义模式下的数据包的格式如表1 所示。

捕获模式下与 用户自定义模式的数据包除了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原理




关键词: PWM MV 05 芯片

评论


相关推荐

技术专区

关闭