• 欢迎来到 - 我就爱电子网 - http://www.592dz.com !
您的位置:> 我就爱电子网电子文章EDA/PLD基于VC的MV05芯片PWM功能测试软件设计 -- 正文
正文

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

[10-21 14:24:02]   来源:http://www.592dz.com  EDA/PLD   阅读:9127

 

概要:资源丰富、操作配置方便、运行速度较快等特点。而串 口通信具有实现简单, 使用灵活方便, 数据传输可靠等优点, 因而用VC++编制串口实时控 制软件十分方便[1]。下位机使用汇编语言编程,汇编语言使用灵活,执行效率高,在芯片测 试方面非常实用。MV05具有8051的所有功能,在其基础上增加了PWM功能,本文只对PWM功能 测试进行介绍。 2 芯片简介 MV05是上海大学微电子研究与开发中心自主研发的一款芯片,完全拥有自主知识产权, 该芯片用于对汽车发动机冷却风扇的控制。此芯片含一个8051系列内核的CPU,它的指令集 与标准8051内核完全兼容。经过重新设计的内核,指令周期变为4个系统时钟周期。相比标 准8051平均效率提高2.5倍。作为标准8051CPU,含有一个8位的CPU内核,8位指令操作代码, 8位操作数,8位数据总线以及16位地址总线。内置两路PWM输出,一个单独的UART通讯模块 , 工作电压3.3V,采用chartered0.35um 2p4m CMOS工艺。PWM 模块具有自定义输出和动态跟踪外部信号两种功能,通过设置PWMMODE 来选择这两 种功能,而且两路PWM 具有独立和互补的工作模式。当工作在独立模式时,两路PWM 可独立 输出PWM 波。芯片的PWM 功能复

基于VC的MV05芯片PWM功能测试软件设计,http://www.592dz.com

  摘要:本文介绍了MV05芯片的特性和PWM模块各个寄存器的用途,概述了VC++的基本知识和在VC++6.0中使用MSComm控件开发串口通信程序的方法。针对PWM模块的特点给出了PC机与MV05的通信协议、数据包格式、以及PWM用户自定义模式下的编程代码和软件界面图。

  1 引言

  在微电子行业,芯片封装好后无不例外要进行系统级的验证,以检查芯片功能是否正确。 MV05 芯片是本课题组自主设计的一款芯片,本文介绍了一种对该芯片进行测试的方法,上 位机通过芯片内置的一个单独UART 通讯模块向下位机发送指令,再判断芯片执行指令是否 正确,从而确定芯片功能是否符合设计要求。

  上位机使用VC++编写控制软件,VC++由于功能强大和应用灵活, 得到Microsoft 系统的 最好支持, 具有图形界面友好、系统资源丰富、操作配置方便、运行速度较快等特点。而串 口通信具有实现简单, 使用灵活方便, 数据传输可靠等优点, 因而用VC++编制串口实时控 制软件十分方便[1]。下位机使用汇编语言编程,汇编语言使用灵活,执行效率高,在芯片测 试方面非常实用。MV05具有8051的所有功能,在其基础上增加了PWM功能,本文只对PWM功能 测试进行介绍。 2 芯片简介 MV05是上海大学微电子研究与开发中心自主研发的一款芯片,完全拥有自主知识产权, 该芯片用于对汽车发动机冷却风扇的控制。此芯片含一个8051系列内核的CPU,它的指令集 与标准8051内核完全兼容。经过重新设计的内核,指令周期变为4个系统时钟周期。相比标 准8051平均效率提高2.5倍。作为标准8051CPU,含有一个8位的CPU内核,8位指令操作代码, 8位操作数,8位数据总线以及16位地址总线。内置两路PWM输出,一个单独的UART通讯模块 , 工作电压3.3V,采用chartered0.35um 2p4m CMOS工艺。

  PWM 模块具有自定义输出和动态跟踪外部信号两种功能,通过设置PWMMODE 来选择这两 种功能,而且两路PWM 具有独立和互补的工作模式。当工作在独立模式时,两路PWM 可独立 输出PWM 波。芯片的PWM 功能复用到p1 口上,其中p1.2,p1.3 用于捕获输入,P1.4,P1.5 用于PWM 双通道脉宽调制输出信号。PWM 模块定义的寄存器如下:

  PWMMODE: PWM 方式寄存器用于对对PWM 的工作方式进行设置,包括用户自定义模式和捕获外部输入信号模式。

  PWMCON: PWM 控制寄存器,用来控制PWM 功能的开启和关闭。

  Tcap1CON: 捕获1 控制寄存器,用于设置捕获采样的外部信号周期数

  Tcap2CON 捕获2 控制寄存器,用于设置捕获采样的外部信号周期数

  UTL0 PWM0输出的周期寄存器低8 位

  UTH0 PWM0输出的周期寄存器高8 位

  UWL0 PWM0输出的脉宽寄存器低8 位

  UWH0 PWM0输出的脉宽寄存器高8 位

  UTL1 PWM1输出的周期寄存器低8 位

  UTH1 PWM1输出的周期寄存器高8 位

  UWL1 PWM1输出的脉宽寄存器低8 位

  UWH1 PWM1输出的脉宽寄存器高8 位

  UTL0,UTH0 ,UWL0 ,UWH0 ,UTL1,UTH1,UWL1,UWH1 用于用户自定义模式下PWM 波占空比的设置[2]。

  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,上位机要发送的数据赋给该变量,然后通过发送函数发送出去。

[1] [2]  下一页


标签:EDA/PLDeda技术大全,eda技术实用教程EDA/PLD
《基于VC的MV05芯片PWM功能测试软件设计》相关文章