如何使用MAXQ串行驱动器开发应用

描述

本应用笔记介绍如何使用MAXQ2000微控制器评估(EV)板上的MAXQ串行驱动器库开发应用。MAXQ串行驱动器可用于MAXQ的IAR嵌入式工作台和Rowley Associates的MAXQ交叉工作台®,这是使用C语言和汇编语言的MAXQ应用的两个集成开发和调试环境。C语言示例代码演示了MAXQ串行驱动器的使用和限制,以及如何使用MAXQ串行驱动器实现RTS/CTS流控制。

MAXQ串行驱动器概述

MAXQ串行驱动器提供了一组C函数,使用户能够配置MAXQ UART进行串行通信。这些功能列在MAXQ2000评估板的源文件maxq_serial.h中。

MAXQ串行驱动器具有以下特性。

偶数、奇数和无奇偶校验。

独立的发送和接收内部缓冲区。这些缓冲区的大小是在编译时定义的。

非阻塞serial_write和serial_read例程。

一个 serial_isr() 函数,应由用户应用程序作为中断处理程序的一部分调用。它将奇偶校验计算为“每个配置”,并在串行线路上发送/接收数据。

支持应用程序级别的流控制。函数 serial_stopTx() 停止串行数据的传输,serial_restartTx() 重新启动串行传输。

MAXQ2000串行驱动器的源代码可

在此处

获得。通过修改一些配置参数,可以将驱动程序移植到其它MAXQ器件,如下所示。

maxq_config.h 包含特定于编译器的配置参数。修改文件中的以下行以适合您的设备和编译器: 以上两行指定驱动程序将针对IAR和MAXQ2000进行编译。要编译MAXQ的CrossWorks驱动程序,请按如下方式修改行:

// user configurable options here
#define COMPILER_IAR
#define DEVICE_MAXQ2000
// user configurable options here
#define COMPILER_ROWLEY
#define DEVICE_MAXQ2000
        上述两行允许用户包含 IAR 或 CrossWorks 工具链的设备特定文件。maxq_serial.h 包含特定于驱动程序的配置参数:驱动程序缓冲区大小、串行端口号和晶体频率(以 Hz 为单位)。 更改以下代码以更改驱动程序缓冲区大小: 修改以下代码以指定要为其配置驱动程序的串行端口(SERIAL_PORT0用于串行端口 0,SERIAL_PORT1用于串行端口 1): 修改以下代码,更改评估板所用的晶体时钟。MAXQ2000评估板采用16MHz晶体:
#define RX_RNG_SIZE 256
#define TX_RNG_SIZE 256
// specify which serial port you are using
#define SERIAL_PORT0
#define XTAL_CLK 16000000             // 16,000,000Hz

硬件和软件要求

为了运行本应用笔记中提供的应用,需要MAXQ2000评估板、最小容量为5mA的+200V电源、带两个串行端口的PC(一个用于将应用下载到评估板上,另一个用于MAXQ应用与PC应用之间的通信)、直通串行电缆、MAXQ开发工具集(IAR嵌入式工作台或CrossWorks 1.0)。 以及 PC 上的 Java™ 运行时环境(包括 commApi 和 BlackBox 示例)。

硬件设置

MAXQ2000评估板应设置为与RTS/CTS流控制进行串行通信。跳线和 DIP 开关设置如下:

将开关 SW3 1-8 设置为关闭位置。

将开关 SW1 1、2、5 和 6 设置为关闭位置,将 SW3、4、7 和 8 设置为打开位置。

将开关 SW6、3 和 8 设置为打开位置,并将静止设置为关闭位置。

这些开关设置将MAXQ0评估板串行连接器的RTS、TXD0、RXD2000和CTS信号连接到微控制器,使SW4 DPST将微控制器的INT11信号拉至地。参见图1

 

JU1: connect Pins 1 and 2
JU2: connect Pins 1 and 2
JU3: connect Pins 1 and 2
JU4: open
JU5: closed
JU6: closed
JU7: closed
JU8: closed
JU9: closed
JU10: open
JU11: closed (The MAXQ2000 EV kit is powered by a JTAG interface
board which is powered by a +5V power supply.)

连接MAXQ2000评估板和PC串行端口之间的串行电缆。

编译器


图1.MAXQ2000评估板的开关设置可实现与RTS/CTS流控的串行通信。

软件设置

下载演示软件。

安装开发工具集(IAR嵌入式工作台用于MAXQ,CrossWorks用于MAXQ)。

下载并安装 Java 运行时环境和 Java 通信 API。

在 Java 通信 API 发行版中运行 BlackBox 示例。如果这工作正常,那么您应该能够看到您的主机串行端口。

MAXQ串行驱动器入门

要开始使用开发工具,请查看两个应用笔记中的任何一个。关于MAXQ的Rowley CrossWorks,参见应用笔记3698:“Rowley CrossWorks和MAXQ2000评估板入门”,或者关于MAXQ的IAR嵌入式工作台,参见应用笔记3378:“IAR编译器和MAXQ2000评估板入门”。

在您的 PC 上执行 Java BlackBox 示例应用程序,并将其配置为 115200 波特、8 个数据位、1 个停止位和无奇偶校验。通过单击所选串行端口的“Xmt”复选框来启用 RTC/CTS 流控制。黑盒设置如图 2 所示。请注意,RTS 和 CTS 行为绿色,表示硬件流控制已关闭。

从之前下载的演示软件中,打开相应的项目 (.IAR的EWW和CrossWorks的.hzp)。编译应用并下载到MAXQ评估板。有关将应用程序下载到MAXQ的详细说明,请参见上述应用笔记。打开MAXQ评估板的电源,应该可以看到MAXQ的串行输出打印到BlackBox GUI上。在输入窗口中输入一些字符,并观察黑盒输出窗口中打印的字符相同。键控字符从PC传输到MAXQ评估板,然后回显到PC。MAXQ应用程序报告接收的字节数,该字节数应与发送字节数的BlackBox报告相匹配。

向MAXQ评估板发出停止发送字符的信号

单击黑盒 GUI 中的 RTS 文本。该事件向评估板发出停止发送字符的信号。请注意,黑盒中的打印停止。再次点击RTS文本,使MAXQ能够发送字符,并看到测试字符串继续更新。

向 PC 发出停止发送字符的信号

按下MAXQ评估板上的SW4开关。这表示PC(黑盒应用程序)停止发送字符。GUI 上的 CTS 文本应从绿色变为黑色。在黑盒应用程序中输入一些字符,并查看这些字符未回显。再次按下 SW4 开关,CTS 信号将变回绿色。之前键入的字符应回显。

编译器


图2.要在电脑上运行的黑盒示例应用程序。

应用概述

文件 sample_serial.c 包含应用程序的主要例程和中断服务例程 (ISR),用于处理串行中断和外部中断。固件执行以下操作:

serial_init() 初始化串行驱动程序。

serial_setparameters() 为 115200/8/1/N 配置串行驱动程序。您可以根据应用需求配置这些参数。

配置外部中断 10(Int10 连接到 RTS 线路)和 11(SW6 #3 打开)。

启用模块 1(外部中断)和模块 2(UART)的中断。

启用全局中断。

通过 serial_read() 和 serial_write() 循环从/写入串行端口。

中断服务例程处理 RTS/CTS 控制流。(按下SW4按钮可置位或取消置位评估板的RTS线路;PC的RTS线路停止/重新启动串行传输。

局限性和发展问题

MAXQ串行驱动器不支持流量控制(软件/硬件)。应用程序负责实现流控制。本应用笔记中提供的示例应用描述了硬件(RTS/CTS)流控制。

提供的MAXQ串行驱动器针对MAXQ2000和16MHz晶体配置进行编译。改变晶体频率将改变驱动器的波特率计算。

MAXQ串行驱动器内部发送和接收缓冲器的大小在编译时固定为256字节。

结论

IAR和Rowley Associates提供的MAXQ编译器以及Maxim提供的库允许用C语言编写的应用访问MAXQ器件的电源和功能。MAXQ系列将使用户能够部署使用MAXQ UART的应用程序。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分