实验4b:异步串行通信协议在实时控制中的应用
下载本文档
1.目标
-
利用PIC32微处理器和计算机终端之间的串行通信来控制和监视步进电机的运行。
-
采用抢占式的前台-后台任务调度方案实现实时控制。
-
模拟提供实时系统本地和远程控制的环境。
2.基本知识
-
的元素ASCII文本编码.
-
如何编程PIC32处理器生成、接收和解码串行文本数据。
3.设备清单
3.1.硬件
-
工作站计算机运行Windows 10或更高,MAC操作系统,或者Linux
此外,我们建议以下工具:
3.2.软件
4.项目外卖
5.基本概念
串行通信是在通信通道或计算机总线上按顺序一次发送一位数据的过程。这与并行通信相反,在并行通信中,多个比特作为一个整体通过多个并行通道发送。并行和串行通信都需要握手来同步数据传输。虽然并行通信通常比串行通信有速度优势,但串行通信的主要优势是减少处理器I/O引脚和连接线或导体的数量。
6.问题陈述
它需要软件代码开发的所有元素和硬件使用在以前的实验室,以及额外的硬件和软件,以支持与PC的串行通信。这个项目将需要你从串口输入文本数据,串口将设置步进电机的方向、模式和速度。这个界面是在实验室2b中提供的所有控制之外的。来自串口的文本将被回显到液晶显示器.这将对你有好处,回顾文档中如何实现以下文本操作函数:printf,sprintf,scanf,比较字符串.
7.背景信息
实验室4介绍了UARTs和异步串行通信的基本概念。Lab 4b通过指定一个能够两个独立控制和监控位置的系统扩展了这一知识,这在许多工业应用中是常见的,如龙门起重机和加工厂。在这个实验室中,Basys MX3上的开关和按钮,就像在2b实验室中使用的那样,将执行本地控制功能。的Basys MX3液晶显示器将用作本地显示。UART串行连接将使用工作站终端仿真程序提供基本的控制和显示功能。
8.实验室4
8.1。需求
-
通信将使用PC终端仿真程序的比特率为38400,偶数奇偶校验,8个数据位,和一个停止位。
-
步进电机现场控制规范
-
方向和模式控制
-
BTNR控制步进电机转子旋转方向。
-
BTND控制步进电机的步进方式。
-
无论步进模式操作,旋转速度必须相同。
-
-
旋转速度由八个滑动开关上设置的十六进制值来设置。SW7为最高有效位,SW0为最低有效位。
-
电机的速度将显示在4位数字7段上领导显示在RPM。
-
Basys MX3 7段显示的4位数字持续更新1 ms(每个数字必须打开1 ms)。这四个数字将在由定时器1 ISR管理的前台操作中以循环方式点亮。
-
步进电机输出在定时器1 ISR中改变,使用由滑动开关设置确定的周期。周期是通过将RPM转换为步骤之间的毫秒延迟来确定的。
-
BTNC按钮以推/推的方式控制LED0的ON/OFF状态。
-
当LED0变为“ON”时,在串口显示器上打印“本地控制步进电机”。然后读取开关和按钮来设置步进电机的操作,并通过UART 4报告远程串行监视器的状态。
-
当LED0变为“OFF”时,打印“遥控步进电机”。然后通过UART 4向远程串行监视器输入信息“输入数据[DIR] [MODE] [###] for [DIR] = CW或CCW, [MODE] = FULL或HALF,[###] =步进电机转速”。
-
-
-
远程控制规范
-
本地控制器对步进电机操作的任何改变都必须用以下格式报告给串行终端:[DIR](模式)(# # #)”[DIR] = " CW "或" CCW ", [MODE] = " FULL "或" HALF ",[###]: =步进电机转速。
-
当系统处于远程控制操作时,步进电机的控制是使用如下格式的命令串来实现的:[DIR] [MODE] [###][RETURN],其中文本字段在2.6.2中有描述。以上。当按下监视器“Enter”键时,[RETURN]字符生成。所有的命令字段必须包含有效的文本或数字范围,否则整个命令将被忽略,并使用文本“Bad entry\n\r”将一条错误消息发送回监视器。
-
8.2.设计阶段
-
为Lab 4b的需求所需要的软件组件开发一个数据流图。
-
原理图:提供实验室4b所用设备的框图。
-
流程图:为Lab 4b提供完整的软件控制流程图。
-
开发一个测试计划,列出第8.1节中所述的每个需求,包括一列PASS/FAIL。
8.3.构建阶段
-
启动一个名为Lab4b的新的微芯片MPLAB X项目。将config_bits.h文件添加到项目中。
-
将Lab4b. c文件添加到Lab4b项目中。主函数的初始化段应该配置所有的I/O引脚,初始化UART 4,初始化Timer 2中断,将LED0设置为on(表示本地工作模式),并设置所有全局变量。
-
将Lab 2b中使用的所有步进电机文件添加到项目中。
-
添加为Lab 4a开发的UART函数。
-
本程序将包含函数main和处理串行文本。将以下任务放入while(1)循环中:
-
检查BTNC是否被按下。
-
检查是否输入了文本命令行。
-
方向和模式字符串变量可以使用字符串比较函数来解码。比较字符串使用这个函数的一个例子是:
x = strcmp (mode_txt,“全”);
-
只有当mode_txt中的数据字符串完全等于FULL时,“x”的值才会等于0。必须包含
才能使用此函数。 -
解码字符串数据后,设置控制方向、模式和步长延迟(从RPM设置计算)的全局变量。
-
8.4。测试
-
运行项目。完成上述开发的测试计划。
9.问题
1.为什么UART getstrU4函数是一个后台进程是合适的?
2.使用串行通信连接到处理器有什么好处?
3.使用串行通信连接到处理器的缺点是什么?
10.参考文献
-
“在异步模式下使用USART”,http://ww1.microchip.com/downloads/en/DeviceDoc/usart.pdf
-
PICmicro®USART的异步通信,http://ww1.microchip.com/downloads/en/AppNotes/00774a.pdf
附录A:巴斯MX3原理图
图a . 1。PIC32MX370到FT232RQR IC原理图。
图a。液晶显示器以及控制步进电机速度的Basys MX3开关。
图a .。腻子截图生成液晶显示器显示。
图各。19200波特和ODD奇偶校验的PuTTY界面截图。
附录B:在MPLAB X中分配堆
如果在编译你的项目时你看到一个错误,如“ld.exe错误:heap is required, but has not been specified”,这是因为你需要通过设置“Run”→“Set project Configuration”→“Customize…”来指定堆大小。转到“XC32 -ld”类别(在“XC32(全局选项)”下)→“堆大小(字节)”到“0”,配置窗口应该如图B.1所示。点击“应用”按钮,然后点击“确定”按钮。看到http://microchip.wikidot.com/mplabx:creating-a-heap.
图责任。分配的堆大小。