目的
通用异步接收/发送器(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 中从头开始启动项目
- 打开PSoC Creator
- 前往“文件(File)”→“新建(New)”→“项目(Project)”
- 选择“空PSoC 4 (CY8C42*)设计(Empty PSoC 4 (CY8C42*) Design)”
- 将项目命名为“UART_Example”,选择保存项目的位置,然后点击“确定(OK)”。
- 随后,系统将打开项目的电路图视图,你可以点击所需的组件并拖放到你的设计中。如果系统未显示空白的电路图页面,请从“工作空间资源管理器(Workspace Explorer)”窗口中双击“TopDesign.cysch”。
添加 / 配置 UART ( SCB )组件
- 在“组件目录(Component Catalog)”窗口中,打开“通信(Communications)”文件夹中,点击“UART(SCB模式)(UART (SCB mode))”组件并将其拖放到页面上。
- 默认情况下,组件将被命名为“UART_1”。双击组件以打开“配置(Configuration)”窗口。将名称“UART_1”替换为“PC_PSoC_UART”。在“UART基本(UART Basic)”选项卡中,验证以下设置:
- 模式:标准
- 方向:TX + RX
- 波特率(kbps):115200
- 数据位:8位
- 奇偶校验:无
- 停止位:1位
- 过采样12
- 点击“应用(Apply)”以应用任何更改,然后点击“确定(OK)”关闭“配置(Configuration)”窗口。
选择 UART 通信的引脚
- 在“工作空间资源管理器(Workspace Explorer)”窗口中,点击“UART_Example.cydwr”。你可以在这里定义将PSoC器件的哪些引脚用于UART通信。
- 你应该会看到两个名为“PC_PSoC_UART:rx”和“PC_PSoC_UART:tx”的信号,且旁边带有下拉箭头。下拉箭头可用于选择各信号的端口/引脚。为“PC_PSoC_UART:rx”选择P4[0],为“PC_PSoC_UART:tx”选择P4[1]。
- 保存并关闭“UART_Example.cydwr”选项卡。
- 构建项目。随后,系统将自动生成你可以通过应用代码执行的UART组件功能。
UART 示例代码
- 在“工作空间资源管理器(Workspace Explorer)”窗口中,打开项目的“main.c”文件。
- 将以下代码复制并粘贴到“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
}
- 保存并构建项目。
设置硬件连接
- 将Pioneer板上的J3引脚10连接到J8引脚10。
- 将Pioneer板上的J3引脚9连接到J8引脚9。
- PSoC4器件现已连接到PSoC5器件,后者将把UART信号转换为USB信号。
- 使用USB mini-B线缆将板连接到PC的空闲USB端口。
设置 PC 终端软件
- 打开Tera Term窗口。
- 前往“设置(Setup)”→“串行端口(Serial Port)”
- 选择与Pioneer板对应的COM端口。
- 验证以下设置:
- 波特率:115200
- 数据位:8位
- 奇偶校验:无
- 停止位:1位
- 流量控制:无
- 发送延迟应为零
- 点击“确定(OK)”关闭“串行端口(Serial Port)”设置窗口。
编程和测试项目
- 在PSoC Creator中,对器件进行编程(必须将板连接到PC)。
- 在Tera Term窗口中,你应该能看到显示的“Hello World”字样。
- 并且,你应该能够在终端中键入字符,并看到系统按以下方式回显。
问题 / 评论
UART是嵌入式应用中最常见的通信类型之一。希望本示例能够对你有所帮助。你可以试着修改UART组件的不同设置,并参见PSoC Creator为组件生成的可用功能。在此,我要求你来设置某种命令提示符,并根据这些命令执行各种功能。如对本页面或任何其他页面上的信息有任何疑问或反馈,请前往TechForum:TechForum发帖,感谢你访问DigiKey电子百科!