新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 深入了解PSoC?4A :基于SCB的串行通信設(shè)計

深入了解PSoC?4A :基于SCB的串行通信設(shè)計

—— Cypress高級應(yīng)用工程師 王銳
作者: 時間:2014-10-16 來源:電子產(chǎn)品世界 收藏

  摘要:本文首先簡要介紹了®4A的片內(nèi)外設(shè)子系統(tǒng)架構(gòu)及模塊的功能。然后概括了當(dāng)前最常用的三種協(xié)議,UART,I2C和SPI。并詳細論述了如何在®4A片內(nèi)的模塊平臺上,配置并實現(xiàn)這三種。

本文引用地址:http://m.butianyuan.cn/article/264012.htm

  關(guān)鍵字®4,,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可編程片上系統(tǒng)PSoC®(Programmable System on Chip)家族中的最新成員,采用ARM Cortex®-M0作為處理核心,因此也是PSoC®家族中性價比最高的成員。PSoC®4完全繼承了PSoC®芯片家族本身的高度可編程的靈活性,并融合了Cortex® M0高性價比的處理器核架構(gòu),使得PSoC®4 系列產(chǎn)品成為一個具有高度可擴展性的處理器平臺,在性價比、功耗等方面優(yōu)勢顯著。在針對電機控制等需要實時調(diào)試的嵌入式應(yīng)用中,顯得尤為重要,PSoC®4將常用的多種串行通信接口(UART,I2C和 SPI)集成到一個SCB(Serial Communication Block)外設(shè)模塊上,且每個片內(nèi)都含有兩個SCB外設(shè)。因此用戶可以非常方便的在SCB外設(shè)上設(shè)計出自己的串行通信系統(tǒng)。

  PSoC®4A產(chǎn)品系列目前推出的是CY8C4100和CY8C4200兩個入門級產(chǎn)品系列。本文即以CY8C4200為例,介紹如何利用PSoC®4A片內(nèi)的SCB外設(shè)模塊進行UART,I2C和 SPI串行通信設(shè)計。

  2. PSoC®4A架構(gòu)及SCB外設(shè)模塊簡介

  PSoC® 4A 是基于ARM Cortex®-M0 CPU(處理器)的可編程嵌入式系統(tǒng)控制器家族,為嵌入式應(yīng)用提供了強大的可編程平臺。它集合了可編程模擬資源、可編程內(nèi)部互聯(lián)、用戶可編程數(shù)字邏輯、通用的固定功能外設(shè)計以及高性能的ARM Cortex-M0 CPU子系統(tǒng)。

  圖 1是PSoC®4的系統(tǒng)框圖。限于篇幅,本文將主要概括與串行通信相關(guān)的片內(nèi)資源特性,詳細內(nèi)容您可以參考Cypress網(wǎng)站上的PSoC®4的數(shù)據(jù)手冊。

  ■ 高達48MHz,43 DMIPS 的32位Cortex-M0 CPU,支持單周期乘法

  ■ 多達 32 KB Flash 及 4KB SRAM內(nèi)存

  ■ 兩個可工作為SPI/UART/I2C 串行通信接口的串行通信模塊(SCB)

  ■ 四個可編程數(shù)字邏輯模塊(UDB)

  ■ CapSense® 及 LCD 驅(qū)動

  ■ SWD 編程及調(diào)試單元

  ■ 全面支持PSoC Creator IDE 工具

  圖 1: PSoC®4芯片系統(tǒng)框圖

  PSoC®4在開發(fā)環(huán)境方面與PSoC®家族的上一代產(chǎn)品保持一致,仍然為PSoC® Creator,延續(xù)了將片內(nèi)資源抽象為模塊化Component的開發(fā)方法,控制系統(tǒng)架構(gòu)清晰具體,簡單快捷。用戶可以更多關(guān)注產(chǎn)品的功能開發(fā),而較少的注意芯片的硬件結(jié)構(gòu)細節(jié)。PSoC® Creator的詳細信息可以在Cypress網(wǎng)站上獲得。

  SCB串行通信模塊支持三種通信協(xié)議:UART,I2C 和SPI。由圖1可以看出PSoC®4提供了兩個SCB模塊,每個SCB模塊在同一時刻只能用于實現(xiàn)一種串行通信協(xié)議。如果在設(shè)計中需要同時實現(xiàn)三個及以上串行通信協(xié)議,用戶可以借助UDB來設(shè)計。

  在PSoC® Creator 3.0中將SCB模塊放入schematic編輯器中,雙擊打開配置界面可以看出,SCB共有5個配置選項。

  ■ “Unconfigured SCB”: 保留SCB為未配置狀態(tài),需在運行時實時配置。

  ■ “I2C”: 標(biāo)準I2C模式。

  ■ “EZI2C”: EZI2C模式。

  ■ “SPI”: SPI模式

  ■ “UART”: UART模式

  本文將主要論述最常用的UART,I2C和SPI三種通信協(xié)議在SCB模塊上的實現(xiàn)方法。

  圖 2: SCB模塊及配置界面

  3. 基于SCB模塊的UART串行通信實現(xiàn)

  ① UART串行通信簡介

  通用異步收發(fā)協(xié)議(UART)定義了一種全雙工的串行異步接口。其拓撲通常是點到點的結(jié)構(gòu),主要有TX(發(fā)送)和RX(接收)兩個信號。由于是異步方式,沒有同步時鐘信號,需要雙方約定一個相同的波特率,且每發(fā)送一個字節(jié)后進行一次數(shù)據(jù)同步,因此UART的數(shù)據(jù)傳輸速率相對較低(常用為115200bps, 最高可達1Mbps)。UART沒有固定的通信協(xié)議,因此用戶可以自由定義。所以UART特別適合于諸如電機控制等需要實施監(jiān)控系統(tǒng)參數(shù)的應(yīng)用場合,用于在上位機和下位機之間雙向傳遞數(shù)據(jù)。圖3概括了一個UART通信的示例。關(guān)于UART通信協(xié)議的詳細定義,您可以參考相關(guān)的理論文獻。

  圖 3:UART通信的示例

  UART 協(xié)議中一個典型的數(shù)據(jù)幀由開始位,數(shù)據(jù)位,奇偶校驗位和停止位組成。開始位的邏輯值為0,它標(biāo)志一個數(shù)據(jù)幀的開始;數(shù)據(jù)位是需要傳輸?shù)男畔?奇偶校驗位是可選的,它的值取決于所有數(shù)據(jù)位邏輯值求和結(jié)果的奇偶性;停止位的邏輯值為1,它的長度可配置。當(dāng)UART 總線處于空閑態(tài)時,其邏輯值為1,如同停止位。

  ② 基于SCB的UART通信實現(xiàn)

  在圖2所示的配置框中,將SCB配置為UART模式,點開出現(xiàn)的”UART Basic”菜單,配置基本的UART通信參數(shù),如圖4所示;”UART Advanced”菜單下的TX Buffer 和RX Buffer參數(shù)保持默認的8個即可。

  圖 4:UART通信參數(shù)配置

  UART支持全雙工通信,因此數(shù)據(jù)發(fā)送和接收可以同時被處理。數(shù)據(jù)的發(fā)送和接收都可以用中斷與輪詢兩種方式來完成。中斷方式是在每次數(shù)據(jù)發(fā)送/接收完成后產(chǎn)生一個中斷,在中斷服務(wù)程序中進行下一次數(shù)據(jù)發(fā)送/接收的設(shè)置。輪詢方式是在主循環(huán)中不斷查詢當(dāng)前數(shù)據(jù)接收/發(fā)送任務(wù)是否完成,然后決定何時開始下一次接收/發(fā)送任務(wù)。在類似于電機控制的實時任務(wù)處理中,中斷通常用來處理實時性要求嚴格的任務(wù),對于用于數(shù)據(jù)監(jiān)控和調(diào)試目的的UART通信,通常用輪詢的方式來實現(xiàn)。

  PSoC Creator 3.0 開發(fā)工具本身帶有UART全雙工數(shù)據(jù)處理的Example Project;點擊菜單File->Example Project,選擇PSoC 4 Architecture,然后選擇”SCB_UartTxRxComm”即可打開UART通信例程,如圖5所示。

  圖 5:打開UART通信示例程序

  UART的數(shù)據(jù)發(fā)送/接收過程很簡單,以數(shù)據(jù)接收為例,程序代碼如下:

  if(0u != UART_SpiUartGetRxBufferSize())

  {

  rxData = UART_SpiUartReadRxData();

  }

  return(rxData);

  在主循環(huán)程序中輪詢數(shù)據(jù)接收寄存器RxBuffer的狀態(tài),如果數(shù)據(jù)接收完成則讀取該寄存器中的值作為接收到的數(shù)據(jù)即可。

數(shù)字通信相關(guān)文章:數(shù)字通信原理


通信相關(guān)文章:通信原理



上一頁 1 2 下一頁

關(guān)鍵詞: PSoC SCB 串行通信

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉