出处:电子发烧友发布于:2019-03-0414:06:26
微控制器变得更小,功能更强大,功耗更低,更多的连接,但价格不断下降。对于能够成功采用该技术的新市场来说,这是一个巨大的机会。关键在于确定微控制器可以解决的新问题,并构建概念验证,将创意转化为成为潜在产品。
策略
图1:mbed策略。
例如,微控制器的趋势是以固定价格提高性能和内存容量。虽然大多数工具专注于使用户能够在可以创建的应用程序的终功能中利用它,但mbed却专注于使用此性能和容量来减少设计挑战。一个很好的例子是提供抽象,使得功能可以以实现效率和增加代码大小为代价来访问。
另一个关键目标是克服进入障碍;技术验收模型(图2)为实现这一目标提供了一个清晰的框架,突出了易用性和感知有用性。通过实验和教育洞察技术,可以提高认知的实用性。原型设计方法自然支持用户探索,同时使营销和应用工程功能能够轻松演示和展示技术。
图2:技术接受度(Davis等,1989)。易于使用实际上非常依赖于背景;大多数好工具都很容易用于他们的预期任务。但对于不同的任务,结果不太可能相同。通过明确定义快速原型设计的背景,使设计权衡集中于易用性变得更有意义。对于熟悉现有专有架构和工具链的行业内嵌入式开发人员而言,从到学习者的额外负面感觉可能令人望而生畏。仅这些因素就足以推迟探索转向现代解决方案的好处。对于新用户而言,恐惧,不确定性和怀疑同样令人望而却步。这使初始体验变得至关重要;这些工具必须快速提供结果,投资少,建立信任并获得任何进一步的持续投资。
入门
mbed的目标是让新用户尽快运行他的个项目,建立信心和信任在硬件和软件工具链中。mbed工具采用了一些新技术来实现这一目标,结果不言而喻;你可以在60秒内开始。这一成就意味着没有理由不进行实验。
预先确定的优点是无需设置或安装。对于许多人来说,这只是一个令人愉快的惊喜,允许在没有行政职责的情况下即时访问。但对于其他在许多教育和工作场所环境中都有锁定计算机系统的人而言,这可能是能否测试微控制器之间的区别。
IDE简单但功能强大,可以让它走出方式并做它的设计-编辑和编译代码。通过预先配置的所有内容,它可以在任何平台上开箱即用,包括PC,Mac或Linux。这种即时无障碍访问使工具更有信心,使用户能够在需要使用或演示它们时随时取出它们。
现在,通常可以在多台计算机上工作,在线方法成为一个特别的优势。您不仅可以避免多次安装的问题并保持同步,而且无论您身在何处,您的在线工作空间都随身携带。
微妙的优点是您看不到的东西。您无需做出决定,因为已经为这项任务提供了合适结果的选项和配置。
图3:在线编译器。
快速原型设计
mbed的硬件和软件组件的架构和实现在原型设计方面提供了独特的优势。
mbed微控制器硬件封装了恩智浦LPC1768微控制器,支持元件和智能USB接口采用实用的40引脚0.1“间距DIP外形,非常适合在无焊接面板,条板和通孔PCB上进行试验。为了支持暴露的接口,mbedC/C++库提供了高-微控制器外围设备的电平接口,实现清晰,紧凑,API驱动的编码方法。这种组合可立即连接外围设备和模块,用于基于微控制器的系统设计的原型设计和迭代,为开发人员提供更多创新和更多的自由图4显示了基本的mbed微控制器引脚排列,指示了接口资源的可用性和位置。接口指示特德匹配mbed库中的那些。这突出了它们共同开发的一些主要优点。API提供抽象的外围接口,而不是特定于实现。这些库使用面向对象,它可以很好地映射到有形的物理硬件资源。硬件,库和文档共享相同的接口命名和概念。
图4:mbed微控制器引脚排列。
硬件和软件之间的对齐使得自然编程风格能够捕获意图,这对于快速实验和迭代至关重要。
例如,mbed避免了需要通常的多级间接引脚和资源分配需要。这些往往会失去意义并引入错误。
#include“mbed.h”//mosi,miso,sclkSPImyspi(p5,p6,p7);
intmain(){//设置9-bitSPI@1MHz
myspi.frequency(1000000);
myspi.format(9);intresponse=myspi.write(0x8F);
图5:配置并写入aSPI器件。
图5中的SPI示例演示了如何设置SPI主接口。首先,创建一个SPI对象并将其绑定到所需的引脚(mosi,miso和sclk),如图4所示。请注意,当物理连接器件时,此表达式现在同样有用-规范已捕获物理连接。
接下来,在执行写/读事务之前配置SPI对象(myspi)的频率和位格式。SPI对象上的方法定义明确,界面直观,操作独立于底层硬件的低级设置或要求实际上,要更改本例中使用的SPI端口,只有引脚名称会需要改变。这有助于将设计的物理方面(使用的资源以及它们如何被固定)的修改分离到控件(它们的作用)。
图6中显示了捕获意图的类似示例。在这种情况下,每次在数字输入引脚上发生上升沿中断时,都会调用一个函数。中断是一个简单的概念,但设置和正常运行非常复杂。使用mbed,代码在概念上非常简单。创建一个可以产生中断的引脚,并将一个函数附加到该引脚的上升沿。
#include“mbed.h”中断按钮(p5);
led=!led;
}
intmain(){//附加翻转到p5边缘button.rise(&flip);//徘徊永远
while(1);
图6:将函数附加到引脚中断事件。
InterfaceFunctionDigitalIn
DigitalOut
DigitalInOut
InterruptIn
AnalogIn
AnalogOut
PwmOut
SPI
I2C
CAN
以太网
定时器
Ticker
超时
读取数字输入引脚的状态《br》写入数字输出引脚的状态
读取和写入双向数字引脚
在引脚上升沿/下降沿触发功能
读取模拟输入引脚上的电压
控制模拟输出引脚上的电压
控制脉冲宽度调制输出引脚
与串行(UART)设备通信
与SPI从设备通信
与I2C从设备通信s
在CAN总线上通信
读写以太网数据包
通用计时器
以固定间隔调用函数
7:mbed库接口。
库是使用整个方法构建的(参见图7),它允许开发人员专注于应用程序逻辑而不是实现细节。
图8:mbed库体系结构。
应用程序示例
为了演示如何使用mbed实现简单的应用程序实验,以下示例演示了由Internet数据库控制的硬件设备。
图9中的示例程序实现一个系统,该系统在屏幕上显示消息并根据HTTP请求的结果移动伺服电机。该解决方案不太可能是的,强大的或完整的,但足以使概念有效。
#include“mbed.h”#include“HTTPClient.h”
#include“MobileLCD.h”MobileLCDlcd(p5,p7,p8,p9);