最近我被要求设计一款双通道讯号转换器,从双极输入电压到双极输出电流;我马上假设这应该是一个纯类比设计,但有些事情却困扰了我。其中一个明确的需求是,每个通道要有一颗根据输入讯号变化亮度的双色LED,并以红灯或是绿灯来分别指示讯号为正或是负。

这会遇到两个问题;第一, LED驱动会需要升压,所以没有接近零的死区;第二,我可以预见一个状况是当讯号为负,LED (以及可能是输出)却呈现正值,反之亦然。这种状况的机械当量称作为后座力(backlash)。我认为并非要采用可变电压来驱动LED,而是采用PWM驱动器如LinearLTC6992,但我仍会产生一个偏移,也无法解决后座力的问题。

此外,我会需要两颗PWM驱动器(每个通道一颗),这也可能得增加额外的电路让LED由红变绿;于是一个合乎逻辑的作法是去找适合的低阶微控制器(MCU)

我先从Microchip的产品找起,但我发现适合的是存储器容量较小的16C系列,意味着得使用汇编语言。我曾在其他的开发案使用过16C系列,却遇到指令集不足(该系列MCURISC架构元件)以及存储器区段(memory segmentation)问题;因为这样的偏见,我又找了NXP的元件以及FreescaleARM Cortex-M0芯片。

因为选择太多,我开始犹豫不决。不过以前我曾在一个案子采用FreescaleCodeWarrior开发环境,却发现我们得额外付费才能取得我们需要的支援服务,这又让我产生偏见。

总之我现在可以告诉你,我已经成为Cypreess的 PSoC 的支持者。我曾采用PSoC 1做过许多个小规模设计案,以及用PSoC 5做过一个大型设计;我也听过一些关于采用ARM Cortex-M0核心的PSoC 4的一些热门讨论,但看到 PSoC 4 的价格,实在是令我惊喜。

还好我的设计案在价格上有一些机动性,而且据了解,PSoC的配置灵活性通常能减少一些外部元件的运用;当然,我们已经有仿真器以及一些经验,所以我决定进一步看看这款元件以及搭配的PSoC 4 Pioneer Kit开发工具(可兼容Arduino外壳)。该款开发工具采用多才多艺的PSoC 4200系列元件,这也成为我的设计案出发点。

 

Cypress提供了很棒的开发环境PSoC Creator,能让你进行产品配置、编程以及除错;PSoC的架构介于 MCU 与 FPGA 之间,除了处理器核心,该元件具备一些可配置的类比电路,以及一些可编程数位电路(不过与FPGA的又不太相同)。开发者也能随着元件取得一系列所需功能IP进行配置;该开发环境如下图所示。


PSoC Creator开发环境

如果你需要ADC,只要从开发环境右方的元件选择区选择该功能区块并拖曳下来;如果你需要PWM,也是一样的步骤。要运算放大器或是SPI控制器吗?也没问题!把它们连结在一起以取得一个架构图,然后选择哪些接脚与不同的功能关联,完成了硬件编译,就可以准备好撰写应用程序。

每个你所配置的元素都有其代码与标头,在开发环境的“Workspace Explorer”区域可以找到;所有的API呼叫包含在标头档案中,能轻易地复制剪贴到你的程序码中。在开发环境的右下角可以看到符号与“Open Datasheet”选项,每个零件都有自己的规格表,你能在进行配置前先取得,或是在配置完成后按鼠标右键来取得。

PSoC Creator还包含免费的Keil C编译器,可提供的支援也是免费的;令我个人满意的是,此系统并非以Eclipse为基础。如果你真的想要冒险,你也可以采用一种Cypress称为“datapaths”的技巧,打造小型硬件机器或其他功能。甚至还可以使用 Verilog语言。
(参考原文: Exploring the PSoC 4,by Aubrey Kagan;本文作者为Emphatec工程经理)