介紹
本文介紹 PSoC Creator cy_boot 元件提供的功能. cy_boot 元件為專案提供系統功能, 以便更好地存取晶片資源. 這些函數不是元件庫的一部分, 但可以被元件庫來使用, 您可以使用函數呼叫來可靠地執行所需的晶片功能.
獨特的cy_boot組件:
- 自動包含到每個專案中
- 只能存放在一個專案中
- 無符號表示
- 預設設定不會存在於元件目錄中
cy_boot 元件提供了一個API, 讓使用者可以快速的完成所需任務. 以下為多個主要功能區, 分別描述.
標準類型
為了支援具有多個編譯器的多個 CPU 上相同程式碼的操作, cy_boot 元件提供了類型和定義(在 cytypes.h 檔案中), 以跨平台建立一致的結果.
基本類型
類型 |
敘述 |
char8 |
8-bit (有符號或無符號, 取決於char的編譯器選擇) |
uint8 |
8-bit 無符號 |
uint16 |
16-bit 無符號 |
uint32 |
32-bit 無符號 |
int8 |
8-bit 有符號 |
int16 |
16-bit 有符號 |
int32 |
32-bit 有符號 |
float32 |
32-bit 浮點數 |
float64 |
64-bit 浮點數 |
int64 |
64-bit 有符號 |
uint64 |
64-bit 無符號 |
硬體暫存器類型
硬體暫存器通常具有副作用, 因此使用揮發性暫存器類型進行參考.
定義 |
敘述 |
reg8 |
Volatile 8-bit 無符號 |
reg16 |
Volatile 16-bit 無符號 |
reg32 |
Volatile 32-bit 無符號 |
編譯器定義
可以透過測試特定編譯器的定義來確定正在使用的編譯器.
定義 |
敘述 |
__GNUC__ |
ARM GCC 編譯器 |
__ARMCC_VERSION |
Keil MDK工具集使用的ARM Realview編譯器 |
回傳代碼
Cypress 例程的回傳代碼以8位元無符號值類型傳回: cystatus. 標準回傳是:
定義 |
敘述 |
CYRET_SUCCESS |
成功 |
CYRET_UNKNOWN |
未知故障 |
CYRET_BAD_PARAM |
一個或多個無效參數 |
CYRET_INVALID_OBJECT |
指定的物件無效 |
CYRET_MEMORY |
記憶體相關故障 |
CYRET_LOCKED |
資源鎖定失敗 |
CYRET_EMPTY |
沒有更多可用對象 |
CYRET_BAD_DATA |
收到錯誤資料(CRC 或其他錯誤檢查) |
CYRET_STARTED |
操作已開始,但尚未完成 |
CYRET_FINISHED |
操作完成 |
CYRET_CANCELED |
操作取消 |
CYRET_TIMEOUT |
操作逾時 |
CYRET_INVALID_STATE |
操作未設定或處於不正確的狀態 |
中斷類型和巨集
類型和巨集提供跨編譯器和平台的中斷服務例程的一致定義. 請注意, 函數定義和函數原型使用的巨集是不同的.
函數定義範例:
CY_ISR(MyISR)
{
/* ISR Code here */
}
函數原型範例:
CY_ISR_PROTO(MyISR);
中斷向量位址類型
種類 |
敘述 |
cyisraddress |
中斷向量(ISR函數的位址) |
內在定義
定義 |
敘述 |
CY_NOP |
處理器NOP指令 |
設備版本定義
定義 |
敘述 |
CY_PSOC4 |
Any PSoC 4 設備 |
CY_PSOC4_4000 |
PSoC 4000 裝置系列 |
CY_PSOC4_4100 |
PSoC 4100 裝置系列 |
CY_PSOC4_4200 |
PSoC 4200 裝置系列 |
CY_PSOC4_4100BL |
支援BLE的PSoC 4100 裝置系列 |
CY_PSOC4_4200BL |
支援BLE的PSoC 4200 裝置系列 |
CY_PSOC4_4100M |
PSoC 4100M 裝置系列. |
CY_PSOC4_4200M |
PSoC 4200M 裝置系列 |
變數屬性
定義 |
敘述 |
CY_NOINIT |
指定變數應放入未初始化的資料部分, 以防止變數在啟動時初始化為零. |
CY_ALIGN |
指定指定類型的變數的最小對齊方式(以位元組為單位). |
CY_PACKED, CY_PACKED_ATTR |
附加到枚舉、結構或聯合類型定義,指定用於表示該類型所需的最小記憶體. 例子: CYPACKED typedef struct { uint8 freq; uint8 absolute; } CYPACKED_ATTR imoTrim; |
CY_INLINE |
指定編譯器可以執行內聯 |
API實例
一般API
大多數元件都有一組特定於實例的 API, 可讓您初始化、啟用和停用元件.下面一般性地列出了這些函數. 有關具體信息, 請參閱單獨的數據表.
1. `=instance_name`_InitVar
描述:
此全域變數指示組件是否已初始化. 此變數初始化為0, 並在第一次呼叫 _Start() 時設定為 1. 這允許元件在第一次呼叫 _Start() 例程後重新啟動, 而無需重新初始化.
如果需要重新初始化元件, 則可以在 _Start() 或 _Enable() 函數之前呼叫 _Init() 函數.
2. void `=instance_name`_Start (void)
Parameters: None
Return Value: None
描述:
此函數旨在啟動組件操作. _Start() 設定 _initVar 變量, 呼叫 _Init 函數, 然後呼叫 _Enable 函數.
3. void `=instance_name`_Stop (void)
Parameters: None
Return Value: None
描述: 禁用組件操作.
4. void `=instance_name`_Init (void)
Parameters: None
Return Value: None
描述:
將組件的參數初始化為原理圖上的定制器中設定的參數. 所有暫存器將重設為其初始值. 這會重新初始化該元件. 通常在_Start()中呼叫.
5. void `=instance_name`_Enable (void)
Parameters: None
Return Value: None
描述: 啟用組件塊操作.
低功號API
大多數元件都有一組特定於實例的低功耗API, 可讓您將元件置於低功耗狀態. 下面一般性地列出了這些函數. 有關暫存器保留資訊的具體資訊(如果適用),請參閱單獨的資料表.
1. void `=instance_name`_Sleep (void)
Parameters: None
Return Value: None
描述:
_Sleep() 函數檢查元件是否已啟用並儲存該狀態. 然後呼叫_Stop()函數並呼叫_SaveConfig()函數來保存使用者配置.
- PSoC 4: 在呼叫CySysPmDeepSleep()函數之前呼叫_Sleep()函數.
2. void `=instance_name`_Wakeup (void)
Parameters: None
Return Value: None
描述: _Wakeup()函數呼叫_RestoreConfig()函數來還原使用者配置. 如果在呼叫 _Sleep() 函數之前啟用該元件, 則 _Wakeup() 函數將重新啟用該元件.
注意事項:
在沒有先呼叫 _Sleep() 或 _SaveConfig() 函數的情況下呼叫 _Wakeup() 函數可能會產生意外行為.
3. void `=instance_name`_SaveConfig(void)
Parameters: None
Return Value: None
描述:
此功能會儲存組件配置. 這將節省非保留暫存器. 此函數也會保存目前元件參數值, 如「配置」對話方塊中定義的或由適當API修改的. 此函數由 _Sleep() 函數呼叫.
4. void `=instance_name`_RestoreConfig(void)
Parameters: None
Return Value: None
描述:
此函數恢復組件配置. 這將恢復非保留暫存器. 該函數還將元件參數值恢復到呼叫 _Sleep() 函數之前的值.
注意事項:
在不先呼叫 _Sleep() 或 _SaveConfig() 函數的情況下呼叫此函數可能會產生意外行為.
PSoC Creator 產生的定義
PSoC Creator 在 cyfitter.h 檔案中會產生以下的巨集.
專案類型
以下是專案類型的定義(來自「專案」>「建置設定」):
- CYDEV_PROJ_TYPE
- CYDEV_PROJ_TYPE_BOOTLOADER
- CYDEV_PROJ_TYPE_LOADABLE
- CYDEV_PROJ_TYPE_MULTIAPPBOOTLOADER
- CYDEV_PROJ_TYPE_STANDARD
- CYDEV_PROJ_TYPE_LOADABLEANDBOOTLOADER
晶片配置方式
以下是晶片配置模式的定義(來自系統 DWR). 選項因設備而異:
- CYDEV_CONFIGURATION_MODE
- CYDEV_CONFIGURATION_MODE_COMPRESSED
- CYDEV_CONFIGURATION_MODE_DMA
- CYDEV_CONFIGURATION_MODE_UNCOMPRESSED
- CYDEV_DEBUGGING_ENABLE or CYDEV_PROTECTION_ENABLE (啟用調試或保護。擇一)
PSoC 4
- CYDEV_CONFIG_READ_ACCELERATOR (啟用快閃記憶體讀取加速器)
- CYDEV_USE_BUNDLED_CMSIS (包含 CMSIS 標準函式庫)
偵錯模式
以下是調試模式的定義(來自系統 DWR):
- CYDEV_DEBUGGING_DPS
- CYDEV_DEBUGGING_DPS_Disable
- CYDEV_DEBUGGING_DPS_JTAG_4
- CYDEV_DEBUGGING_DPS_JTAG_5
- CYDEV_DEBUGGING_DPS_SWD
- CYDEV_DEBUGGING_DPS_SWD_SWV
晶片保護模式
以下是晶片保護模式的定義(來自系統 DWR):
- CYDEV_DEBUG_PROTECT
- CYDEV_DEBUG_PROTECT_KILL
- CYDEV_DEBUG_PROTECT_OPEN
- CYDEV_DEBUG_PROTECT_PROTECTED
堆疊和堆積
以下是分配給堆疊和堆積的位元組數(來自系統 DWR)的定義. 這些僅適用於 PSoC 4:
- CYDEV_HEAP_SIZE
- CYDEV_STACK_SIZE
電壓設定
以下是電壓設定的定義(來自系統 DWR). 選項因設備而異:
- CYDEV_VARIABLE_VDDA
- CYDEV_VDDA
- CYDEV_VDDA_MV
- CYDEV_VDDD
- CYDEV_VDDD_MV
- CYDEV_VDDIO0
- CYDEV_VDDIO0_MV
- CYDEV_VDDIO1
- CYDEV_VDDIO1_MV
- CYDEV_VDDIO2
- CYDEV_VDDIO2_MV
- CYDEV_VDDIO3
- CYDEV_VDDIO3_MV
- CYDEV_VIO0
- CYDEV_VIO0_MV
- CYDEV_VIO1
- CYDEV_VIO1_MV
- CYDEV_VIO2
- CYDEV_VIO2_MV
- CYDEV_VIO3
- CYDEV_VIO3_MV
系統時脈頻率
以下是系統時脈頻率的定義(來自 Clock DWR):
- CYDEV_BCLK__HFCLK__HZ
- CYDEV_BCLK__HFCLK__KHZ
- CYDEV_BCLK__HFCLK__MHZ
- CYDEV_BCLK__SYSCLK__HZ
- CYDEV_BCLK__SYSCLK__KHZ
- CYDEV_BCLK__SYSCLK__MHZ
JTAG/晶片ID
以下是目前裝置的 JTAG/Silicon ID 的定義:
CYDEV_CHIP_JTAG_ID
IP區塊資訊
PSoC Creator 為使用裝置上存在的 IP 模組產生下列巨集:
#define CYIPBLOCK_<BLOCK NAME>_VERSION <version>
舉例:
#define CYIPBLOCK_P3_TIMER_VERSION 0
#define CYIPBLOCK_P3_USB_VERSION 0
#define CYIPBLOCK_P3_VIDAC_VERSION 0
參考文件
根據使用者所需, 也可參考以下相關文件:
- PSoC Creator 幫助連結
- PSoC Creator 元件規格書
- PSoC Creator 元件作者指南
- PSoC 技術參考手冊
軟體範例原始碼
PSoC Creator 在「尋找範例項目」對話方塊中提供了大量範例項目, 其中包括原理圖和範例程式碼. 對於特定於元件的範例, 請從元件目錄或原理圖中的元件實例開啟對話方塊. 對於一般範例, 請從「起始頁」或「檔案」功能表開啟該對話方塊. 根據需要, 使用對話方塊中的「篩選器選項」來縮小可供選擇的項目清單的範圍.
有關詳細信息, 請參閱 PSoC Creator 說明中的“查找範例項目”主題.
**資料來源 英飛凌原廠資料
評論