深入了解PSoC?4A :基于SCB的串行通信設計
摘要:本文首先簡(jiǎn)要介紹了PSoC®4A的片內外設子系統架構及SCB模塊的功能。然后概括了當前最常用的三種串行通信協(xié)議,UART,I2C和SPI。并詳細論述了如何在PSoC®4A片內的SCB模塊平臺上,配置并實(shí)現這三種串行通信。
本文引用地址:http://dyxdggzs.com/article/264012.htm關(guān)鍵字:PSoC®4,SCB,UART,I2C,SPI
Abstract: This paper first briefly introduces the architecture of on-chip peripheral subsystem and the function of SCB module. Then generalizes the currently common used 3 serial communication protocol, UART, I2C and SPI. And detailed illustrates how to configure and realize the 3 serial communication on SCB module in PSoC®4A.
Keywords: PSoC®4,SCB,UART,I2C,SPI
1. 引言
PSoC®4A是Cypress可編程片上系統PSoC®(Programmable System on Chip)家族中的最新成員,采用ARM Cortex®-M0作為處理核心,因此也是PSoC®家族中性?xún)r(jià)比最高的成員。PSoC®4完全繼承了PSoC®芯片家族本身的高度可編程的靈活性,并融合了Cortex® M0高性?xún)r(jià)比的處理器核架構,使得PSoC®4 系列產(chǎn)品成為一個(gè)具有高度可擴展性的處理器平臺,在性?xún)r(jià)比、功耗等方面優(yōu)勢顯著(zhù)。在針對電機控制等需要實(shí)時(shí)調試的嵌入式應用中,串行通信顯得尤為重要,PSoC®4將常用的多種串行通信接口(UART,I2C和 SPI)集成到一個(gè)SCB(Serial Communication Block)外設模塊上,且每個(gè)片內都含有兩個(gè)SCB外設。因此用戶(hù)可以非常方便的在SCB外設上設計出自己的串行通信系統。
PSoC®4A產(chǎn)品系列目前推出的是CY8C4100和CY8C4200兩個(gè)入門(mén)級產(chǎn)品系列。本文即以CY8C4200為例,介紹如何利用PSoC®4A片內的SCB外設模塊進(jìn)行UART,I2C和 SPI串行通信設計。
2. PSoC®4A架構及SCB外設模塊簡(jiǎn)介
PSoC® 4A 是基于A(yíng)RM Cortex®-M0 CPU(處理器)的可編程嵌入式系統控制器家族,為嵌入式應用提供了強大的可編程平臺。它集合了可編程模擬資源、可編程內部互聯(lián)、用戶(hù)可編程數字邏輯、通用的固定功能外設計以及高性能的ARM Cortex-M0 CPU子系統。
圖 1是PSoC®4的系統框圖。限于篇幅,本文將主要概括與串行通信相關(guān)的片內資源特性,詳細內容您可以參考Cypress網(wǎng)站上的PSoC®4的數據手冊。
■ 高達48MHz,43 DMIPS 的32位Cortex-M0 CPU,支持單周期乘法
■ 多達 32 KB Flash 及 4KB SRAM內存
■ 兩個(gè)可工作為SPI/UART/I2C 串行通信接口的串行通信模塊(SCB)
■ 四個(gè)可編程數字邏輯模塊(UDB)
■ CapSense® 及 LCD 驅動(dòng)
■ SWD 編程及調試單元
■ 全面支持PSoC Creator IDE 工具
圖 1: PSoC®4芯片系統框圖
PSoC®4在開(kāi)發(fā)環(huán)境方面與PSoC®家族的上一代產(chǎn)品保持一致,仍然為PSoC® Creator,延續了將片內資源抽象為模塊化Component的開(kāi)發(fā)方法,控制系統架構清晰具體,簡(jiǎn)單快捷。用戶(hù)可以更多關(guān)注產(chǎn)品的功能開(kāi)發(fā),而較少的注意芯片的硬件結構細節。PSoC® Creator的詳細信息可以在Cypress網(wǎng)站上獲得。
SCB串行通信模塊支持三種通信協(xié)議:UART,I2C 和SPI。由圖1可以看出PSoC®4提供了兩個(gè)SCB模塊,每個(gè)SCB模塊在同一時(shí)刻只能用于實(shí)現一種串行通信協(xié)議。如果在設計中需要同時(shí)實(shí)現三個(gè)及以上串行通信協(xié)議,用戶(hù)可以借助UDB來(lái)設計。
在PSoC® Creator 3.0中將SCB模塊放入schematic編輯器中,雙擊打開(kāi)配置界面可以看出,SCB共有5個(gè)配置選項。
■ “Unconfigured SCB”: 保留SCB為未配置狀態(tài),需在運行時(shí)實(shí)時(shí)配置。
■ “I2C”: 標準I2C模式。
■ “EZI2C”: EZI2C模式。
■ “SPI”: SPI模式
■ “UART”: UART模式
本文將主要論述最常用的UART,I2C和SPI三種通信協(xié)議在SCB模塊上的實(shí)現方法。
圖 2: SCB模塊及配置界面
3. 基于SCB模塊的UART串行通信實(shí)現
① UART串行通信簡(jiǎn)介
通用異步收發(fā)協(xié)議(UART)定義了一種全雙工的串行異步接口。其拓撲通常是點(diǎn)到點(diǎn)的結構,主要有TX(發(fā)送)和RX(接收)兩個(gè)信號。由于是異步方式,沒(méi)有同步時(shí)鐘信號,需要雙方約定一個(gè)相同的波特率,且每發(fā)送一個(gè)字節后進(jìn)行一次數據同步,因此UART的數據傳輸速率相對較低(常用為115200bps, 最高可達1Mbps)。UART沒(méi)有固定的通信協(xié)議,因此用戶(hù)可以自由定義。所以UART特別適合于諸如電機控制等需要實(shí)施監控系統參數的應用場(chǎng)合,用于在上位機和下位機之間雙向傳遞數據。圖3概括了一個(gè)UART通信的示例。關(guān)于UART通信協(xié)議的詳細定義,您可以參考相關(guān)的理論文獻。
圖 3:UART通信的示例
UART 協(xié)議中一個(gè)典型的數據幀由開(kāi)始位,數據位,奇偶校驗位和停止位組成。開(kāi)始位的邏輯值為0,它標志一個(gè)數據幀的開(kāi)始;數據位是需要傳輸的信息;奇偶校驗位是可選的,它的值取決于所有數據位邏輯值求和結果的奇偶性;停止位的邏輯值為1,它的長(cháng)度可配置。當UART 總線(xiàn)處于空閑態(tài)時(shí),其邏輯值為1,如同停止位。
② 基于SCB的UART通信實(shí)現
在圖2所示的配置框中,將SCB配置為UART模式,點(diǎn)開(kāi)出現的”UART Basic”菜單,配置基本的UART通信參數,如圖4所示;”UART Advanced”菜單下的TX Buffer 和RX Buffer參數保持默認的8個(gè)即可。
圖 4:UART通信參數配置
UART支持全雙工通信,因此數據發(fā)送和接收可以同時(shí)被處理。數據的發(fā)送和接收都可以用中斷與輪詢(xún)兩種方式來(lái)完成。中斷方式是在每次數據發(fā)送/接收完成后產(chǎn)生一個(gè)中斷,在中斷服務(wù)程序中進(jìn)行下一次數據發(fā)送/接收的設置。輪詢(xún)方式是在主循環(huán)中不斷查詢(xún)當前數據接收/發(fā)送任務(wù)是否完成,然后決定何時(shí)開(kāi)始下一次接收/發(fā)送任務(wù)。在類(lèi)似于電機控制的實(shí)時(shí)任務(wù)處理中,中斷通常用來(lái)處理實(shí)時(shí)性要求嚴格的任務(wù),對于用于數據監控和調試目的的UART通信,通常用輪詢(xún)的方式來(lái)實(shí)現。
PSoC Creator 3.0 開(kāi)發(fā)工具本身帶有UART全雙工數據處理的Example Project;點(diǎn)擊菜單File->Example Project,選擇PSoC 4 Architecture,然后選擇”SCB_UartTxRxComm”即可打開(kāi)UART通信例程,如圖5所示。
圖 5:打開(kāi)UART通信示例程序
UART的數據發(fā)送/接收過(guò)程很簡(jiǎn)單,以數據接收為例,程序代碼如下:
if(0u != UART_SpiUartGetRxBufferSize())
{
rxData = UART_SpiUartReadRxData();
}
return(rxData);
在主循環(huán)程序中輪詢(xún)數據接收寄存器RxBuffer的狀態(tài),如果數據接收完成則讀取該寄存器中的值作為接收到的數據即可。
數字通信相關(guān)文章:數字通信原理
通信相關(guān)文章:通信原理
評論