PSoC开发流程和一般MCU开发流程有什么区别?
mouserBlog 2021-01-26

低调的华丽——PSoC 6 BLE Pioneer Kit 评测系列之二 


前 言

老子有云:大音希声,大象无形。低调而不失张扬,这是笔者初见PSoC 6 BLE Pioneer 时的感受。

虽然早已在媒体介绍上见过PSoC 6 BLE Pioneer的宣传照片,但是第一次看到PSoC 6 BLE Pioneer摆在面前,还是小小的惊喜了一下。PSoC 6 BLE Pioneer无论在设计还是包装,到软件开发等方面,都为我们带来了更好的体验!

PSoC是Cypress推出的可编程片上系统,2002年推出第一款商用产品PSoC 1,十几年来不断推陈出新,今天的PSoC 6系列,可谓是PSoC产品的集大成者。硬件内核也从最初的M8C演变到了今天的ARM Cortex-M4,PSoC 63则使用了双核,即包含ARM Cortex-M4及ARM Cortex-M0 。PSoC 6 BLE Pioneer套件还为我们带来了CapSense电容触控和最新的BLE 5及USB Type-C的全新体验,加上一块2.7吋的墨水屏,配合PSoC 6的业内最低功耗特性,配置不可谓不华丽。

先简单科普下PSoC。PSoC的全称是Programmable System-on-Chip,即可编程片上系统或可编程片上芯片。PSoC一般由内核、可配置的模拟及数字模块以及可编程的互联线路组成。与FPGA相比,二者都需要在上电时对设备进行配置,不同的是PSoC通过从内置闪存中加载指令来进行配置。可配置模块是PSoC与其它微控制器最大的区别。

开箱

“”

与PSoC 4 Pioneer Kit不同的是,PSoC 6 BLE Pioneer套件中还配备了墨水屏,所以体积也大了许多,看上去倒像是个手机盒子。

PSoC 6 BLE Pioneer的目标很明确,面向IoT应用,主打低功耗、灵活配置及内置安全功能,不过以文无第一,武无第二的角度来看,Cypress此次显得非常自信,宣称是自己是最低功耗的领导者。

“”

打开包装盒,拿开上层的快速用户指南,第一眼看到的就是PSoC 6 BLE Pioneer开发板,墨水屏上显示的是Cypress的LOGO及套件名称,嗯,墨水屏不用上电也能显示,狠好!

“”

这是套件的全家福。包括开发板一块(含墨水屏),USB Type-C 数据线一根,最下面的是蓝牙Dongle,可以用在PC上调试 BLE功能。其实还有几根跳线,忘记取出来了。说实话,要是还能配备一块锂电池就更好了,啥,想多了?

“”

USB Type-C 数据线,直接连接 PC 端的 USB 取电,看到用料还是很扎实的。

“”

开发板正面图,与PSoC 4不同,开发板没有使用红色油墨,使用的是蓝色,少了一份奔放,给人一种恬静的感觉。

开发板详解

开发板主要特性如下:

  • 主控使用PSoC 6,支持BLE(Bluetooth 5.0)

  • Arduino UNO R3兼容接口

  • 板载512Mbit QSPI Flash存储器

  • KitProg2编程器

  • EZ-PD CCG3 USB Type-C供电接口;支持锂电池供电的接口

  • 电容式触摸滑动及按键

  • 两个用户LED,一个RGB LED,一个用户按钮,一个复位按钮

PSoC 63 with BLE芯片使用的是双核架构,框图如下:

“”

对于IoT设备来说,电池使用寿命是个很关键的要素。PSoC 6使用40nm芯片工艺技术制造,提供了超低功耗特性,板载两个内核(Cortex-M4和Cortex-M0 ),Cortex-M4提供了高性能,Cortex-M0 则提供了低功耗支持。

元器件名称及位置如下:

“”
“”

开发板背面图,最中间有个跳线,取下后可以用来测试系统功耗。该设计与STM32的大多数开发板类似,很贴心的一个小设计。另外注意到背面有几个拨码开关,用来对硬件配置进行微调。

“”

2.7吋墨水屏,分辨率为264x176,墨水屏在断电后仍能保持显示的内容。墨水屏模块上还包含一个热敏电阻,用来测量温度。模块上的6轴传感器提供3轴加速度及3轴陀螺仪功能,PDM则用来提供语音输入。

墨水屏可以接受1.8~5V输入电压,转换后输出3.3V电压供墨水屏使用。

“”

墨水屏使用Arduino UNO R3兼容接口,因此也能在其它提供了Arduino兼容接口的开发板上使用。墨水屏通过SPI接口与PSoC进行通信。

开发板多角度赏析

“”
“”
“”

安装PSoC Creator软件

除了硬件升级,PSoC Creator也升级到了4.2版本。接下来准备安装PSoC Creator软件。

PSoC Creator运行需要.net 3.5的支持,在Windows 10上,默认没有安装.net 3.5运行时环境,在安装过程中弹出如下信息:

“”

这本来也不算什么大事,然而坑爹的是,Windows 10 1709版本不能在线安装.net 3.5,只能使用命令行方式从安装盘来进行安装,如下:

“”

安装好.net 3.5之后,终于可以开始安装PSoC Creator 4.2了,截止本文写作时,该软件还是Beta版本,不过使用过程中暂时没发现什么问题。点击next,执行下一步:

“”
“”

软件安装过程中还会提示安装Micro Visual C 2013 运行时环境,从提示的位置下载并安装C 运行时环境后,安装过程继续。

“”

这里选择安装类型,默认Typical,点击Next继续。

“”

等待软件组件安装完成,接下来提示用户注册。

“”

注册完成后,启动软件,界面如下:

“”

使用PSoC Creator进行开发

与MCU开发流程不同的是,PSoC的开发流程先要选择并配置组件,然后生成应用程序,在生成的应用程序内添加相应的程序逻辑,下面以一个点灯程序来介绍如何使用PSoC Creator来进行开发。

首先启动PSoC Creator集成开发环境,在Start Page页面点击Create New Project…,弹出如下对话框:

“”

可以根据开发板类型、开发板模块或开发板设备来进行工程的创建,这里先选择第三个Target device,在右边的类型里选PSoC 6,具体的设备型号选择PSoC 63,由于目前PSoC 63系列还只有一个型号CY8C6347BZI-BLD53,如上图所示,点击next。

“”

这里选择工程模板,这里选择从空白原理图模板,点击next。

“”

这里选择目标IDE,比如是使用IAR或使用makefile来进行编译,咱们直接使用PSoC Creator,所以默认都不选择,直接next进入下一步。

“”

这里选择创建工程的一些选项,如工作区名称、位置及工程名称。工作区用来组织工程,一个工作区可以包含多个工程文件,这个概念和Visual Studio中的概念类似。这里创建一个名为PSoC 6的工作区,创建一个名为led的工程文件。工程文件是组织PSoC程序资源的一个容器。

点击Finish就完成了工程文件的创建。

配置组件并生成应用程序

PSoC Creator默认工作界面如下:

“”

左边是工作区及工程管理窗口,右边是组件选择窗口,中间是原理图编辑区域,由于前面我们选择的是空白原理图,所以现在这里是空的。

接下来在右边的组件选择区选择两个组件,如下:

“”

拖放一个UART(SCB)组件到原理图区,再拖放一个Digital Output Pin组件放入到原理图区,如下:

“”

如果原理图区的图标太小,可以按住Ctrl再框选一个包含住所有组件的区域,编辑器会自动绽放原理图区选定的内容。

接下来就是配置组件,在UART组件上双击,弹出配置对话框,如下:

“”

这里设置UART串口的参数,如波特率,双工模式,数据位等信息。注意设置对话框中还会显示UART实际工作的波特率。

同样双击GPIO组件,弹出的对话框中设置如下:

“”

将名称改为LED_GREEN,勾选External terminal,用于指明连接外部设备,其它参数保持默认即可。

除了在原理图上添加实际的组件 ,也可以使用Off-Chip设备,这些设备类似代码中的注释,供用户理解原理图的实际连接情况。在右边的组件窗口中,切换到Off-Chip选项卡,添加如下设备:

“”

图中蓝色部分是Off-Chip组件,仅供参考,不做实际用途。

组件放置完毕,接下来要配置组件的引脚,即连接到哪个GPIO Pin。

在左侧的工程管理窗口中双击Pins,打开引脚配置编辑窗口,设置如下:

“”

当然这些设置是要参考硬件原理图的,例如LED的参考原理图如下:

“”

这里的G连接到P1_1,也就是绿色LED连接到商品P1_1。

检查一下,如果没有问题,就可以生成应用程序了。

生成应用程序

所谓的生成应用程序,实际上是根据用户对PSoC的配置,生成相应的C程序代码,这些代码主要是初始化硬件,设置硬件参数,同时根据用户对组件的命名生成对应的组件变量。

“”

工具栏上右边的三个工具按钮从左至右依次是生成应用程序、烧写应用程序及调试应用程序。点击生成应用程序按钮,PSoC Creator会根据用户配置生成对应的中间源代码文件。

不过在生成代码的时候出错了,错误信息如下:

“”

意思是说GPIO端口没有输入,所以要修改原来的配置,即去掉HW Connection这个选项。

“”

再次生成应用程序,就没有问题了。

接下来开始构建程序逻辑,例如打开UART通信功能。由于开发板上包含两个MCU,要决定该功能放到哪个MCU里执行,这里随便选择一个都没有关系。

打开CM4相关的代码文件main_cm4.c文件,在main()函数里添加如下代码:

“”

Cy_GPIO_Write()函数控制GPIO端口电平的高低,UART_1_PutString()输出信息到串口,CyDelay()函数做简单的延时处理。

其它一些符号如LED_GREEN_0_PORT等都是前面用户在配置组件时指定的值,可以参考对应的文件,如下:

“”

编译并将代码下载到开发板,可以看到RGB三色LED中的绿灯开始愉快的闪烁,此时打开串口通信软件,也可以看到有信息输出。

“”

这样,咱们的第一个Hello world程序就算完成了。

PSoC的开发流程和一般的MCU开发流程有什么区别呢?

简单的来说,在PSoC开发过程中,首先确定你需要什么功能,然后添加并配置相关的组件,然后PSoC Creator根据PDL生成相关的代码,这些都是基础工作,倒是与ST CUBEMX有点类似。最后的程序业务逻辑,还需要用户自行编写,这一点也与ST CUBEMX类似。

在这一节里,我们了解了PSoC 6 BLE Pioneer的主要特性,该开发套件主要帮助用户学习及了解如何使用PSoC 6系列产品来构建IoT产品,充分利用PSoC 6系列提供的最低功耗特性、灵活的配置方式及内置的安全特性。考虑到PSoC Creator 4.2与以前的版本变化比较大,故花了不少的篇幅详细介绍如何在新版软件里,结合PSoC 6来实现一个完整的Hello World工程。

相关阅读:

本文转载自:
转载地址:
声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有,如涉及侵权,请联系小编邮箱: 进行处理。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
热门推荐
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 让LED 小灯按500毫秒闪烁起来

    推广一种全新的c51单片机编程技巧,特别适合少儿及c语言基础较差的电子爱好者做编程启蒙教学,培养小孩对编程的兴趣。当然也适合我们这种没有c语言基础的老年朋友玩转c51单片机。      如果,想看到更多的类似文章,请打开公众号点击“关注”。就会收到后续的

    02-08
  • 什么是“时序”?LCD1602时序参数表解析

    所谓“时序”从字面意义上来理解,一是“时间问题”,二是“顺序问题”。 先说“顺序问题”,这个相对简单一些。我们在学 UART 串口通信的时候,先 1 位起始位,再 8 位数据位,最后 1 位停止位,这个先后顺序不能错。我们在学 1602 液晶的时候,比如写指令,

    02-20
  • 如何在STM32中配置PWM死区时间

    什么是死区时间? PWM是脉冲宽度调制,在电力电子中,最常用的就是整流和逆变。这就需要用到整流桥和逆变桥。 对三相电来说,就需要三个桥臂。以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT。大致如下图所示; 这两个IGBT不能同时导通,否则就会出现

    02-22
  • 单片机程序防破解的一些建议

    公司或者个人辛辛苦苦开发的程序,肯定谁都不想被人轻易破解并利用,下面为大家分享单片机破解,以及防止破解的。 0 1 单片机解密是什么? 单片机解密又叫做单片机破解、芯片解密、IC解密等,但是这严格说来这几种称呼都不科学,但已经成了习惯叫法,我们把CP

    01-19
  • 在STM32中选用怎样选择I/O模式?

    STM32的GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组

    01-19
  • RT-Thread遵循的许可协议,以及如何提交了一个完整的BSP?

    RT-Thread今天的快速发展和所取得成绩,离不开所有开发者的持续贡献和社区小伙伴的竭力支持。 一、前言 今年6月,我在一款智能混合型的FPGA芯片上,完成了RT-Thread的移植,并向RT-Thread提交了一个完整的BSP,后续又根据审查意见进行了一些完善,最近(11.18

    2020-12-01
  • 为什么有些CPU的主频更低,但运算效率却更高呢?

    为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM32单片机20M主频,执行相同一段代码可能主频更低的STM32所花的时间更短。 这里就牵涉到CPU流水线的问题,本文围绕CPU流水线描述相关内容。 一、早期CPU流水线 1.流水线来源 流水线

    2020-10-19
  • 究竟是什么让很多单片机的工作电压是5V?

    5V来自于TTL电平,5呢为True,0即为False,之后用了压降更低的PN节,衍生出了3.3这个电平。 12V和24V来自于汽车电瓶,早年乘用车又12V和24V两个系统,现在一般小型车12V,商用车24V,再究其由来应该是铅酸电池。 所以3v3和5v一般出现在信号电路或者单片机等vc

    2020-10-19
  • 没想到,CRC校验原来这么简单

    由于公众号申请的时间比较晚,所以没有留言互动功能,最近公众号上线了读者讨论功能,和留言差不多,对本篇文章有什么感想的都可以到文章末尾留言评论。 目录 前言 CRC算法简介 CRC计算 CRC校验 CRC计算的C语言实现 CRC计算工具 总结 前言 最近的工作中,要实

    2020-11-09
  • 解决串口传输“阻塞”问题的方案

    本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应速度。 1.简介 串口由于使用简单,价格

    2020-09-17
  • 嵌入式 Linux 的一切,看这一篇就够了!

    嵌入式Linux是什么 嵌入式Linux跟桌面Linux一样,是一个操作系统。从单片机走过来的童鞋往往习惯于直接控制寄存器,事必躬亲,从零开始实现想要的功能。而在嵌入式Linux的世界里,我们首先要抛弃这个思想,应把它作为最后没办法的办法。 就像我们想要在window

    2020-09-11
  • 单片机高阻态与P0口上拉电阻讲解

    51单片机的时候对P0口必须加上上拉电阻,否则P0就是高阻态,对这个问题可能感到疑惑,为什么是高阻态?加上拉电阻?今天针对这一概念进行简单讲解。 在一个系统中或在一个整体中,我们往往定义了一些参考点,就像我们常常说的海平面,在单片中也是如此,我们

    2020-09-01
下载排行榜
更多
广告