PSoC UART示例

01_00

目的

通用异步接收/发送器(UART)是嵌入式应用中最常见的通信形式之一。本文旨在提供适用于PSoC器件的简单UART示例。PSoC Creator是Cypress针对PSoC 3、4、5和5LP器件提供的免费开发工具,我将其用于本项目的固件开发,并将PSoC4 Pioneer Kit用作本演示的平台。不过,本项目的代码适用于任何PSoC器件。

项目目标

本项目将实现以下目标。如果用户只想浏览本项目的应用代码,则可根据需要跳过。

  • 在PSoC Creator中从头开始启动项目
  • 向设计中添加/配置设计中的UART(SCB)组件
  • 选择用于UART通信的引脚
  • 提供/说明UART应用代码
  • 设置与PC的UART通信硬件连接
  • 设置PC使用的终端软件

项目要求

PSoC4 Pioneer Kit还包括可作为本项目UART/USB桥接的板载PSoC5器件。借此,我们可以使用PC的USB端口与PSoC4器件的UART端口通信。这不会增加我们的额外负担,因为PSoC5器件的固件在产品发货前已经有预编程。我们需要使用2根跳线通过板上的引脚将PSoC4和PSoC5器件连接起来。本项目使用的工具如下:

  • PSoC Creator - Cypress提供的免费固件开发软件。本项目使用的是版本2.2,服务包1。
  • PSoC4 Pioneer Kit - 适用于PSoC4器件的开发平台。
  • Tera Term - 适用于PC的免费终端模拟器软件。

程序

PSoC Creator 中从头开始启动项目

02_00

  1. 打开PSoC Creator
  2. 前往“文件(File)”→“新建(New)”→“项目(Project)”
  3. 选择“空PSoC 4 (CY8C42*)设计(Empty PSoC 4 (CY8C42*) Design)”
  4. 将项目命名为“UART_Example”,选择保存项目的位置,然后点击“确定(OK)”。
  5. 随后,系统将打开项目的电路图视图,你可以点击所需的组件并拖放到你的设计中。如果系统未显示空白的电路图页面,请从“工作空间资源管理器(Workspace Explorer)”窗口中双击“TopDesign.cysch”。
添加 / 配置 UART SCB )组件

03_00

  1. 在“组件目录(Component Catalog)”窗口中,打开“通信(Communications)”文件夹中,点击“UART(SCB模式)(UART (SCB mode))”组件并将其拖放到页面上。
  2. 默认情况下,组件将被命名为“UART_1”。双击组件以打开“配置(Configuration)”窗口。将名称“UART_1”替换为“PC_PSoC_UART”。在“UART基本(UART Basic)”选项卡中,验证以下设置:
  • 模式:标准
  • 方向:TX + RX
  • 波特率(kbps):115200
  • 数据位:8位
  • 奇偶校验:无
  • 停止位:1位
  • 过采样12
  1. 点击“应用(Apply)”以应用任何更改,然后点击“确定(OK)”关闭“配置(Configuration)”窗口。
选择 UART 通信的引脚
  1. 在“工作空间资源管理器(Workspace Explorer)”窗口中,点击“UART_Example.cydwr”。你可以在这里定义将PSoC器件的哪些引脚用于UART通信。
  2. 你应该会看到两个名为“PC_PSoC_UART:rx”和“PC_PSoC_UART:tx”的信号,且旁边带有下拉箭头。下拉箭头可用于选择各信号的端口/引脚。为“PC_PSoC_UART:rx”选择P4[0],为“PC_PSoC_UART:tx”选择P4[1]。
  3. 保存并关闭“UART_Example.cydwr”选项卡。
  4. 构建项目。随后,系统将自动生成你可以通过应用代码执行的UART组件功能。
UART 示例代码
  1. 在“工作空间资源管理器(Workspace Explorer)”窗口中,打开项目的“main.c”文件。
  2. 将以下代码复制并粘贴到“main.c”文件中:
#include <device.h>
 
void sys_init();
 
void main() {
    uint32 rxData;
    char test_string[] = "Hello World\n\r";
 
    sys_init();
 
    PC_PSoC_UART_UartPutString(test_string); // print test_string
 
    for(;;) // endless loop
    {
        rxData = PC_PSoC_UART_UartGetChar(); // store received characters in temporary variable
 
        if(rxData) { // make sure data is non-zero
            PC_PSoC_UART_UartPutChar(rxData); // echo characters in terminal window
 
            // Handle received characters
        }
    }
}
void sys_init (void) {
    PC_PSoC_UART_Start();
 
    // Add additional initialization code as desired
}
  1. 保存并构建项目。
设置硬件连接
  1. 将Pioneer板上的J3引脚10连接到J8引脚10。
  2. 将Pioneer板上的J3引脚9连接到J8引脚9。
  • PSoC4器件现已连接到PSoC5器件,后者将把UART信号转换为USB信号。
  1. 使用USB mini-B线缆将板连接到PC的空闲USB端口。
设置 PC 终端软件

04_00

  1. 打开Tera Term窗口。
  2. 前往“设置(Setup)”→“串行端口(Serial Port)”
  3. 选择与Pioneer板对应的COM端口。
  4. 验证以下设置:
  • 波特率:115200
  • 数据位:8位
  • 奇偶校验:无
  • 停止位:1位
  • 流量控制:无
  • 发送延迟应为零
  1. 点击“确定(OK)”关闭“串行端口(Serial Port)”设置窗口。
编程和测试项目
  1. 在PSoC Creator中,对器件进行编程(必须将板连接到PC)。
  2. 在Tera Term窗口中,你应该能看到显示的“Hello World”字样。
  3. 并且,你应该能够在终端中键入字符,并看到系统按以下方式回显。
    05_00

问题 / 评论

UART是嵌入式应用中最常见的通信类型之一。希望本示例能够对你有所帮助。你可以试着修改UART组件的不同设置,并参见PSoC Creator为组件生成的可用功能。在此,我要求你来设置某种命令提示符,并根据这些命令执行各种功能。如对本页面或任何其他页面上的信息有任何疑问或反馈,请前往TechForum:TechForum发帖,感谢你访问DigiKey电子百科!