上一課:
【小黑嵌入式系統(tǒng)第六課】嵌入式系統(tǒng)軟件設(shè)計(jì)基礎(chǔ)——C語言簡述、程序涉及規(guī)范、多任務(wù)程序設(shè)計(jì)、狀態(tài)機(jī)建模(FSM)、模塊化設(shè)計(jì)、事件觸發(fā)、時(shí)間觸發(fā)
下一課:
【小黑嵌入式系統(tǒng)第八課】初識(shí)PSoC Creator?開發(fā)——關(guān)于PSoC Creator&下載、創(chuàng)建項(xiàng)目、單片機(jī)中的hello world(點(diǎn)亮一個(gè)led)
一、PSoC? 5LP主芯片
- PSoC 5LP 是真正的可編程嵌入式片上系統(tǒng),在同一芯片中集成了自定義的模擬和數(shù)字外設(shè)功能、存儲(chǔ)器以及 ARM Cortex-M3 CPU。
- 帶有工作頻率高達(dá) 80 MHz 的 DMA 控制器、數(shù)字濾波處理器以及 32 位 ARM Cortex-M3 內(nèi)核
- 超低功耗與工業(yè)級(jí)最寬電壓范圍
- 帶有支持用戶自定義的可編程數(shù)字和模擬外設(shè)
- 任意模擬或數(shù)字外設(shè)向任意引腳靈活路由的功能
- PSoC 5LP 帶有一個(gè)豐富的功能集,包括:一個(gè) CPU 和存儲(chǔ)器子系統(tǒng)、一個(gè)數(shù)字子系統(tǒng)、一個(gè)模擬子系統(tǒng)以及全部系統(tǒng)資源。
-
性能
- 工作頻率介于 DC 至 80 MHz 之間
- 32 位 ARM Cortex-M3 CPU、32 個(gè)中斷
- 24 通道直接存儲(chǔ)器訪問(DMA)控制器
- 24 位 64 抽頭數(shù)字濾波處理器(DFB)
-
存儲(chǔ)器
- 程序閃存的最大容量為 256 KB
- 此外,還有多達(dá) 32 KB 的閃存空間,用于存儲(chǔ)糾錯(cuò)碼(ECC)
- SRAM 空間達(dá) 64 KB
- EEPROM 容量為 2 KB
-
數(shù)字子系統(tǒng)
- 4 個(gè) 16 位定時(shí)器、計(jì)數(shù)器和 PWM (TCPWM)模塊
- I2C,其總線速度為 1 Mbps
- 獲得認(rèn)證的全速(FS)USB 2.0,其速率為12 Mpbs
- 全速 CAN 2.0b 接口,16 個(gè) Rx 緩沖區(qū),8 個(gè) Tx 緩沖區(qū)
- 20 到 24 個(gè) 通用數(shù)字模塊(UDB),通過配置 UDB 模塊,可以創(chuàng)建有限數(shù)量的如下功能模塊:
- 8、16、24 和 32 位定時(shí)器、計(jì)數(shù)器和PWM
- I2C、UART、SPI、I2S 和 LIN 2.0 接口
- 循環(huán)冗余校驗(yàn)(CRC)
- 偽隨機(jī)序列(PRS)發(fā)生器
- 正交解碼器
- 門限邏輯功能
-
模擬子系統(tǒng)
- 具有 8 至 20 位分辨率的可配置 Delta-Sigma模數(shù)轉(zhuǎn)換器
- 最多支持 兩 個(gè) 12 位 SAR 模 數(shù) 轉(zhuǎn) 換 器(ADC)
- 四個(gè) 8 位數(shù)模轉(zhuǎn)換器(DAC)
- 四個(gè)比較器
- 四個(gè)運(yùn)算放大器(opamp)
- 四個(gè)可編程模擬模塊,用于創(chuàng)建:
- 可編程增益放大器(PGA)
- 互阻放大器(TIA)
- 混頻器
- 采樣和保持(S/H)電路
- CapSense?支持,多達(dá) 62 個(gè)傳感器
- 1.024 V ± 0.1%內(nèi)部參考電壓
-
多功能 I/O 系統(tǒng)
- 46 至 72 個(gè) I/O 引腳 — 多達(dá) 62 個(gè)通用 I/O(GPIO)
- 多達(dá) 8 個(gè)特殊功能 I/O(SIO)引腳
- 25 mA 灌電流
- 可編程的輸入/輸出電壓閾值
- 可作為通用模擬電壓比較器使用
- 熱交換功能和過壓容限
- 可用作 GPIO 的兩個(gè) USBIO引腳
- 可從任意一個(gè)數(shù)字或模擬外設(shè)連接到任意的 GPIO
- 任何 GPIO 都具有 LCD 直接驅(qū)動(dòng)器功能,最多可驅(qū)動(dòng)46 × 16 行
- 任何 GPIO 均提供 CapSense 支持
- 1.2 V 至 5.5 V 接口電壓,多達(dá) 4 個(gè)電壓域
-
可編程時(shí)鐘
- 內(nèi)部振蕩器的頻率范圍為 3 至 74 MHz,在 3 MHz 頻率時(shí),精度為 1%
- 外部晶振的頻率范圍為 4 至 25 MHz
- 內(nèi)部 PLL 能夠生成高達(dá) 80 MHz 的時(shí)鐘
- 頻率分別為 1 kHz、33 kHz 和 100 kHz 的低功耗內(nèi)部振蕩器
- 外部時(shí)鐘晶振的頻率為 32.768 kHz
- 可布線到任何外設(shè)或 I/O 的 12 個(gè)時(shí)鐘分頻器
二、PSoC 5LP I/O系統(tǒng)
(1) I/O系統(tǒng)特性
-
I/O系統(tǒng)為CPU內(nèi)核和片內(nèi)外設(shè)提供了連接到外部世界的接口。PSoC的I/O非常靈活,(總體上說)可以連接任意片內(nèi)信號(hào)至任意引腳,從而大大簡化了電路設(shè)計(jì)和電路板布局布線。
-
每種PSoC器件均有兩種類型的I/O引腳:通用I/O(GPIO)、特殊I/O(SIO)。包含USB功能的器件還提供了第三類的引腳USBIO。
-
GPIO和SIO提供了相似的數(shù)字功能,它們的主要區(qū)別在于模擬能力和驅(qū)動(dòng)能力。包含USB功能的器件還提供了兩個(gè)USBIO引腳,支持專門的USB功能和部分GPIO功能。
所有I/O引腳均可供CPU和片內(nèi)數(shù)字外設(shè)用作數(shù)字輸入、數(shù)字輸出,并且所有I/O引腳都可產(chǎn)生中斷。
所有GPIO引腳都可用作模擬輸入、CapSense(電容感應(yīng))、LCD段驅(qū)動(dòng)。
SIO引腳可被用于超過Vdda電壓(器件的最高供電電壓)值時(shí)的情況,以及用來產(chǎn)生可編程的輸出電壓,或設(shè)置可編程的輸入閾值電壓。
一個(gè)GPIO引腳的結(jié)構(gòu)框圖:
一個(gè)SIO引腳的結(jié)構(gòu)框圖:
一個(gè)USBIO引腳的結(jié)構(gòu)框圖:
(2) I/O系統(tǒng)怎樣運(yùn)作?
PSoC 的I/O系統(tǒng)提供以下功能:
- 數(shù)字輸入感測(cè)
- 數(shù)字輸出驅(qū)動(dòng)
- 引腳中斷
- 模擬輸入、輸出的連接
- LCD段驅(qū)動(dòng)、外部存儲(chǔ)接口(EMIF)的連接
- 存取片內(nèi)外設(shè):
(1)用指定port的方式直接連接
(2)通過通用數(shù)字塊(UDB)經(jīng)由數(shù)字系統(tǒng)互連(DSI)的方式連接
接下來后面主要介紹GPIO的基本運(yùn)作方式
PSoC 5LP系列器件包含了46~72個(gè)I/O引腳,為了方便管理眾多的I/O引腳,它們被組織成端口(port)的形式,每個(gè)端口最多包含8個(gè)引腳(pin)。
一些I/O引腳為多功能復(fù)用引腳(除通用功能外,還具有諸如USB、調(diào)試口、或石英晶體振蕩器等特殊功能),其特殊功能通過相關(guān)的控制寄存器來使能,如通過設(shè)置石英晶體振蕩器控制寄存器,可將該I/O引腳用作石英晶體振蕩器功能。
具有多個(gè)名稱的引腳為多功能復(fù)用引腳。
引腳名稱中,諸如P1[2]的名稱表示該引腳為端口1(port 1)中的2號(hào)引腳(pin2)。在PSoC中,一個(gè)端口最多包含8個(gè)引腳。
1、I/O驅(qū)動(dòng)模式
I/O驅(qū)動(dòng)模式是引腳的主要屬性之一
每個(gè)GPIO或SIO引腳都可以被獨(dú)立配置為8種驅(qū)動(dòng)模式中的一種。
- ‘Out’信號(hào)由數(shù)據(jù)寄存器DR驅(qū)動(dòng)(當(dāng)引腳的“硬件連接”屬性被禁用時(shí)),或由其它數(shù)字系統(tǒng)電路直接驅(qū)動(dòng)。
- ‘In’信號(hào)驅(qū)動(dòng)引腳狀態(tài)寄存器PS,及其它數(shù)字系統(tǒng)電路。
- ‘An’信號(hào)連接到模擬系統(tǒng)電路中。
- 高阻模擬
為默認(rèn)的復(fù)位狀態(tài),關(guān)閉所有的輸出驅(qū)動(dòng)器和數(shù)字輸入緩沖器。這就避免了由于來自浮空的電壓引起的流入數(shù)字輸入緩沖器的電流。這個(gè)狀態(tài)被推薦用于浮空或者支持模擬電壓的引腳。
高阻模擬引腳連接到低噪聲低干擾的專門布線路徑,它不提供數(shù)字輸入功能。
- 高阻數(shù)字
使能輸入緩沖器用于數(shù)字信號(hào)輸入。這是一個(gè)常用的高阻狀態(tài),推薦用于數(shù)字輸入。
3.電阻上拉或電阻下拉
上拉或下拉各自在一個(gè)數(shù)據(jù)狀態(tài)下提供串行電阻,并在另一數(shù)據(jù)狀態(tài)下提供強(qiáng)驅(qū)動(dòng)。該模式下,引腳能被用于數(shù)字輸入/輸出。這些模式常見于連接機(jī)械開關(guān)。
4.開漏、高驅(qū)動(dòng),開漏、低驅(qū)動(dòng)
開漏模式引腳在一種數(shù)據(jù)狀態(tài)下為高阻,在另一數(shù)據(jù)狀態(tài)下提供強(qiáng)驅(qū)動(dòng)。引腳能被用于數(shù)字輸入/輸出。
一個(gè)典型的應(yīng)用是驅(qū)動(dòng)I2C總線上的信號(hào)線。
5.強(qiáng)驅(qū)動(dòng)
在高或低電平輸出狀態(tài)均提供強(qiáng)的CMOS輸出驅(qū)動(dòng)。這是引腳常用的輸出模式。通常,強(qiáng)驅(qū)動(dòng)模式引腳不得用作輸入。這個(gè)模式通常用于驅(qū)動(dòng)數(shù)字輸出信號(hào)或者外部的FET。
6.電阻上拉和下拉
與電阻上拉或下拉模式類似,區(qū)別是總是存在串行電阻。在高輸出狀態(tài)是上拉,而在低輸出狀態(tài)是下拉。
該模式常用于其它可能引起短路的信號(hào)在驅(qū)動(dòng)總線時(shí)。
如果I/O引腳選擇旁路模式(缺省模式),則實(shí)際的I/O引腳上電壓由端口數(shù)據(jù)寄存器(DR)值、引腳驅(qū)動(dòng)模式、引腳所接負(fù)載共同決定。引腳電平狀態(tài)可從端口狀態(tài)寄存器(PS)中獲得。
每個(gè)I/O引腳有三個(gè)驅(qū)動(dòng)模式配置位(DM[2:0]),這些配置位位于一組PRTx_DM[2:0]寄存器中。 例如寄存器PRTx_DM2、 PRTx_DM1、 PRTx_DM0的各自bit y位,這3位用來設(shè)置portx的piny引腳(即Px[y]引腳)的驅(qū)動(dòng)模式。
I/O引腳驅(qū)動(dòng)模式
2、I/O端口配置寄存器
配置I/O引腳驅(qū)動(dòng)模式,以及引腳的其它一些功能設(shè)置,可通過兩種方式:
- 端口配置寄存器 —— 對(duì)某端口的全部引腳進(jìn)行配置
- 引腳配置寄存器 —— 單獨(dú)配置某一個(gè)端口的某一引腳
CPU可通過寫端口數(shù)據(jù)寄存器(PRTx_DR)來讓引腳輸出高低電平(或高阻態(tài));CPU通過讀引腳狀態(tài)寄存器(PRTx_PS)來獲取引腳實(shí)際的電平狀態(tài)。
端口配置寄存器:配置某端口的所有引腳,每種寄存器配置一個(gè)功能,各引腳功能設(shè)置可相同也可不相同。
表中所列的各寄存器均為一組寄存器。如PRT[0…11]_DR,表示有12個(gè)寄存器,分別為PRT0_DR ~ PRT11_DR,寄存器名中的數(shù)字表示端口號(hào)(即分別對(duì)應(yīng)port0~port11的數(shù)據(jù)寄存器)。每個(gè)寄存器為8位,寄存器每個(gè)bit對(duì)應(yīng)該端口的一個(gè)引腳,如PRT0_DR寄存器的bit0對(duì)應(yīng)port0的pin0(即P0[0]引腳)。
PRT[0…11]_PRT配置寄存器(只寫):
將某端口的所有引腳配置為相同模式,一次完成全部功能配置。
使用PRTx_PRT寄存器實(shí)現(xiàn)對(duì)port x的所有引腳的一次性相同配置
端口引腳配置寄存器(PRTx_PC0 ~ PRTx_PC7):用于訪問單個(gè)I/O端口引腳的配置或狀態(tài)位。下圖給出了訪問P3[2]引腳配置寄存器的結(jié)構(gòu)圖。
全部的端口引腳配置寄存器簡化表示為PRT[0…14]_PC[0…7],最多包含15x8個(gè)寄存器。
寄存器名稱前面的數(shù)字為端口號(hào),后面的數(shù)字為引腳號(hào),如寄存器PRT3_PC2為port3的pin2(即P3[2]引腳)引腳配置寄存器。
三、GPIO控制LED流水燈的實(shí)現(xiàn)
-
方法1(參見示例項(xiàng)目LED_Marquee):用Creator組件庫中的數(shù)字輸出引腳組件繪制原理圖,在項(xiàng)目的設(shè)計(jì)范圍資源文件(.cydwr)中設(shè)置其與實(shí)際引腳的映射,用該組件的API函數(shù)來控制GPIO口的輸出。
-
方法2(參見示例項(xiàng)目LED_Marquee2):用Creator組件庫中的cy_boot組件(該組件自動(dòng)被包含進(jìn)每個(gè)項(xiàng)目中,原理圖中不顯示),無需畫原理圖及設(shè)置引腳映射,直接用該組件的API函數(shù)來配置GPIO口及控制GPIO口的輸出。
-
方法3(參見示例項(xiàng)目LED_Marquee3):直接通過I/O系統(tǒng)相關(guān)的寄存器,來配置GPIO口及控制GPIO口的輸出,無需畫原理圖及設(shè)置引腳映射。
建議使用方法1或方法2,尤其方法1。方法3只在要求很快的I/O操作速度時(shí)才需要。
補(bǔ):延時(shí)的實(shí)現(xiàn)可利用cy_boot組件所提供的延時(shí)函數(shù)CyDelay()
關(guān)于GPIO控制LED流水燈的每個(gè)示例項(xiàng)目的閱讀及運(yùn)行:
(1)打開項(xiàng)目目錄中的.cywrk文件;(項(xiàng)目路徑中不能含有中文)
(2)而后查看項(xiàng)目的原理圖TopDesign.cysch、項(xiàng)目的設(shè)計(jì)范圍資源文件.cydwr、main.c、GPIO.h(僅對(duì)LED_Marquee3 示例項(xiàng)目);
(3)將程序下載至PSoC 5LP芯片中(USB線連接到板上的J1口),實(shí)際觀察運(yùn)行效果。
關(guān)于GPIO控制LED流水燈的示例項(xiàng)目的注意事項(xiàng):
(1)注意示例項(xiàng)目中的注釋;
(2)在運(yùn)行程序前需先將CY8CKIT-050板上的LED1與P0[0]插孔用導(dǎo)線連接、將LED2與P0[1]連接;
(3)Creator自帶的組件,均有組件數(shù)據(jù)手冊(cè)(中文翻譯版需到Cypress官網(wǎng)中搜索下載),里面有該組件的功能、各種配置、API函數(shù)等內(nèi)容的詳細(xì)說明。
(4)每個(gè)項(xiàng)目都會(huì)自動(dòng)隱式地包含cy_boot組件,該組件提供了存取芯片資源的一種方式,提供了大量直接可用的API函數(shù)。所有示例項(xiàng)目均使用了cy_boot的一個(gè)API函數(shù) —— 延時(shí)函數(shù)CyDelay(),示例項(xiàng)目2還使用了其引腳相關(guān)API函數(shù)。
cy_boot組件的手冊(cè)獲取方式:
(5)PSoC 5LP器件內(nèi)的所有寄存器的功能及使用說明,參見“PSoC 5LP寄存器技術(shù)參考手冊(cè)”(PSoC 5LP Registers TRM)。文章來源:http://www.zghlxwxcb.cn/news/detail-738554.html
(6)源程序中有一些Creator自定義的數(shù)據(jù)類型,如main.c文件中的uint8類型,這些自定義數(shù)據(jù)類型的含義參見 System Reference Guides 。文章來源地址http://www.zghlxwxcb.cn/news/detail-738554.html
到了這里,關(guān)于【小黑嵌入式系統(tǒng)第七課】PSoC? 5LP 開發(fā)套件(CY8CKIT-050B )——PSoC? 5LP主芯片、I/O系統(tǒng)、GPIO控制LED流水燈的實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!