用于微控制器原型设计的mbed快速原型开发解决方案
扫描二维码
随时随地手机看文章
ARM的mbed快速原型开发解决方案将NXP LPC1768微控制器与支持组件和智能USB接口与基于云的工具配对,可以高效评估微控制器功能和应用原型。 mbed寻找可以优化工作原型时间的技术和权衡,使设计人员能够在设计周期的早期快速测试,评估和演示创意。
微控制器变得更小,功能更强大,功耗更低,更多的连接,但价格不断下降。对于能够成功采用该技术的新市场来说,这是一个巨大的机会。关键在于确定微控制器可以解决的新问题,并构建概念验证,将创意转化为成为潜在产品。
业界已为嵌入式工程师构建了出色的工具,可根据需要生成微控制器设计规范是已知的。但是,当任务是证明一个概念或定义规范时,即使对于有经验的工程师来说,风险和时间尺度通常也不会增加。结果是想法没有得到尝试;几乎没有迭代或设计空间探索;最终的设计也是原型,或者规范过于谨慎。鉴于在许多情况下,可以定义这些应用程序的想法,观察和见解将来自其他问题领域的人,这些限制被放大。这有可能成为采用的真正障碍。
策略
mbed的基本目标是实现对微控制器功能的有效评估以及可应用的应用程序的原型设计。特别是,它旨在匹配产品设计其他方面的设计周期时间。有助于实现这一目标的策略(图1)是寻找可以优化工作原型时间的技术和权衡,而不是优化设计本身。
图1:mbed策略。
例如,微控制器的趋势是以固定价格提高性能和内存容量。虽然大多数工具专注于使用户能够在可以创建的应用程序的最终功能中利用它,但mbed却专注于使用此性能和容量来减少设计挑战。一个很好的例子是提供高级抽象,使得功能可以以实现效率和增加代码大小为代价来访问。
另一个关键目标是克服进入障碍;技术验收模型(图2)为实现这一目标提供了一个清晰的框架,突出了易用性和感知有用性。通过实验和教育洞察技术,可以提高认知的实用性。原型设计方法自然支持用户探索,同时使营销和应用工程功能能够轻松演示和展示技术。
图2:技术接受度(Davis等,1989)。易于使用实际上非常依赖于背景;大多数好工具都很容易用于他们的预期任务。但对于不同的任务,结果不太可能相同。通过明确定义快速原型设计的背景,使设计权衡集中于易用性变得更有意义。对于熟悉现有专有架构和工具链的行业内嵌入式开发人员而言,从专家到学习者的额外负面感觉可能令人望而生畏。仅这些因素就足以推迟探索转向现代解决方案的好处。对于新用户而言,恐惧,不确定性和怀疑同样令人望而却步。这使初始体验变得至关重要;这些工具必须快速提供结果,投资少,建立信任并获得任何进一步的持续投资。
入门
mbed的目标是让新用户尽快运行他的第一个项目,建立信心和信任在硬件和软件工具链中。 mbed工具采用了一些新技术来实现这一目标,结果不言而喻;你可以在60秒内开始。这一成就意味着没有理由不进行实验。
结果是通过两项创新实现的;基于USB磁盘的编程器,用于硬件和编译器工具,用作在Web浏览器中运行的基于云计算的Web应用程序。这些解决方案有一些明显的好处,但有些并不是立竿见影的。
预先确定的优点是无需设置或安装。对于许多人来说,这只是一个令人愉快的惊喜,允许在没有行政职责的情况下即时访问。但对于其他在许多教育和工作场所环境中都有锁定计算机系统的人而言,这可能是能否测试微控制器之间的区别。
IDE简单但功能强大,可以让它走出方式并做它的设计 - 编辑和编译代码。通过预先配置的所有内容,它可以在任何平台上开箱即用,包括PC,Mac或Linux。这种即时无障碍访问使工具更有信心,使用户能够在需要使用或演示它们时随时取出它们。
现在,通常可以在多台计算机上工作,在线方法成为一个特别的优势。您不仅可以避免多次安装的问题并保持同步,而且无论您身在何处,您的在线工作空间都随身携带。
微妙的优点是您看不到的东西。您无需做出决定,因为已经为这项任务提供了最合适结果的选项和配置。
已经完成了大部分硬件和软件基础工作。这些工具非常轻巧,从任何机器上都可以登录,从头开始创建项目,并在几分钟内测试或修改一些东西;这种灵活性会对工作方式产生重大影响。简化设置意味着一切都很容易重现。
结合单一硬件和库模型,每个其他mbed用户都在相同的环境中进行开发。这使得社区支持变得更加容易,因为人们可以在共同的背景下分享问题和疑问。
图3:在线编译器。
快速原型设计
mbed的硬件和软件组件的架构和实现在原型设计方面提供了独特的优势。
mbed微控制器硬件封装了恩智浦LPC1768微控制器,支持元件和智能USB接口采用实用的40引脚0.1“间距DIP外形,非常适合在无焊接面板,条板和通孔PCB上进行试验。为了支持暴露的接口,mbed C/C ++库提供了高 - 微控制器外围设备的电平接口,实现清晰,紧凑,API驱动的编码方法。这种组合可立即连接外围设备和模块,用于基于微控制器的系统设计的原型设计和迭代,为开发人员提供更多创新和更多的自由图4显示了基本的mbed微控制器引脚排列,指示了接口资源的可用性和位置。接口指示特德匹配mbed库中的那些。这突出了它们共同开发的一些主要优点。 API提供抽象的外围接口,而不是特定于实现。这些库使用面向对象,它可以很好地映射到有形的物理硬件资源。硬件,库和文档共享相同的接口命名和概念。
图4:mbed微控制器引脚排列。
硬件和软件之间的对齐使得自然编程风格能够捕获意图,这对于快速实验和迭代至关重要。
例如,mbed避免了需要通常的多级间接引脚和资源分配需要。这些往往会失去意义并引入错误。
#include“mbed.h”//mosi,miso,sclkSPI myspi(p5,p6,p7);
int main(){//设置9 -bit SPI @ 1MHz
myspi.frequency(1000000);
myspi.format(9); int response = myspi.write(0x8F);
图5:配置并写入a SPI器件。
图5中的SPI示例演示了如何设置SPI主接口。首先,创建一个SPI对象并将其绑定到所需的引脚(mosi,miso和sclk),如图4所示。请注意,当物理连接器件时,此表达式现在同样有用 - 规范已捕获物理连接。
接下来,在执行写/读事务之前配置SPI对象(myspi)的频率和位格式。 SPI对象上的方法定义明确,界面直观,操作独立于底层硬件的低级设置或要求实际上,要更改本例中使用的SPI端口,只有引脚名称会需要改变。这有助于将设计的物理方面(使用的资源以及它们如何被固定)的修改分离到控件(它们的作用)。
图6中显示了捕获意图的类似示例。在这种情况下,每次在数字输入引脚上发生上升沿中断时,都会调用一个函数。中断是一个简单的概念,但设置和正常运行非常复杂。使用mbed,代码在概念上非常简单。创建一个可以产生中断的引脚,并将一个函数附加到该引脚的上升沿。
#include“mbed.h”中断按钮(p5);
DigitalOut LED(LED1); void flip(){
led =!led;
}
int main(){//附加翻转到p5边缘 button.rise(& flip); //徘徊永远
while(1);
图6:将函数附加到引脚中断事件。
InterfaceFunctionDigitalIn
DigitalOut
DigitalInOut
InterruptIn
AnalogIn
AnalogOut
PwmOut
串口
SPI
I²C
CAN
以太网
定时器
Ticker
超时
读取数字输入引脚的状态《 br》写入数字输出引脚的状态
读取和写入双向数字引脚
在引脚上升沿/下降沿触发功能
读取模拟输入引脚上的电压
控制模拟输出引脚上的电压
控制脉冲宽度调制输出引脚
与串行(UART)设备通信
与SPI从设备通信
与I²C从设备通信s
在CAN总线上通信
读写以太网数据包
通用计时器
以固定间隔调用函数
7:mbed库接口。
库是使用整个方法构建的(参见图7),它允许开发人员专注于应用程序逻辑而不是实现细节。
mbed库建立在低端之上ARM®Cortex™微控制器软件接口标准(CMSIS),是Cortex-M处理器系列独立于供应商的硬件抽象层。与CMSIS相比,mbed库提供了一个非常高级的API,专注于为外围设备的基本控制提供抽象接口。这种结构为用户提供了一种自然的方式,可以随时随地从mbed库中受益,同时添加在CMSIS上构建的定制代码,他们需要支持未提供的功能。特别是,这使得在原型设计时仅能在关键或差异化方面集中精力。除了mbed库之外,mbed Community外围库是用于控制连接到微控制器的外围设备(例如传感器,执行器,LCD和其他模块)的贡献代码的扩展基础。这些通常构建在mbed库之上,使系统能够快速连接,重点关注逻辑和功能而不是驱动程序。这些库可以由mbed社区中的任何人提供,并且随着时间的推移将由来自第三方供应商的中间件补充。
图8:mbed库体系结构。
应用程序示例
为了演示如何使用mbed实现简单的应用程序实验,以下示例演示了由Internet数据库控制的硬件设备。
图9中的示例程序实现一个系统,该系统在屏幕上显示消息并根据HTTP请求的结果移动伺服电机。该解决方案不太可能是最佳的,强大的或完整的,但足以使概念有效。
原型可以实现硬件的迭代,互联网应用的早期开发,新市场的探索或提供承诺的案例项目。通过使用可访问的方式来测试想法,mbed有助于降低与产品开发相关的风险,并且可以更频繁地将高级微控制器设计到应用程序中。
#include“mbed.h”#include“HTTPClient.h”
#include “MobileLCD.h”MobileLCD lcd(p5,p7,p8,p9);
//SPI LCD //以太网客户端
HTTPClient http; //R/C伺服
PwmOut伺服(p21); int main(){//20ms伺服周期
servo.period(0.020);
char result [128]; while(1)
{
http.get(http://a.com/stat.php“,result); lcd.printf(”状态为%s n,结果); //定位伺服,1-2ms脉冲宽度
float percent = atof(result);
servo.pulsewidth(0.001 *%); //每分钟更新
wait(60);
图9:从互联网app控制屏幕和伺服。
结论
对快速原型设计的关注使mbed具有广泛的吸引力。对于刚接触嵌入式应用的工程师,mbed将使他们能够首次实验和测试产品创意。对于经验丰富的工程师,mbed提供了一种在概念验证阶段提高工作效率的方法。对于市场营销,分销商和应用工程师,mbed为微控制器的演示,评估和支持提供了一致的平台。因此,mbed工具将帮助不同的受众利用NXP LPC1768等高级微控制器带来的机会。