首页 > 评测 > MCU中的奇美拉——Cypress PSoC6系列评测之一

MCU中的奇美拉——Cypress PSoC6系列评测之一

MCU   CYPRESS   PSoC6   BLE   超低功耗   
  • 作者:zhanzr
  • 来源:21ic
  • [导读]
  • 据称是业内最低功耗的M4内核MCU产品,同时具有双核结构和诸多可编程模拟与数字外设,结合强大的PSoC Creator,这次的PSoC6的体验可谓是非常酣畅。

因为多核心是个很广泛的话题,这里也只能少讨论一些其他平台,就PSoC 6这个多核心处理器,作者把自己学习理解过程中的一些疑问与答案列一下子,相信也是大多数嵌入式程序员关心的话题:

· 问:启动的时候,两个核心怎么情况?

· 答:M0+先启动,M4默认情况是休眠的,这也符合大多数应用,M4只是需要他才唤醒.

· 问:两者怎么下载程序?

· 答:两者共享Flash空间,所以下载程序时下载一个hex就可以了.

· 问:怎么调试?

· 答:两个内核的调试单元是通用的,在Creator中可以选择要调试哪个内核.从Cypress文档上看,某些第三方调试器可以支持多核心调试,但是Creator目前只支持每次调试一个内核.

· 问:两者怎么通信协调?

· 答:跟所有多核心环境一样,共享内存,Mutex, Semaphore, Mailbox都可以.从硬件上的支持来看,IPC较为完备.可以想象两个内核是电脑程序上的两个Process.

· 问:两者时钟怎么关系?

· 答:通过外设分别为两个内核产生时钟.

以上是本人学习此处理器的首先研究的几个问题,当然其他人也许有其他问题可以写在下面来一起探讨.嵌入式处理器多核心环境怎么编程,是个很新的话题,作者相信搞得很透彻的人不多,大家应该多互相学习.

Creator开发实验

说了那么多,这里以一个实践工程来表现一下子Creator开发的过程.为了便于演示,这个工程的内容为:

· M0+内核控制两个灯闪烁;

· M4内核控制另外三个灯闪烁;

虽然号称多核心,这个工程的特点是:两个核心各自干各自的.至于双核心如何同步通信的内容,只能说后面的实验再来详述.本实验只是为了演示Creator开发的一些基本步骤,写多了反而看起来不易理解.

开始运行Creator 4.2,注意是4.2 Beta版本.下载地址上面有.

先来建立工程:

image20.png

图 新建空工程

这里建立空工程,各位有兴趣的可以试试在已有的例子上面修改.

选择各种选项:

image22.png

图 选择生成其他工具的文件

因为这里不想跟任何第三方工具产生纠葛,全部Disable掉.

再选保存地址:

image23.png

图 保存地址

开始创作:

image24.png

图 创作电路图

这里就跟画电路图类似,还要把原理图的一部分贴在这里以便理解:

image25.png

图 LED相关原理图

所以说这些IO口都设定为开漏输出即可驱动LED.

再拖几个电阻,LED,电源节点上来:

image26.png

图 拖上无源器件与电源节点

再就是分配引脚了:

image27.png

图 分配引脚

其余时钟,中断什么的全部留默认的即可:

image28.png

图 其余留默认

生成代码,就是将编辑的原理图,配置等等转换为代码的过程:

image29.png

图 生成代码

生成如果无误的话在左边项目结构中可以看到生成的代码,此处最关心生成的IO口宏:

image30.png

图 生成的代码

再就是软件工夫了,分别在M0+与M4的主文件中作如下编辑:

#include "project.h"

int main(void)

{

__enable_irq(); /* Enable global interrupts. */

/* Enable CM4. CY_CORTEX_M4_APPL_ADDR must be updated if CM4 memory layout is changed. */

Cy_SysEnableCM4(CY_CORTEX_M4_APPL_ADDR);

volatile uint32_t testClk_Cm0 = SystemCoreClock;

for(;;)

{

/* Place your application code here. */

Cy_GPIO_Inv(LED1_0_PORT, LED1_0_NUM); /* toggle the pin */

Cy_GPIO_Inv(LED2_0_PORT, LED2_0_NUM); /* toggle the pin */

  • 本文系21ic原创,未经许可禁止转载!

网友评论