砂浆胶粉厂家
免费服务热线

Free service

hotline

010-00000000
砂浆胶粉厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

深入了解PSoC4A基于SCB的串行通信设计

发布时间:2020-07-01 01:44:50 阅读: 来源:砂浆胶粉厂家

摘要:本文首先简要介绍了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的状态,如果数据接收完成则读取该寄存器中的值作为接收到的数据即可。

数字通信相关文章:数字通信原理

通信相关文章:通信原理

菏泽制作西服

订做文化衫

吉林防静电工作服制作

济南定制西装