首頁 > 評測 > MCU中的奇美拉——Cypress PSoC6系列評測之一

MCU中的奇美拉——Cypress PSoC6系列評測之一

MCU   CYPRESS   PSoC6   BLE   超低功耗   
  • 作者:zhanzr
  • 來源:21ic
  • [導(dǎo)讀]
  • 據(jù)稱是業(yè)內(nèi)最低功耗的M4內(nèi)核MCU產(chǎn)品,同時(shí)具有雙核結(jié)構(gòu)和諸多可編程模擬與數(shù)字外設(shè),結(jié)合強(qiáng)大的PSoC Creator,這次的PSoC6的體驗(yàn)可謂是非常酣暢。

因?yàn)槎嗪诵氖莻(gè)很廣泛的話題,這里也只能少討論一些其他平臺,就PSoC 6這個(gè)多核心處理器,作者把自己學(xué)習(xí)理解過程中的一些疑問與答案列一下子,相信也是大多數(shù)嵌入式程序員關(guān)心的話題:

· 問:啟動的時(shí)候,兩個(gè)核心怎么情況?

· 答:M0+先啟動,M4默認(rèn)情況是休眠的,這也符合大多數(shù)應(yīng)用,M4只是需要他才喚醒.

· 問:兩者怎么下載程序?

· 答:兩者共享Flash空間,所以下載程序時(shí)下載一個(gè)hex就可以了.

· 問:怎么調(diào)試?

· 答:兩個(gè)內(nèi)核的調(diào)試單元是通用的,在Creator中可以選擇要調(diào)試哪個(gè)內(nèi)核.從Cypress文檔上看,某些第三方調(diào)試器可以支持多核心調(diào)試,但是Creator目前只支持每次調(diào)試一個(gè)內(nèi)核.

· 問:兩者怎么通信協(xié)調(diào)?

· 答:跟所有多核心環(huán)境一樣,共享內(nèi)存,Mutex, Semaphore, Mailbox都可以.從硬件上的支持來看,IPC較為完備.可以想象兩個(gè)內(nèi)核是電腦程序上的兩個(gè)Process.

· 問:兩者時(shí)鐘怎么關(guān)系?

· 答:通過外設(shè)分別為兩個(gè)內(nèi)核產(chǎn)生時(shí)鐘.

以上是本人學(xué)習(xí)此處理器的首先研究的幾個(gè)問題,當(dāng)然其他人也許有其他問題可以寫在下面來一起探討.嵌入式處理器多核心環(huán)境怎么編程,是個(gè)很新的話題,作者相信搞得很透徹的人不多,大家應(yīng)該多互相學(xué)習(xí).

Creator開發(fā)實(shí)驗(yàn)

說了那么多,這里以一個(gè)實(shí)踐工程來表現(xiàn)一下子Creator開發(fā)的過程.為了便于演示,這個(gè)工程的內(nèi)容為:

· M0+內(nèi)核控制兩個(gè)燈閃爍;

· M4內(nèi)核控制另外三個(gè)燈閃爍;

雖然號稱多核心,這個(gè)工程的特點(diǎn)是:兩個(gè)核心各自干各自的.至于雙核心如何同步通信的內(nèi)容,只能說后面的實(shí)驗(yàn)再來詳述.本實(shí)驗(yàn)只是為了演示Creator開發(fā)的一些基本步驟,寫多了反而看起來不易理解.

開始運(yùn)行Creator 4.2,注意是4.2 Beta版本.下載地址上面有.

先來建立工程:

image20.png

圖 新建空工程

這里建立空工程,各位有興趣的可以試試在已有的例子上面修改.

選擇各種選項(xiàng):

image22.png

圖 選擇生成其他工具的文件

因?yàn)檫@里不想跟任何第三方工具產(chǎn)生糾葛,全部Disable掉.

再選保存地址:

image23.png

圖 保存地址

開始創(chuàng)作:

image24.png

圖 創(chuàng)作電路圖

這里就跟畫電路圖類似,還要把原理圖的一部分貼在這里以便理解:

image25.png

圖 LED相關(guān)原理圖

所以說這些IO口都設(shè)定為開漏輸出即可驅(qū)動LED.

再拖幾個(gè)電阻,LED,電源節(jié)點(diǎn)上來:

image26.png

圖 拖上無源器件與電源節(jié)點(diǎn)

再就是分配引腳了:

image27.png

圖 分配引腳

其余時(shí)鐘,中斷什么的全部留默認(rèn)的即可:

image28.png

圖 其余留默認(rèn)

生成代碼,就是將編輯的原理圖,配置等等轉(zhuǎn)換為代碼的過程:

image29.png

圖 生成代碼

生成如果無誤的話在左邊項(xiàng)目結(jié)構(gòu)中可以看到生成的代碼,此處最關(guān)心生成的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原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+