DesignSpark Electrical Logolinkedin
菜单 搜寻
提问问题

PSoC 6 - IoT性能提升单片机

 

这些阅读我们以前的帖子的人将会注意到,我们只介绍一些性能良好的PSoC产品,比如有BLDC电机套件或穿孔带阅读器,我们过去非常享受使用PSoC ICs。

当我们有机会看到PSoC6 CY8CKIT-062-BLE套件问世时,我们欢呼雀跃。我们已经获得了一个非常接近标准工具包的早期访问程序工具包(EAP),只能获得从写入开始几周的运用时间。

IoT焦点

IoT是新的PSoC系列的重点,作为最热门的话题应该并不惊奇。 这并不是说PSoC6不适合应用在其余方面,但是有一些重要的改变将其与针对IoT终端应用的前身区分开。 由于PSoC系列的灵活性,这些专业器件几乎都可以找到其他用途。

IoT Power

Power对于IoT终端有两个含义:

  • 第一是以瓦特为单位的功率,对产品的电池寿命有重大影响。
  • 第二是CPU的运行速度的能力,对用户体验有重大的影响。

这些特点通常是相互排斥的,CPU速度越快通常意味着需要使用更多的功率,因此通常以速度与功率折中结束。

解决这个问题的现代方法是增加一个更小的CPU,虽然这听起来很直观,但是在CPU设计领域中变得越来越普遍。一个流行的例子是三星Exynos 9(Galaxy Note 8等),它使用ARM big.little架构,这允许CPU随着处理要求的变化随时从高功耗替换到低功耗。

 新的PSoC 6架构旨在提供第三个选项 - 相当于得到蛋糕的同时并吃了它。 PSoC 62有带浮点的ARM Cortex M4和第二个“低功耗”M0 +。值得注意的是,低功耗只在特定情况下被需要:M0 +不是懒惰;PSoC 4系列中的CPU,对于某些应用程序本身而言是足够的。与big.little,架构不同,两个内核都可以并行使用,因此可以共享工作负载,但就像big.little一样,当不需要处理要求时,系统可以关闭大功率CPU并在较小的较低功耗系统上运行。通过以这种方式实现架构,PSoC 6成为真正的多核CPU,并且都是不对称的。

IoT安全

有人会认为安全是迄今为止IoT面临最大的挑战之一。一个月的时间内,随着数据盗窃的增加,公司被攻破的消息频频发生。这种情况肯定可以改善的。智能牙刷的想法告诉世界,我们只需30秒去刷牙不满一分钟可能听起来不可怕,但是IoT设备不限于牙刷;如果您的设备有麦克风,情形可能会更加严重!

在过去的机顶盒设计中,大部分软件和硬件设计与安全性相关,并应防止黑客入侵。防御需要花费数百万美元,所以尽一切努力确保更少的妥协。主要的防御是加密闪存和RAM中的所有内容 - 在现代设计的任何时候,如果未加密的数据表面。你可以想象,这使得CPU基于这个原因通过被定制和加密达到保密协议的程度。

继续到2017年,概览PSoC 6架构,与以前的生活中的CPU有很多相似之处。

 PSoC 61,62和63架构包含一个加密模块,以允许代码得到保护,这使得没有正确得密码无法读取代码。 CPU具有一次性保险丝,以便将此功能“烧录”到芯片中,强制安全启动。这可以防止设备的任何入侵和恶意代码的运行。四路SPI扩展端口允许执行就地操作,而没有安全加密引擎将完全避开任何内置安全性。对于PSoC 62和63,已经考虑到这一点,并且存在加密加速器,以确保就地执行不会影响受信任的环境或性能。

套件CY8CKIT-062-BLE(在我们的例子中为-EAP)

它很好的呈现了与所有Cypress CY8CKITs一样的内容,并附带一个磁性封闭的存储器(不少于4枚磁铁)。

 

套件包含:

  • 说明/快速入门
  • USB-A USB-C电缆
  • PSoC BLE dev板(USB-C电源)
  • CY8CKIT-28-EPD 2.7寸电子纸显示屏
  • CY5677 CySmart BLE 4.2适配器
  • 多种跳线

PSoC BLE套件具有PMOD和Arduino屏蔽连接,可以快速进行原型设计,并将您的Arduino项目提升到一个新的水平。如果就像PSoC 4套件(CY8CKIT-042-BLE)一样还不够,,它配备了所有开始所需的东西,包括蓝牙适配器以确保您能正确地调试设备。您的笔记本电脑可能具有蓝牙,但很有可能它不具备BLE功能,因此,Cypress提供了一个已知的工作BLE设备。

在这一点上我们必须诚实地承认,我们的PSOC 4套件比所提供的CY5677 CySmart BLE加密狗的用途更少,因为CY5677 CySmart BLE已被证实,不止适用于Cypress设备,而且是适用于任何BLE设备的非常方便的调试工具。

BLE

我们之前已经在Thunderboard文章中讨论过BLE。对于那些错过这篇文章的人来说,BLE是同时复杂和简单的。它围绕GATT配置文件,其作用就像数据库,用于如何将数据传输到设备和从设备传输。在这些配置文件中粘贴可以实现简单的心率监测器几个小时的工作。在GATT简介边界之外,您将需要更多的工作。

如果您想了解有关BLE的更多信息,PSoC4套件附带了优秀的教程,这些教程仍将与PSoC6的BLE方面相关。

USB-C电源

当谈及兼容性,尤其是PD(电源传输),USB-C可能是一个小问题。没有太多的细节,有许多适用于USB-C PD1,PD2和现在的PD3的配置和标准。这是在我们转移数据和高速切换或AUX模式的要求之前...。

所有这一切归结为要求一个坚如磐石的PD控制器,Cypress套件附带了一个CYPD3126,它是CCG3系列电源IC的一部分,功能齐全(PD3甚至广告牌支持(AUX模式))。如果它像CCG2那样执行,我们只期望好东西。

PSoC特殊性

如果您阅读过BLDC或最近的穿孔带阅读器文章,您将了解PSoC不仅是微型 - 它是FPGA / CPLD和模拟前端引导。 PSoC6具有变体,所有的PSoC 4和5的所有优点都将得到支持,而高端设备也是非常强大的。 对于数字设计,UDB(内部FPGA)允许重要的的组件减少。 需要另外一个定时器或移位寄存器

集成的模拟结构对模拟域执行相同的操作。 很可能几乎没有其他硬件用于设计。 这包括接触式电容或其他类似的模拟域问题。

演示

从视频中可以看出,该设备使用其中一个演示程序进行了预编程。 在演示中,触控和电子笔均已启用,并且与所有Cypress套件一样,提供了所有源代码。

通过安装套件文件和最新的PSoC创建者,我们可以打开演示,并快速浏览。

对于先前使用PSoC Creator的人来说,打开E-INK演示应该是很熟悉的,因为我们使用了PSoC BLDC套件示例。

浏览代码我们很快找到源文件。 每个文件都有单独的文件,这使得重新使用代码更容易。

/* Header file includes */
#include <project.h>
#include "touch.h"
#include "screen.h"

/*******************************************************************************
* Function Name: int main()
********************************************************************************
*
* Summary: 
*  Main function that continuously reads touch information and updates the screen
*  accordingly
*
* Parameters:
*  None
*
* Return:
*  int
*
* Side Effects:
*  None  
*
*******************************************************************************/
int main(void)
{
    /* Variable used to store the touch information */
    touch_data_t touchData;

    /* Enable global interrupts */
    __enable_irq();

    /* Initialize the display, touch detection and low power modules */
    InitScreen();
    InitTouch();

    for (;;)
    {
        /* Read the touch information from the CapSense buttons and the slider */
        touchData = GetTouch();

        /* Update the screen according to the touch input */
        UpdateScreen(touchData);
    }
}

/* [] END OF FILE */

cm0p_code

/* Header file includes*/
#include <project.h>

/*******************************************************************************
* Function Name: int main()
********************************************************************************
*
* Summary: 
*  Empty function : Code execution will not happen as the Cortex-M4 is not enabled
   by the Cortex-M0+ in this project.
*
* Parameters:
*  None
*
* Return:
*  int
*
* Side Effects:
*  None  
*
*******************************************************************************/
int main(void)
{
}

/* [] END OF FILE */

cm4_code

与以前的PSoC示例不同,这有两个“主”文件:main_cm4和main_cm0p。 M4和M0 +是两个核心。 对于我们打开的示例,所有代码都在cm0p文件中执行,所以M4不活动。 另一个例子,PSoC6产品M0 +的权力是服务于典型的CPU将会禁止的高需求应用程序。

/* Array that stores the text pages */   
char const textPage [TOTAL_TEXT_PAGES][TEXT_PAGE_CHARACTER_SIZE] =
{   
    /* Pages of "PSoC 6 MCU FEATURES" menu item */
    /* Page 1 */
    { 
    "PSoC 6 MCU FEATURES (Page 1 of 8)"\
    "                                 "\
    "CPU Subsystem:                   "\
    "150-MHz ARM Cortex-M4 CPU with   "\
    "single-cycle multiply (Floating  "\
    "Point and Memory Protection Unit)"\
    "                                 "\
    "100-MHz Cortex M0+ CPU           "\
    "                                 "\
    "Two DMA controllers with sixteen "\
    "channels each                    "\
    "                                 "\
    },
    
    /* Page 2 */
    { 
    "PSoC 6 MCU FEATURES (Page 2 of 8)"\

etc...

查看screen_contents.c文件,我们可以看到E-INK显示文件,包含Cypress的图稿。

有趣的是编译器的正确设置,“const”的使用将等同于存储在闪存中的数据,而不使用静态RAM,当您只有512k的RAM在较小的部分时很重要。

结束语

像往常一样,示例文件是任何项目的好开端。 使用PSoC 6的双处理器架构,它完全可能通过一个芯片解决所有IoT的问题:安全性,BLE,模拟或数字,它具有这一切功能。 CY8CKIT-62-BLE是迄今为止功能更全面的套件之一,将来将非常有用。

Karl is a design engineer with over a decade of experience in high speed digital design and technical project leadership in the commercial electronics sector.

17 Oct 2017, 8:19