实现微控制器可配置性的方法和可配置的微控制器.pdf

上传人:b*** 文档编号:972903 上传时间:2018-03-22 格式:PDF 页数:29 大小:1.33MB
返回 下载 相关 举报
摘要
申请专利号:

CN200810033363.X

申请日:

2008.01.31

公开号:

CN101499053A

公开日:

2009.08.05

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 15/78公开日:20090805|||实质审查的生效IPC(主分类):G06F 15/78申请日:20080131|||公开

IPC分类号:

G06F15/78; G06F9/445

主分类号:

G06F15/78

申请人:

上海普芯达电子有限公司

发明人:

赵依军

地址:

200122上海市张江高科技园区郭守敬路351号2号楼698-01室

优先权:

专利代理机构:

上海明成云知识产权代理有限公司

代理人:

周 成

PDF下载: PDF下载
内容摘要

一种可低成本地实现微控制器的电路功能可配置的方法,微控制器包括中央处理单元、数据存储器、程序存储器、输入/输出端口和定时器,包含下列步骤:确定所需配置的硬件电路的功能;以及在程序存储器内存储应用程序和子程序,子程序用于实现所需配置的硬件电路的功能并且可被应用程序调用。按照本发明,以实现硬件电路功能的子程序来替代集成在微控制器内的硬件电路,降低了微控制器的设计难度和制造成本。此外,由于通过软件升级即可扩展和改变微控制器的功能,因此与在微控制器内集成硬件电路的方式相比,在可扩展性和开发的便利性方面具有明显的优势。还有,本发明利用子程序来实现硬件电路的功能可以充分挖掘处理器的计算资源,从而进一步提高系统的性价比。

权利要求书

1、  一种实现微控制器可配置性的方法,所述微控制器包括中央处理单元、数据存储器、程序存储器、输入/输出端口和定时器,其特征在于,包含下列步骤:
确定所需配置的硬件电路的功能;以及
在所述程序存储器内存储应用程序和子程序,所述子程序用于实现所需配置的硬件电路的功能并且可被所述应用程序调用。

2、
  如权利要求1所述的方法,其中,所述应用程序用C语言编写,所述子程序用汇编语言编写,并且所述应用程序以函数调用的方式调用所述子程序。

3、
  如权利要求1所述的方法,所述应用程序和子程序是可更新的。

4、
  如权利要求3所述的方法,所述应用程序和子程序通过系统可编程或应用可编程方式更新。

5、
  如权利要求1所述的方法,所述子程序以加密保护的形式存储在所述程序存储器内。

6、
  一种可配置的微控制器,包括:中央处理单元、数据存储器、程序存储器、输入/输出端口和定时器,其特征在于,所述程序存储器内存储多个子程序,所述子程序用于实现硬件电路的功能并且可被由所述中央处理单元执行的应用程序调用。

7、
  如权利要求6所述的微控制器,其中,所述硬件电路为输入输出设备接口。

8、
  如权利要求7所述的微控制器,其中,所述输入输出设备接口为液晶显示器并行接口电路、发光二极管数码管接口电路、电容式感应键接口电路或键盘接口电路中的至少一种。

9、
  如权利要求6所述的微控制器,其中,所述硬件电路为通信接口。

10、
  如权利要求9所述的微控制器,其中,所述通信接口为通用异步收发器、I2C接口电路、SPI接口电路和单总线接口电路中的至少一种。

11、
  如权利要求6所述的微控制器,其中,所述硬件电路为脉冲宽度调制电路、数模/模数转换器、电压比较电路、温度测量电路中的至少一种。

12、
  如权利要求6所述的微控制器,其中,所述数据存储器为随机存取存储器,所述程序存储器为只读存储器或快闪存储器。

13、
  如权利要求6所述的微控制器,其中,所述微控制器基于哈佛架构。

14、
  如权利要求6所述的微控制器,其中,所述微控制器基于冯·诺依曼架构。

15、
  如权利要求6所述的微控制器,其中,所述程序存储器包括多个快速存储器,其中两个分别用于存储引导程序和所述子程序。

16、
  如权利要求15所述的微控制器,所述引导程序支持系统可编程或应用可编程功能。

17、
  如权利要求15所述的微控制器,存储所述子程序的快速存储器是受加密保护的。

18、
  如权利要求6所述的微控制器,其中,所述程序存储器包括一个划分为多个区域的快闪存储器,引导程序和所述子程序被存储在不同的所述区域内。

说明书

实现微控制器可配置性的方法和可配置的微控制器
技术领域
本发明涉及微控制器,特别涉及一种低成本实现微控制器电路功能可配置性的方法和一种可配置的微控制器。
背景技术
与通用微处理器不同,微控制器是一种更为强调自足性(即尽量少用外接硬件)和性价比的微处理器,其通常将只读存储器(ROM)、随机存储器(RAM)、中央处理单元(CPU)、定时器和I/O端口等单元集成在一块芯片内,以满足不同场合下的应用需求。有关微控制器的结构和工作原理已有诸多描述,例如可参见《8051微控制器教程》(第3版)(清华大学出版社2005年12月1日出版),该文献在此以全文引用方式包含在本文中。
为了进一步减少微控制器所需的外接硬件,人们尝试将一些数字电路单元和模拟电路单元也集成到微控制器芯片内。图1示出了一种典型的集成了数字电路和模拟电路的微控制器芯片的架构图。如图1所示,该微控制器包括内核、数字系统、模拟系统和系统资源,而可配置的全局总线资源可将所有的器件资源组合成为一个完整的定制系统。
内核作为处理引擎,包含用于存储数据的静态随机存储器(SRAM)、中断控制、时钟资源(包括内部主晶体振荡器(IMO)和内部低速晶体振荡器(ILO))和中央处理单元核。
数字系统包含若干可配置的数字逻辑电路单元,它们可以独立或以组合方式构成各种外部设备,例如I2C接口、SPI接口、通用异步收发器(UART)和脉冲宽度调制(PWM)电路等。上述数字逻辑电路单元可以可编程方式经由全局总线与通用IO端口相连,由此实现任一信号在任一引脚上的输入和输出。
模拟系统包括若干可配置的模拟电路单元,它们可以生成各种复杂的模拟信号流以实现各种模拟类外部设备的功能,例如模数转换器和电压比较器等。上述模拟电路单元同样也可以由可编程方式经由全局总线与通用IO端口相连,由此实现任一信号在任一引脚上的输入和输出。
系统资源提供了诸多的附加功能,例如可提升数字系统灵活性的数字时钟、可实现I2C主、从和多主通讯的I2C功能、向微控制器内的其它单元提供电压基准的内部电压基准、可产生高于电池电压的工作电压的开关充电泵(switch mode pump)以及得到中央处理单元核支持的各种系统复位功能。
有关图1所示微控制器的详细描述可参见位于美国加利福尼亚州的赛普雷斯半导体有限公司(Cypress Semiconductor Corp.)提供的型号为CY8C21234的微控制器芯片的产品数据表(data sheet),该文件作为参考文献在此以全文引用方式包含在本文中。
然而,模拟电路和数字电路在一块芯片上的混成以及集成度的提高将加大芯片的设计难度并且增加微控制器的制造成本,因此不利于微控制器性价比的提高。
发明内容
本发明的一个目的是提供一种低成本实现微控制器电路功能可配置性的方法。
本发明的另外一个目的是提供一种可配置的微控制器,其可低成本地实现电路功能的配置。
按照本发明的一个方面,提出了一种实现微控制器可配置性的方法,所述微控制器包括中央处理单元、数据存储器、程序存储器、输入/输出端口和定时器,该方法包含下列步骤:
确定所需配置的硬件电路的功能;以及
在所述程序存储器内存储应用程序和子程序,所述子程序用于实现所需配置的硬件电路的功能并且可被所述应用程序调用。
优选地,在上述方法中,所述应用程序用C语言编写,所述子程序用汇编语言编写,并且所述应用程序以函数调用的方式调用所述子程序。
优选地,在上述方法中,所述应用程序和子程序是可更新的。更好地,所述应用程序和子程序通过系统可编程或应用可编程方式更新。
优选地,在上述方法中,所述子程序以加密保护的形式存储在所述程序存储器内。
按照本发明的另一个方面,提供了一种可配置的微控制器,包括:中央处理单元、数据存储器、程序存储器、输入/输出端口和定时器,其中,所述程序存储器内存储多个子程序,所述子程序用于实现硬件电路的功能并且可被由所述中央处理单元执行的应用程序调用。
优选地,在上述微控制器中,所述硬件电路为输入输出设备接口。更好地,所述输入输出设备接口为液晶显示器并行接口电路、发光二极管数码管接口电路、电容式感应键接口电路或键盘接口电路中的至少一种。
优选地,在上述微控制器中,所述硬件电路为通信接口。更好地,所述通信接口为通用异步收发器、I2C接口电路、SPI接口电路和单总线接口电路中的至少一种。
优选地,在上述微控制器中,所述硬件电路为脉冲宽度调制电路、数模/模数转换器、电压比较电路、温度测量电路中的至少一种。
优选地,在上述微控制器中,所述数据存储器为随机存取存储器,所述程序存储器为只读存储器或快闪存储器。
优选地,在上述微控制器中,所述微控制器基于哈佛架构。
优选地,在上述微控制器中,所述微控制器基于冯·诺依曼架构。
优选地,在上述微控制器中,所述程序存储器包括多个快速存储器,其中两个分别用于存储引导程序和所述子程序。更好地,所述引导程序支持系统可编程或应用可编程功能。或者更好地,存储所述子程序的快速存储器是受加密保护的。
优选地,在上述微控制器中,所述程序存储器包括一个划分为多个区域的快闪存储器,引导程序和所述子程序被存储在不同的所述区域内。
按照本发明的实施例,将实现硬件电路功能的子程序来替代集成在微控制器内的数字和模拟电路,因此降低了微控制器的设计难度和制造成本。此外,由于通过软件升级即可扩展和改变微控制器的功能,因此与在微控制器内集成硬件电路的方式相比,在可扩展性和开发的便利性方面具有明显的优势。还有,随着处理器性能的不断提高,其计算能力变得越来越强大,本发明的实施例利用软件程序来实现硬件电路的功能可以充分挖掘处理器的计算资源,从而进一步提高系统的性价比。
本发明的上述和/或其它方面和优点将通过以下结合附图的各个方面的描述变得更加清晰和更容易理解,附图包括:
图1示出了一种典型的集成了数字电路和模拟电路的微控制器的架构图。
图2示出了按照本发明一个实施例的可配置的微控制器的功能框图。
图3a和3b示出了图2所示微控制器的存储器的组织形式。
图4示出了在图2所示微控制器内运行的软件的分层模型。
图5为虚拟硬件子程序的调用过程示意图。
图6示出来利用虚拟硬件子程序来实现脉冲宽度调制电路功能的模型框图。
图7a和7b示出来利用虚拟硬件子程序来实现I2C接口电路功能的模型框图,其中,图7a示出的是微控制器作为主设备的情形,图7b示出的是微控制器作为从设备的情形。
图8为利用虚拟硬件子程序来实现通用异步收发器电路功能的模型框图。
图9a和9b分别示出了利用虚拟硬件子程序实现数模转换功能和模数转换功能的模型框图。
图10示出了利用虚拟硬件子程序实现温度测量功能的模型框图。
图11示出了利用虚拟硬件子程序实现电容式感应键捕获功能的模型框图。
图12a和12b示出了利用虚拟硬件子程序实现键盘键值读取功能的模型框图。
图13示出了利用虚拟硬件子程序实现液晶显示器接口功能的模型框图。
具体实施方式
在以下的详细讨论中,借助文字描述和附图来阐述本发明的各个不同方面,这些方面仅以示意性例子的方式给出,并且可以是本发明一个或者多个示范性实施例。对于本领域中的技术人员来说,在不背离本发明的精神或范围的前提下,可以以各种不同的方法来改动所述的各个方面。
在下面的描述中,除非特别说明,微控制器和微控制器芯片是可以互换使用的术语。此外,通用输入/输出端口(GPIO)指的是一种可进行各种定制连接的并行接口,其一般包含多个端口引脚或端口线,例如8个端口引脚。
按照本发明的一个方面,在微控制器的程序存储器内存储了一类特殊的子程序供微控制器的中央处理单元调用执行,这类特殊的子程序通过调用各种资源来实现硬件电路功能,从而替代设置于微控制器内部的硬件电路或者外接于微控制器外部的硬件电路,以下又将这类子程序称为虚拟硬件子程序。
上面所述的硬件电路应当广义理解为可实现一定电路功能的物理装置或设备,例如通过光刻工艺在芯片上形成的图案和焊接在印刷电路板上并通过布线相连的若干分立元件,包括但不限于诸如液晶显示器并行接口电路、发光二极管数码管接口电路、电容式感应键接口电路或键盘接口电路之类的输入输出设备接口、诸如通用异步收发器、I2C接口电路和SPI接口电路之类的通信接口以及数字脉冲宽度调制电路、数模/模数转换器、电压比较电路、温度测量电路等。
值得指出的是,可供上述虚拟硬件子程序访问或调用的资源包括但不限于在微控制器内一般都配置的定时器/计数器、I/O端口、静态随机存储器、中断系统和看门狗定时器等。一般而言,为了能够实现硬件电路的功能,虚拟硬件子程序往往需要访问或调用微控制器内的多个资源;此外,微控制器内的资源越丰富,则虚拟硬件子程序能够仿真或模拟更多的硬件电路。
图2示出了按照本发明一个实施例的可配置的微控制器的功能框图。如图2所示,该微控制器200包括中央处理单元210、静态随机存储器(RAM)211a和211b、中断控制逻辑212、可编程定时器/计数器213a和213b、看门狗(WDT)定时器214、晶体振荡器215、通用异步收发器216、快闪存储器(FLASH)217a~217e、多个8位通用输入/输出端口218a~218d和安全加锁单元(securitylock)219。在图2所示的微控制器200中,中央处理单元210、RAM211a和211b、中断控制逻辑212、可编程定时器/计数器213a和213b、看门狗定时器214、晶体振荡器215、通用异步收发器216、快闪存储器217a~217e、通用输入/输出端口218a~218d和安全加锁单元219通过总线互联,而中断控制逻辑212和晶体振荡器215与中央处理单元210直接相连。
值得指出的是,图2所示的微控制器基于冯·诺伊曼结构,但是由下面的描述将可以理解,完全可以将本发明利用虚拟硬件子程序来实现硬件电路功能的概念应用于基于哈佛结构或其他架构的微控制器。此外,从下面的描述还将看到,本发明对于采用CISC指令集和RISC指令集的微控制器都是适合的。
在图2中,中央处理单元210基于典型处理器的架构,例如8051处理器核,其包括算术逻辑单元(ALU)、累加器(ACC)、指令寄存器、程序计数器以及时序和控制逻辑等,用于顺序操作和控制与RAM211a和211b之间的数据传输,并且还可实现对通用输入/输出端口218a~218d的控制。有关中央处理单元210内部结构的详细描述例如可参见《8051微控制器教程》(第3版)(清华大学出版社2005年12月1日出版),此处不再赘述。
中断控制逻辑212将各种中断请求信号传送给中央处理单元210以响应特定事件的发生。可编程定时器/计数器213a和213b为16位寄存器,它们可内部定时,也可外部计数,可一次性工作,计满后发中断请求,也可以自动连续计数。看门狗定时器214用于软件死锁时的安全失效保护和自动恢复。
晶体振荡器215用于向中央处理单元210提供时钟基准信号,在某些应用下,可以为晶体振荡器215配备除频电路,或者,可以用一组晶体振荡器替代单个晶体振荡器212,从而提供多个时钟基准信号。
通用异步收发器216是一个全双工端口,其允许通过发送寄存器和接收寄存器同时进行数据的发送和接收。发送寄存器和接收寄存器皆位于串行数据缓冲器(SBUF)特殊功能寄存器内。对SBUF寄存器的写操作将加载发送寄存器的数据,而对SBUF的读操作将获取接收寄存器的内容。此外,还可以利用通用异步收发器216来改写快闪存储器217a~217d的内容,从而实现系统可编程(ISP)或应用可编程(IAP)功能。
在图2所示的微控制器200中快闪存储器217a~217e用于存储所执行的程序,而RAM211a和211b被用于临时存储中央处理单元210执行的指令和执行过程中涉及的数据,并且程序和数据存储器被分配分立的地址空间。
以下借助附图对微控制器200的存储器的组织形式(organization)作详细描述。
图3a和3b示出了图2所示微控制器的存储器的组织形式,其中,图3a为快闪存储器217a~217e的组织形式示意图,而图3b为RAM211a和211b的组织形式示意图。
如图3a所示,快闪存储器217a分配的地址为43FFh~4000h,其容量为1K字节,用于存储引导的装载程序和擦除/烧录快闪存储器217b~217d的子程序等,支持在系统中编程(ISP)和在应用中编程(IAP)。当微控制器200上电时,其首先执行快闪存储器217a中存储的程序,如果引导程序判断不满足外部改写程序的条件,则程序指针将指向其他快闪存储器内存储的程序(例如快闪存储器217e内存储的应用程序),微控制器200开始执行程序指针指向的程序;否则,则允许通过通用异步收发器216对快闪存储器217b~217e施行写入操作。
如图3a所示,快闪存储器217b~217e的存储容量皆为4K字节,它们被分配的地址空间依次为3FFFh~3000h、2FFFh~2000、1FFFh~1000h和0FFFh~0000h。虽然分配给快闪存储器217a~217e的地址空间是连续的,但是这并不意味着它们在物理上是一块连续的存储区。在本实施例中,为了实现对部分程序的加密保护,快闪存储器217a~217e在微控制器200内被设置为分立的存储器或独立进行读写操作的存储电路。显然,当无加密保护要求时,也可以考虑采用一个被划分为多个存储区域的快闪存储器来代替上述多个快闪存储器。
快闪存储器217b用于存储实现硬件电路功能的虚拟硬件子程序;快闪存储器217c被仿真为EEPROM使用,其中的1K字节作为保留区域专门供虚拟硬件子程序使用,另外的3K字节则供用户程序使用;快闪存储器217d和217e都向系统开发用户开放,其中,快闪存储器217d用于存储下面将作进一步描述的应用功能库,而快闪存储器217e用于存储其他程序,例如操作系统和用户开发的应用程序等。为了防止非法拷贝,对存储了虚拟硬件子程序和应用功能库的快闪存储器217b和217d进行加密保护。在图2所示的微控制器中,对程序的加密保护是借助安全加锁单元219来实现的,该单元通过阻止指令MOVC对加密存储空间的操作来达到加密保护的目的。某些商用的微控制器芯片已经提供了上述安全加锁机制,例如位于美国加利福尼亚州的超捷(Silicon Storage Technology)股份有限公司提供的型号为SST89E52RC芯片。
虚拟硬件子程序在运行过程中可能需要执行查表操作,但是由于受到加密保护的存储器无法利用MOVC指令访问,因此在图2所示的微控制器200内,需要额外占用非加密的存储器来存放查表类数据。为此,这里将快闪存储器217c中容量为1K的保留区域作为查表类数据的存储区域,以供虚拟硬件子程序通过EEPROM访问命令来调用。
参见图3b,RAM211a为内部RAM,分配的地址为00h~FFh,其可利用MOV指令访问以供用户程序使用;RAM211b为扩展RAM,分配的地址亦为00h~FFh,但其只能利用MOVX指令间接访问并且由特定寄存器的标志位控制其使能状态,在图2所示的微控制器内,该存储器仅供存储在快闪存储器217b内的虚拟硬件子程序使用。应当理解的是,上述使用户程序和虚拟硬件子程序运行在不同的静态随机存储器内的配置仅是特例而非必须如此,因为这两类程序是否加载到不同的静态随机存储器并不会对硬件电路功能的实现有实质性的影响。
通用输入/输出端口218a~218d为8位I/O端口(即,每个通用输入/输出端口包含8个端口引脚或端口线),可以位选输入/输出方式。通用输入/输出端口218a~218d经由总线与微控制器200内的其他单元互联,其提供了微控制器200与外部设备之间的通用接口。在中央处理单元210的控制下,可以在一个端口的其中一个引脚上发送所需的输出信号或者从一个端口的其中一个引脚接收来自外部设备的输入信号。
图4示出了在图2所示微控制器内运行的软件的分层模型。如图4所示,所运行的软件由下向上被划分为三层,其中,最底层为引导程序、操作系统和实现硬件电路功能的虚拟硬件库,它们可直接对硬件进行操作;中间层为应用功能库;最上层为应用程序。对于基于4位、8位和16位微控制器的控制领域(例如冰箱、洗衣机、微波炉等家电控制),一般可以不采用操作系统,此时最底层由引导程序和虚拟硬件库组成。
如上所述,引导程序存储在快闪存储器217a内,其主要任务是完成系统启动之前必要的硬件初始化和操作系统的加载,并且管理ISP/IAP协议和控制对快闪存储器217b~217e的读写和加密操作。
操作系统存储在快闪存储器217d或217e内,在本实施例中可以采用各种嵌入式操作系统,例如VxWorks操作系统、基于Linux内核的系统、Windows CE操作系统和基于μC/OS一II内核的系统。
虚拟硬件库包含多个可被中间层和最上层的软件调用的子程序,这些子程序以加密形式被存储在快闪存储器217b内,其入口地址以向量列表方式存储在特定的位置,例如前述快闪存储器217c的1K字节的保留区域内。每个虚拟硬件子程序用于完成一种硬件电路功能,其实际上是一段调用各种资源来实现特定的硬件电路功能的代码。为了提高代码效率和执行速度,虚拟硬件子程序可采用汇编语言编写。此外,为方便应用系统的开发,上层的应用功能库和应用程序一般都采用高级语言(例如C51)开发,由于这类语言都提供了对汇编语言编写的子程序进行调用的功能,因此实现了混合编程。
在本发明中,可以根据应用系统的需要,通过编写不同的虚拟硬件子程序,对微控制器需要实现的硬件电路功能的种类和数量灵活地进行定义。例如,作为一个完整的嵌入式系统,一般都包含诸如小键盘和电容式感应键之类的输入设备和诸如液晶显示器、发光二极管显示屏之类的输出设备,为此,可以编制用于实现液晶显示器并行接口电路、发光二极管数码管接口电路、电容式感应键接口电路或键盘接口电路等硬件电路的虚拟硬件子程序并存储在快闪存储器217b以供调用。又如,应用系统一般需要按照某些协议与外部设备进行通信,因此在本实施例的微控制器中,也可以提供用于实现常用通信接口(例如通用异步收发器、I2C接口电路、SPI接口和单总线(1-wire)接口)的功能的虚拟硬件子程序。此外,为了满足测量应用,还可在本实施例的微控制器中提供用于实现数模/模数转换、脉冲宽度调制、电压比较和温度测量等功能的虚拟硬件子程序。
此外,在图4所示的分层模型中,底层硬件的驱动功能全部被封装在最底层,这使得系统开发人员无需关注底层硬件的具体驱动细节,从而加快了应用系统的开发速度,降低了开发工作量。另外,由于在微控制器内提供了ISP和IAP功能,因此随时升级更新虚拟硬件库。
如图4所示,中间层为应用功能库,其介于应用程序与虚拟硬件库和操作系统之间,通常包含一组针对某一类应用(例如电饭煲、微波炉等小家电的控制系统)并且可被最上层的应用程序调用的程序模块,这些程序模块以加密形式被存储在快闪存储器217d内,其调用地址以向量列表方式存储在特定的位置,例如快闪存储器217c的其余3K字节的区域内。应用功能库为上层的应用软件提供运行与开发的环境,可帮助用户灵活、高效地开发和集成复杂的应用程序;此外,由于其通常针对特定类型的应用场合开发,因此有助于提高软件的复用性。
图4所示分层模型的最上层为应用系统开发厂商编写的应用软件,其被存储在快闪存储器217e内并且可调用虚拟硬件库和应用功能库的子程序。
图5为虚拟硬件子程序的调用过程示意图。此处应用程序采用C51语言编写,而虚拟硬件子程序采用汇编语言编写。如图5所示,应用程序作为主程序,与虚拟硬件库开发商提供的头文件同属于用户程序空间;虚拟硬件子程序的入口地址表和编译后的子程序代码则位于虚拟硬件子程序的存储空间。头文件中定义有虚拟硬件子程序的入口地址表的存储位置,应用程序中的调用函数VMLF1()从头文件中获取入口地址表的存储地址,进而根据入口地址表查找到被调用虚拟硬件子程序代码的地址,并将程序指针跳转到该地址。于是,被调用虚拟硬件子程序的代码加载到RAM211b内执行,而执行的结果则返回给应用程序。
以下给出一个调用虚拟硬件子程序的示意性实例,所调用的子程序用于将前述通用输入/输出端口上输入的电信号转换为温度值,函数原型为unsigned char TempInput(void)。
#include″VML_XX.h″        //VML特定的头文件,包含了库程序声明
main()
{
  unsigned char temp_value;//声明温度值变量
  ……
  temp_value=TempInput();//调用温度测量子程序,返回温度值
  ……
}
图6示出来利用虚拟硬件子程序来实现脉冲宽度调制电路功能的模型框图。该模型提供两个脉冲输出子程序或函数,它们分别可编程定时器213a和213b的资源,通过定时器中断方式来控制端口引脚PWM和PWM2上的高电平和低电平持续时间,以输出频率和占空比可变的脉宽调制脉冲,这里的端口引脚PWM和PWM2选自通用输入/输出端口218a~218d。上述子程序的函数原型为voidPWMOutput(unsigned int frequency,unsigned char duty)和voidPWM2Output(unsigned int frequency,unsigned char duty),函数参数中的freq为频率,duty为高电平的占空比。相应地,该模型还提供有停止在端口引脚PWM和PWM2上的脉冲输出的两个函数,函数原型分别为void PWMOff(void)和void PWM2Off(void)。
由上可见,图2所示的微控制器200内虽然并未内置单独的脉冲宽度调制电路,但是虚拟硬件子程序可以利用定时器和端口资源,输出宽度受到调制的脉冲信号。
图7a和7b示出来利用虚拟硬件子程序来实现I2C接口电路功能的模型框图,其中,图7a示出的是微控制器作为主设备的情形,图7b示出的是微控制器作为从设备的情形。
在图7a所示的模型中,提供了数据发送和数据输出两个子程序或函数,这些子程序在RAM211b内创建发送数据或接收数据的缓冲区,其中,发送数据的子程序经端口引脚SCL和SDA发送缓冲区的数据,接收数据的子程序从端口引脚SCL和SDA上接收数据并存储到缓冲区内,这里的端口引脚SCL和SDA选自通用输入/输出端口218a~218d。上述函数的原型分别为unsigned charI2CMasterDataTx(unsigned char n,unsigned char *buffer)和unsignedchar I2CMasterDataRx(unsigned char n,unsigned char slave_address,unsigned char *buffer),函数参数中的n为需发送或接收的字节数,buffer为数据缓冲区指针,函数的返回值为0或1以表示操作成功与否。
在图7b所示的模型中,提供了从机初始化、数据发送和数据输出三个子程序或函数。用于从机初始化的函数的原型为voidI2CSlaveInit(unsigned char slave_addr),函数参数slave_addr为从机地址。发送和接收数据的子程序在RAM211b内申请存储区域作为发送数据或接收数据的缓冲区,其中,发送数据的子程序经端口引脚SCL和SDA发送缓冲区的数据,接收数据的子程序从端口引脚SCL和SDA上接收数据并存储到缓冲区内,这里的端口引脚SCL和SDA选自通用输入/输出端口218a~218d。如图7b所示,发送和接收数据的函数的原型分别为unsigned char I2CSlaveDataTx(unsigned char n,unsigned char *buffer)和unsigned charI2CSlaveDataRx(unsigned char n,unsigned char slave_address,unsigned char *buffer),函数参数中的n为需发送或接收的字节数,buffer为数据缓冲区指针,函数的返回值为0或1以表示操作成功与否。
利用微控制器200内的静态随机存储器和端口的资源,SPI接口、PS2接口和单总线(1-wire)接口的功能也可以软件方式来实现,因此图7a和7b所示的模型也适于这些接口的虚拟硬件子程序。
对于通用异步收发器电路,除了静态随机存储器和端口的资源以外,还需要利用定时器。图8为利用虚拟硬件子程序来实现通用异步收发器电路功能的模型框图。该模型提供多个子程序,用于初始参数的设置和数据的发送和接收。
在图8所示的模型中,设置初始参数的子程序的函数原型为void UARTInit(unsigned char mode,unsigned int baud,unsigned charparity),函数参数mode为工作方式,baud为波特率,parity为校验码;当通用异步收发器作为从机使用时,设置初始参数的子程序的函数原型为void UARTSlaveSet(unsigned char saddr,unsigned charsaden),函数参数saddr和saden分别为从机地址和地址掩码。
在多机通讯时用于主机发送数据和接收数据的子程序的函数原型分别为unsigned char UARTMasterDataTx(unsigned char sadid,unsigned char n,unsigned char *buffer)和unsigned char UARTDataRx(unsigned char n,unsigned char overtime,unsigned char *buffer),其功能是将数据缓冲区内的数据在端口引脚TXD上发送或者将端口引脚RXD上接收的数据存入数据缓冲区,函数参数sadid为从机识别地址,n为需发送的字节数,buffer为需发送的数据缓冲区指针,overtime为超时时间,函数的返回值为0或1以表示操作成功与否。
在多机通讯时用于从机发送数据和接收数据的子程序的函数原型分别为void UARTDataTx(unsigned char n,unsigned char*buffer)和unsigned char UARTSlaveDataRx(unsigned char n,unsigned char overtime,unsigned char *buffer),其功能是将数据缓冲区内的数据在端口引脚TXD端口上发送或者将端口引脚RXD上接收的数据存入数据缓冲区,函数参数n为需发送的字节数,buffer为需发送的数据缓冲区指针,overtime为超时时间,函数的返回值为0或1以表示操作成功与否。
用于中断发送数据和中断接收数据的子程序的函数原型分别为void UARTIntTx(unsigned char n,unsigned char *buffer)和unsigned char UARTIntRx(unsigned char n,unsigned char *buffer),函数参数n为需发送或接收的字节数,buffer为需发送或接收的数据缓冲区指针。
在图8所示的模型中,数据缓冲区在RAM 211b内创建,端口引脚TXD和RXD选自通用输入/输出端口218a~218d。
可以利用虚拟硬件子程序在图2所示微控制器200内实现数模/模数转换功能。图9a和9b分别示出了实现数模转换功能和模数转换功能的模型框图。
如上所述,虚拟硬件子程序可利用可编程定时器213a或213b的资源,在端口上输出频率和占空比可变的脉宽调制脉冲。参见图9a,微控制器200经端口引脚D/A(选自通用输入/输出端口218a~218d)外接有低通滤波电路(例如RC低通滤波电路),因此虚拟硬件子程序DAOutput( )产生输入该低通滤波电路的脉宽调制脉冲,该脉冲信号经过低通滤波后即获得模拟输出电压,这里,虚拟硬件子程序DAOutput( )可通过调节脉冲的频率和占空比来控制模拟输出电压的大小。
参见图9b,微控制器200的端口引脚A/D(选自通用输入/输出端口218a~218d)外接有充电电路(例如简单的RC充电电路),虚拟硬件子程序ADInput( )通过充电时间的长短来确定端口引脚上输入的模拟电压的值。
以下进一步描述模数转换原理。
首先,虚拟硬件子程序ADInput( )通过使电容C完全放电,将端口引脚A/D设置为低电平。接着,使该端口引脚转为输入状态并利用可编程定时器213a或213b开始计时,与此同时模拟输入电压开始经电阻R对电容C充电。虚拟硬件子程序ADInput( )周期性地检测端口引脚A/D的电压,并且在达到高电平门限电压时停止计时。最后,虚拟硬件子程序ADInput( )通过查表方式确定与充电时间相对应的模拟输入电压值,从而实现A/D转换过程。如上所述,充电时间与模拟输入电压值的对应关系表可以存储在静态随机存储器217c供虚拟硬件子程序使用的保留区域内。
图10示出了利用虚拟硬件子程序实现温度测量功能的模型框图。微控制器200的端口引脚PRK、PRT和PR1(选自通用输入/输出端口218a~218d)按照图10所示方式外接有RC充电电路,虚拟硬件子程序TempInput( )通过比较热敏电阻Rt和标准电阻Rk充电时间的长短来确定阻值的变化量,再通过查表方式确定温度值。
以下进一步描述温度测量的原理。
首先在虚拟硬件子程序TempInput( )的控制下,端口引脚PRK、PRT和PR1被设置为低电平输出以使电容器C1完全放电。接着,虚拟硬件子程序TempInput( )将端口引脚PR1置为输入,端口引脚PRT置为低电平,端口引脚PRK置为高电平输出,由此通过标准电阻Rk对电容器C1充电并使可编程定时器213a或213b开始计时。当虚拟硬件子程序TempInput( )检测到端口引脚PR1的状态为高电平时,停止计时并记录下第一充电时间time1。
随后,虚拟硬件子程序TempInput( )再次将端口引脚PRK、PRT和PR1置低电平输出,使电容器C1完全放电。接着,虚拟硬件子程序TempInput( )将端口引脚PR1置为输入,端口引脚PRK置为低电平,端口引脚PRT置为高电平输出,由此通过热敏电阻Rt对电容器C1充电并使可编程定时器213a或213b开始计时。当虚拟硬件子程序TempInput( )检测到端口引脚PR1状态为高电平时,停止计时并记录下第二充电时间time2。
接着,虚拟硬件子程序TempInput( )根据下式计算出热敏电阻Rt的阻值:
R t = R k × time 2 time 1 ]]>
这里,Rt和Rk分别为热敏电阻Rt和标准电阻Rk的阻值。
最后,虚拟硬件子程序TempInput( )根据存储在静态随机存储器217c保留区域内的热敏电阻特性曲线,通过查表方式确定温度值。
图11示出了利用虚拟硬件子程序实现电容式感应键状态判定功能的模型框图。参见图11,按照图6所示的方式,虚拟硬件子程序CapkeyGetKey( )在微控制器200的端口引脚PPn上输出脉冲方波,该脉冲方波作为图11右边所示倍压检波电路的信号源;端口引脚CPn作为输入检测口,其与倍压检波电路的输出端相连这样。这里,端口引脚PPn和CPn选自通用输入/输出端口218a~218d。
以下描述电容式感应键状态的检测原理。
在虚拟硬件子程序CapkeyGetKey( )的控制下,端口引脚PPn输出的脉冲方波通过电容C3向电容C1充电。感应式电容开关基本上可以视为是两个相邻导体(电极)形成的电容器,当手指按下电容式感应键时,将如图11所示产生一个电容Cx,该电容将使得端口引脚PPn输出的脉冲信号无法向电容C1充电,由此使得端口引脚CPn上的电平将由低变高。当虚拟硬件子程序CapkeyGetKey( )在端口引脚CPn上检测到高电平时,即记录充电时间并停止端口引脚PPn上的脉冲输出。此时,电容C1开始经R1放电,导致端口引脚CPn上的电压下降。当虚拟硬件子程序CapkeyGetKey( )检测到端口引脚CPn上为低电平时,记录放电时间。最后,虚拟硬件子程序CapkeyGetKey( )根据所记录的充电时间和放电时间确定电容式感应键是否被按下,并在端口引脚PPn上重新输出脉冲方波。为了提高判定准确度,可以多次重复上述检测过程并对多个检测结果取平均值。
图12a和12b示出了利用虚拟硬件子程序实现键盘键值读取功能的模型框图。
参见图12a,矩阵式键盘的N列线和N行线与微控制器的2××N个端口引脚(选自通用输入/输出端口218a~218d)一一相连,虚拟硬件子程序KeyboardGetKey( )首先将所有的行线(即连接行线的端口引脚)置低电平,然后检测列线(即连接列线的端口引脚)的状态,若有列线为低电平,则虚拟硬件子程序KeyboardGetKey( )判定与该列线对应的键被按下。
图12b示出了利用4个端口引脚实现3×3矩阵式键盘的键值读取的方式。在图12b中,三根行线与端口引脚PL1~PL3一一相连,列线经三极管放大电路与端口引脚KIN相连。这里,端口引脚PL1~PL3和KIN选自通用输入/输出端口218a~218d。
以下详细描述键值读取的原理。
首先,虚拟硬件子程序Keyboard2GetKey( )将端口引脚PR1~PR3设置为低电平输出,KIN设置为输入,初始状态为高电平,三极管Q1导通。当有键按下时,三极管Q1截止,端口引脚KIN上为低电平。然后将端口引脚PR1~PR3设置为高电平输出,三极管Q1导通,端口引脚KIN为高电平。分别依次将端口引脚PR1、PR2、PR3设为输出低电平,其余为输入,每次读入PR1~PR3以及KIN的端口值。如果其中出现三极管Q1截止,KIN为低电平,则将此次的端口值与下列编码表比较,即可获得键值。
编码表
 

PL1PL2PL3KINTS1OLIHIHILS2OLILIHILS3OLIHILILS4ILOLIHILS5IHOLIHILS6IHOLILILS7ILIHOLILS8IHILOLILS9IHIHOLIL

图13示出了利用虚拟硬件子程序实现液晶显示器接口功能的模型框图。参见图13,端口引脚D0~D7与1602字符型液晶模块的数据线引脚相连,端口引脚RS、RW和E分别与1602字符型液晶模块的寄存器选择引脚、读写型号引脚和使能端相连。虚拟硬件子程序LCDDisplay( )借助端口引脚RS、RW和E上的控制信号,将端口引脚D0~D7上的数据写入1602字符型液晶模块,从而在液晶显示模块上显示所需的字符。上述虚拟硬件子程序的函数原型为void LCDDisplay(unsigned char row,unsigned char col,unsignedchar n,unsigned char *buffer),函数参数row表示字符显示的起始行,col表示字符显示的起始列,n为需显示的字节数,buffer为需显示的数据缓冲区指针。
虽然已经展现和讨论了本发明的一些方面,但是本领域内的技术人员应该意识到:可以在不背离本发明原理和精神的条件下对上述方面进行改变,因此本发明的范围将由权利要求以及等同的内容所限定。

实现微控制器可配置性的方法和可配置的微控制器.pdf_第1页
第1页 / 共29页
实现微控制器可配置性的方法和可配置的微控制器.pdf_第2页
第2页 / 共29页
实现微控制器可配置性的方法和可配置的微控制器.pdf_第3页
第3页 / 共29页
点击查看更多>>
资源描述

《实现微控制器可配置性的方法和可配置的微控制器.pdf》由会员分享,可在线阅读,更多相关《实现微控制器可配置性的方法和可配置的微控制器.pdf(29页珍藏版)》请在专利查询网上搜索。

一种可低成本地实现微控制器的电路功能可配置的方法,微控制器包括中央处理单元、数据存储器、程序存储器、输入/输出端口和定时器,包含下列步骤:确定所需配置的硬件电路的功能;以及在程序存储器内存储应用程序和子程序,子程序用于实现所需配置的硬件电路的功能并且可被应用程序调用。按照本发明,以实现硬件电路功能的子程序来替代集成在微控制器内的硬件电路,降低了微控制器的设计难度和制造成本。此外,由于通过软件升级即。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1