cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 6 MCU

New Contributor

在智能门锁的设计种,M4核用来做指纹算法解码,其他的BLE,capsence,RFID,OLE等功能由M0核执行,M4核长期处于休眠状态,m0被唤醒后,根据需要去出发M4执行指纹解码。

1:如上的任务分配,需要了解到M4与m0对外设资源的分配,及两个核的通信机制。是否有相关文档描述?

2:官方历程中ROTS都是运行与M4核。在智能门锁应用中,需要用M0核运行ROTS,M4长期处于深度睡眠,需要时在运行指纹算法,这样才是最省功耗。

把官方例程的 M4 中RTOS 转移到M0中,需要注意哪些关键,是否有相关文档推荐?

3:附件是官方在M4核的代码,运行正常,我移植到M0核后,就停止在if(CapSense_NOT_BUSY == CapSense_IsBusy()),不能继续往下执行。请问原因是?

0 Likes
Reply
1 Solution
Moderator
Moderator

1:如上的任务分配,需要了解到M4与m0对外设资源的分配,及两个核的通信机制。是否有相关文档描述?

- 尽量避免两个核同时访问同一外设,或者可以通过IPC进行双核之间的通信,协调之间的工作,具体可以参考相关示例代码 -

https://www.cypress.com/documentation/code-examples/ce223549-psoc-6-mcu-ipc-semaphore

https://www.cypress.com/documentation/code-examples/ce216795-psoc-6-mcu-dual-core-basics

2:官方历程中ROTS都是运行与M4核。在智能门锁应用中,需要用M0核运行ROTS,M4长期处于深度睡眠,需要时在运行指纹算法,这样才是最省功耗。

把官方例程的 M4 中RTOS 转移到M0中,需要注意哪些关键,是否有相关文档推荐?

- 应该是可以的。目前还没有具体的文档,可以先尝试移植到cm0+中,看是否出现问题。

3:附件是官方在M4核的代码,运行正常,我移植到M0核后,就停止在if(CapSense_NOT_BUSY == CapSense_IsBusy()),不能继续往下执行。请问原因是?

- 我试了下把CE222827 - PSoC 6 MCU: CapSense Tuner cm4的代码移植到cm0+中,代码运行是ok的,注意把相应的中断也要配置到cm0+。.

View solution in original post

2 Replies
Moderator
Moderator

针对最后一个问题:

首先确认你使用的是 EZI2C 组件,不是标准的 I2C 组件,而且 EZI2C 组件的参数配置必须与CapSense 组件数据手册中 ‘Quick Start’ 章节中要求的配置相同()

Set Data Rate (kbps) to 400.
Set Number of Addresses to 1.
Set Primary Slave Address (7-bits) to 0x08.
Set Sub-Address Size (bits) to 16 bits.

其次,请将  for loop 中的 CapSense_ScanAllWidgets();  函数作为 for loop 的最后一行代码执行。先执行此 API, 再调用  CapSense_IsWidgetActive() 是有问题的。

Moderator
Moderator

1:如上的任务分配,需要了解到M4与m0对外设资源的分配,及两个核的通信机制。是否有相关文档描述?

- 尽量避免两个核同时访问同一外设,或者可以通过IPC进行双核之间的通信,协调之间的工作,具体可以参考相关示例代码 -

https://www.cypress.com/documentation/code-examples/ce223549-psoc-6-mcu-ipc-semaphore

https://www.cypress.com/documentation/code-examples/ce216795-psoc-6-mcu-dual-core-basics

2:官方历程中ROTS都是运行与M4核。在智能门锁应用中,需要用M0核运行ROTS,M4长期处于深度睡眠,需要时在运行指纹算法,这样才是最省功耗。

把官方例程的 M4 中RTOS 转移到M0中,需要注意哪些关键,是否有相关文档推荐?

- 应该是可以的。目前还没有具体的文档,可以先尝试移植到cm0+中,看是否出现问题。

3:附件是官方在M4核的代码,运行正常,我移植到M0核后,就停止在if(CapSense_NOT_BUSY == CapSense_IsBusy()),不能继续往下执行。请问原因是?

- 我试了下把CE222827 - PSoC 6 MCU: CapSense Tuner cm4的代码移植到cm0+中,代码运行是ok的,注意把相应的中断也要配置到cm0+。.

View solution in original post

Top labels