feiante 发表于 2013-10-23 12:02:38

【PSOC4】入门学习笔记3——UART半双工通信

按照组件手册,今天开始学习UART的半双工通信。
试验目的:串口先发送一串数据,然后在while循环中,当串口收到数据后把数据发送出来。
步骤:
1、在原理图中放置一个UART【V2.30】组件。如图1.JPG所示。
2、双击UART组件,按照图2.JPG配置该组件。
      配置模式Mode为半双工(Half Duplex),波特率设置为115200,数据位为8位,奇偶校验位为None,Rx Buffer Size和Tx Buffer Size为4。
3、在UART.cudwr配置管脚,Rx_1为P0.0,Tx_1为P1.5。
4、双击main.c,编写程序如图3.JPG所示。
5、编译下载后,通过USB转串口芯片连接到电脑上,通过串口调试工具测试程序。
      如图4.JPG所示,芯片复位后发送数据“Half Duplex Test”,然后一直等待串口调试助手发送数据,串口调试助手设置为1s发送一次数据,可以看到串口收到数据后将接收到的数据发送出来显示。

程序分析:
首先初始化UART,通过UART_1_LoadTxConfig();将串口配置发送器,这样串口就可以发送数据。然后发送字符串“Half Duplex Text”
接着通过UART_1_LoadRxConfig();将串口配置为接收方式。
如果接收到的数据大于0,就将串口配置为发送模式,同时将接收的数据发送出来。
do
            {
                tmpStat = UART_1_ReadTxStatus();
            }

while(~tmpStat & UART_1_TX_STS_COMPLETE);   

这个语句是等待发送成功,UART_1_TX_STS_COMPLETE在UART_1.h中定义了,
#define UART_1_TX_STS_COMPLETE            (uint8)(0x01u << UART_1_TX_STS_COMPLETE_SHIFT)
也就是说UART_1_TX_STS_COMPLETE的值是1,while是读取状态位的第0位,实际测试看出,成功发送数据,第0位是1,没有成功发送数据,第0位是0.




GY@艳 发表于 2013-10-23 13:19:55

很强大的说,不过咱把图片编辑好看些呗:loveliness:

fj1161 发表于 2013-10-23 13:23:46

顶一个~~~~~~~~~~

feiante 发表于 2013-10-23 14:00:08

本来打算把图片加到相应文字下面,但是没有弄成,就只有在文字上说明图片名称,把图片都加到下面了:$

fengyiyong 发表于 2013-11-20 14:37:18

想问楼主、最后一张图是截自哪个软件的、

feiante 发表于 2013-11-21 08:05:22

fengyiyong 发表于 2013-11-20 14:37 static/image/common/back.gif
想问楼主、最后一张图是截自哪个软件的、

就是串口调试助手

党国特派员 发表于 2016-11-23 10:46:04

不错啊!!!学习了!

feixiang20 发表于 2017-12-17 21:42:34

做个标记,有空学下

eefocus_4128795 发表于 2025-5-6 10:47:05

楼主好,你这发送接收的都是字符,字符串用那种方式接收?我调试的时候字符串一直是错误的
页: [1]
查看完整版本: 【PSOC4】入门学习笔记3——UART半双工通信