}
return 0;
}
2.中断函数(isr.c)
//---*
//文 件 名: isr.c (中断处理函数文件) * //说 明: 中断处理函数 * //本文件包含: * // (1)asm_exception_handler: 中断处理程序 * // (2)irq_handler: 中断处理程序 * // (3)DMA3_isr: DMA中断处理程序 * //硬件连接: 无 * //---*
#include "Uart.h"
#include "isr.h"
extern volatile unsigned char reRingBuff[255];
extern uint8 dmaReFlag;
……
//DMA3通道传送完成中断 __interrupt__
void DMA3_isr(void) {
//重启DMA3通道传送
DmaUartRxNext(0x03,0x08,(uint8*)reRingBuff,15);
//接收数据完成标志置位表示数据已接收到 dmaReFlag = 0x01;
}
4.9 进一步讨论
前几节介绍了带 DMA 控制器的串行通信基本知识和编程方法。本节将讨论串行通信 的一些扩展应用。
4.9.1 流控制与Break信号
串口通信通常只用到 9 芯串口的 2(RXD)、3(TXD)和 5(GND)三个管脚。像这 样的简单三线连接,使用的数据线少,通信中可节约通信成本,增加稳定性,能满足绝大 多数的需求。但严格来说,当两个系统进行串行通信时,在接收方收完数据之前,应当禁 止发送者发送新的数据,这个过程称为流控制(flow control)或握手(shake hands)。流
第 4 章 异步串行通信与直接存储器访问 DMA
110 控制常有软件方式和硬件方式。
软件握手又称为 XON/XOFF 方式,用于接受者和发送者之间无法实现硬件握手的场 合。它用专门的字符来启动(XON)或停止(XOFF)数据流。这些字符定义在美国标准 信息交换码(ASCII 码)中。软件握手用两个字符来实现流控制,一个代表请求对方暂停 传输,另一个代表清除暂停的请求,继续数据传送。通常情况下用 ASCII 码为 0x13 和 0x11 二进制数据来表示,这样,在传输的数据中应禁止包含这两个字符,因为它们会被接收者 理解为流控制字符而不是数据。假如发送的只是 ASCII 字符,就不会存在这样的问题,
但发送二进制数据的话就会遇到这种情况。常见的解决办法是在发送前对二进制数据进行 预处理,将它们用 ASCII 字符来代替。
在 RS-232 标准中,硬件握手使用 RTS(Request To Send,请求发送)和 CTS(Clear To Send,允许发送)两个信号。接收方当准备好接收数据时就将 CTS 信号设置成 0 电平,
没有准备好就设置为 1 电平。同样,发送方当准备好发送数据时,就将 RTS 设置成 0 电 平,没有准备好就将其设置为 1 电平。硬件流控制使用的是专门的信号设置,而软件要完 成同样的任务需要发送和接收额外的数据,所以硬件方式比软件方式速度要快得多。
正常情况下一个数据接收或发送信号保持在高电平,直到一个新数据要传送。如果这 个信号跳变到低电平并持续一个较长的时钟周期(通常是 1/4 到 1/2 秒),便说明这是一个 Break(停顿)状态。它可以用来实现收发双方的同步,有时也用作复位或改变通信设备 的操作模式,例如调制解调器。
4.9.2 延长串口通信的距离
串口使用一根发送信号线和一根接收信号线来构成共地的传输形式,这种共地传输容 易产生共模干扰,抗噪性能弱。本章 4.1 节已经介绍了,RS-232C 最大的传输距离大约是 30m,通信速率一般低于 20Kbps。当然,可以通过降低传输速率的方法来提升传输的距 离,但除此之外,还可通过级联信号维持电路来解决这个问题。例如,MAX232 芯片具有 两组 232 电平与 TTL 电平转换通路,在传输通路中,信号强度降低后,可先把 232 电平 转化成 TTL 电平,再将 TTL 电平回转为 232 电平,这样获得的 232 电平信号又具有了强 信号的特性,可保证传输更远的距离。从理论上来说,这种方法可以多次使用,传输距离 想要多远就有多远,但这增加了系统开发的成本。
4.9.3 串口的扩展
通用 PC 的 COM 接口有 1 或 2 个,当 PC 机上需要挂载多个串口设备时,这显然不 能满足需求,需要串口扩展。同样在以 MCU 为核心的多主机串口通信网络中,也极有可 能出现一对多的串行通信方式。
目前比较通用的串口扩展方案有两种。一是用硬件实现,使用多串口单片机或专用串 口扩展芯片,可选的扩展芯片有 TI 等公司研发的 16C554 系列串口扩展芯片,该系列芯 片通过并行口扩展串行口,功能比较强大、通讯速度高,但控制复杂,同时价格较高,主 要的应用场合是 PC 机串口扩展产品。而多串口单片机也同样存在价格高的缺点。
第 4 章 异步串行通信与直接存储器访问 DMA
111
另一种串口扩展方案就是用软件实现,当然,这种方案需要在硬件连接上使用总线式 连接,软件上用广播式传输控制。具体来说,一个串口挂载多个串口设备,PC 机主动发 送数据或控制信号到各个终端,终端则被动响应并适时回复。在终端回复的过程中,线路 连接上需要考虑各个终端的信息干扰,可以在每个终端到回发线之间的连接一个单向传输 的二极管,以解决此问题。软件模拟串口的缺点:一是采样次数低,分摊到每个终端设备 的传输时间有限;二是不能实现高波特率通讯,一般不要使用高于 9600bps 的波特率,以 保证传输正确性。
构件 终端构件
温度采集器 2 温度采集器 n