摘要:本文首要扼要介绍了PSoC®4A的片内外设子体系架构及SCB模块的功用。然后归纳了当时最常用的三种串行通讯协议,UART,I2C和SPI。并具体论说了如安在PSoC®4A片内的SCB模块渠道上,装备并完结这三种串行通讯。
关键字: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®宗族中性价比最高的成员。PSoC®4彻底承继了PSoC®芯片宗族自身的高度可编程的灵活性,并交融了Cortex® M0高性价比的处理器核架构,使得PSoC®4 系列产品成为一个具有高度可扩展性的处理器渠道,在性价比、功耗等方面优势明显。在针对电机操控等需求实时调试的嵌入式使用中,串行通讯显得尤为重要,PSoC®4将常用的多种串行通讯接口(UART,I2C和 SPI)集成到一个SCB(Serial Communication Block)外设模块上,且每个片内都含有两个SCB外设。因而用户能够十分便利的在SCB外设上规划出自己的串行通讯体系。
PSoC®4A产品系列现在推出的是CY8C4100和CY8C4200两个入门级产品系列。本文即以CY8C4200为例,介绍怎么使用PSoC®4A片内的SCB外设模块进行UART,I2C和 SPI串行通讯规划。
2. PSoC®4A架构及SCB外设模块简介
PSoC® 4A 是根据ARM Cortex®-M0 CPU(处理器)的可编程嵌入式体系操控器宗族,为嵌入式使用供给了强壮的可编程渠道。它调集了可编程模仿资源、可编程内部互联、用户可编程数字逻辑、通用的固定功用外规划以及高性能的ARM Cortex-M0 CPU子体系。
图 1是PSoC®4的体系框图。限于篇幅,本文将首要归纳与串行通讯相关的片内资源特性,具体内容您能够参阅Cypress网站上的PSoC®4的数据手册。
■ 高达48MHz,43 DMIPS 的32位Cortex-M0 CPU,支撑单周期乘法
■ 多达 32 KB Flash 及 4KB SRAM内存
■ 两个可工作为SPI/UART/I2C 串行通讯接口的串行通讯模块(SCB)
■ 四个可编程数字逻辑模块(UDB)
■ CapSense® 及 LCD 驱动
■ SWD 编程及调试单元
■ 全面支撑PSoC Creator IDE 东西
图 1: PSoC®4芯片体系框图
PSoC®4在开发环境方面与PSoC®宗族的上一代产品坚持一致,依然为PSoC® Creator,连续了将片内资源笼统为模块化Component的开发办法,操控体系架构明晰具体,简略方便。用户能够更多重视产品的功用开发,而较少的留意芯片的硬件结构细节。PSoC® Creator的具体信息能够在Cypress网站上取得。
SCB串行通讯模块支撑三种通讯协议:UART,I2C 和SPI。由图1能够看出PSoC®4供给了两个SCB模块,每个SCB模块在同一时间只能用于完结一种串行通讯协议。假如在规划中需求一起完结三个及以上串行通讯协议,用户能够凭借UDB来规划。
在PSoC® Creator 3.0中将SCB模块放入schematic编辑器中,双击翻开装备界面能够看出,SCB共有5个装备选项。
■ “Unconfigured SCB”: 保存SCB为未装备状况,需在运行时实时装备。
■ “I2C”: 规范I2C形式。
■ “EZI2C”: EZI2C形式。
■ “SPI”: SPI形式
■ “UART”: UART形式
本文将首要论说最常用的UART,I2C和SPI三种通讯协议在SCB模块上的完结办法。
图 2: SCB模块及装备界面
3. 根据SCB模块的UART串行通讯完结
① UART串行通讯简介
通用异步收发协议(UART)界说了一种全双工的串行异步接口。其拓扑一般是点到点的结构,首要有TX(发送)和RX(接纳)两个信号。由所以异步方法,没有同步时钟信号,需求两边约好一个相同的波特率,且每发送一个字节后进行一次数据同步,因而UART的数据传输速率相对较低(常用为115200bps, 最高可达1Mbps)。UART没有固定的通讯协议,因而用户能够自在界说。所以UART特别适合于比如电机操控等需求施行监控体系参数的使用场合,用于在上位机和下位机之间双向传递数据。图3归纳了一个UART通讯的示例。关于UART通讯协议的具体界说,您能够参阅相关的理论文献。
图 3:UART通讯的示例
UART 协议中一个典型的数据帧由开端位,数据位,奇偶校验位和中止位组成。开端位的逻辑值为0,它标志一个数据帧的开端;数据位是需求传输的信息;奇偶校验位是可选的,它的值取决于一切数据位逻辑值求和成果的奇偶性;中止位的逻辑值为1,它的长度可装备。当UART 总线处于闲暇态时,其逻辑值为1,好像中止位。
② 根据SCB的UART通讯完结
在图2所示的装备框中,将SCB装备为UART形式,点开呈现的”UART Basic”菜单,装备根本的UART通讯参数,如图4所示;”UART Advanced”菜单下的TX Buffer 和RX Buffer参数坚持默许的8个即可。
图 4:UART通讯参数装备
UART支撑全双工通讯,因而数据发送和接纳能够一起被处理。数据的发送和接纳都能够用中止与轮询两种方法来完结。中止方法是在每次数据发送/接纳完结后发生一个中止,在中止服务程序中进行下一次数据发送/接纳的设置。轮询方法是在主循环中不断查询当时数据接纳/发送使命是否完结,然后决议何时开端下一次接纳/发送使命。在类似于电机操控的实时使命处理中,中止一般用来处理实时性要求严厉的使命,关于用于数据监控和调试意图的UART通讯,一般用轮询的方法来完结。
PSoC Creator 3.0 开发东西自身带有UART全双工数据处理的Example Project;点击菜单File->Example Project,挑选PSoC 4 Architecture,然后挑选”SCB_UartTxRxComm”即可翻开UART通讯例程,如图5所示。
图 5:翻开UART通讯示例程序
UART的数据发送/接纳进程很简略,以数据接纳为例,程序代码如下:
if(0u != UART_SpiUartGetRxBufferSize())
{
rxData = UART_SpiUartReadRxData();
}
return(rxData);
在主循环程序中轮询数据接纳寄存器RxBuffer的状况,假如数据接纳完结则读取该寄存器中的值作为接纳到的数据即可。