基于Intel8274的机载同步通讯系统设计

发布者:Serendipity22最新更新时间:2006-09-04 来源: 电子设计应用关键字:中断  时钟  异步 手机看文章 扫描二维码
随时随地手机看文章

  异步串行通讯,诸如RS232、RS485等以简单实用而众所周知。同步串行通讯以异步不可比拟的高速度而应用在许多速度要求较高的通讯网络。同步通信无需开始位和停止位,直接由同步时钟对数据采样,数据传输率等同于时钟速率。其显著特点就是两端必须共享同一时钟,发送方必须将时钟和数据同时发送,接收方才能正确采样。同步模式分为字节同步和位同步。国际标准化组织的HDLC(高级数据链路控制)协议是应用最普遍的同步协议,帧结构如表1所示,其中标志字节值为7EH。

Intel8274简介
  Intel8274是实现HDLC同步通信协议的最佳接口芯片,图1是其管脚定义,有以下显著特点:
·有异步、字节同步和位同步工作模式;
·2个独立的、全双工的接收器和发送器;
·和许多CPU接口兼容;
·4个独立的DMA通道;
·波特率可达880K;
·异步模式下,具备通用串口的所有信号;
·在位同步时,自动产生并识别HDLC的开标志和关标志、自动进行零位插入和删除、自动为发送数据产生CRC校验码并自动对接收数据进行CRC校验、和CCITT的X.25兼容。

  Intel8274的零位插入是为了把标志字节 7EH和正式数据中的7EH( 0111.1110B)区分开来。在发送一方,除标志字节之外的所有发送字节,每碰到有五个连续的“1”就自动插入一个“0”,从而保证了两个标志字节之间的其它字节没有7EH。在接收一方,接收到标志字节之后,每碰到字节中有五个连续的“1”后的一个“0”,将这个“0”删除掉,恢复字节原值。发送方和接收方的CRC校验都不包含这个额外插入的“0”和被删除的“0”。硬件实现时很容易用锁相环电路检测出标志字节,方便地判断同步数据帧的开始和结束。

图1 Intel8274管脚定义

图2 智能通讯板结构

系统硬件结构
  Intel8274不仅性能优越,而且和各种CPU接口比较简单。基于该芯片的某机载雷达设计的同步通信系统如图2所示,整个系统采用二级CPU结构,将主CPU从烦琐的通讯管理中解放出来。主CPU和通讯CPU共享双口RAM,在此交换数据。主CPU只需将发送的同步数据帧填入发送缓冲区,由通讯CPU监控同步帧发送。当通讯CPU正确接收到完整的数据帧时直接放入接收缓冲区,然后通过中断通知主CPU取走即可。
硬件细化设计时应该注意:
·时钟
  在图2中,Intel8274的工作时钟由3.6864MHz的时钟直接输入,而2个通道的发送时钟由8254对工作时钟进行分频后给出。这样可以由软件对8254进行设置,灵活配置出各种适当的波特率。特别注意,经过差分驱动的信号应包括发送时钟,而接收时钟应该和接收数据一起由外部提供。

·中断
  同步通信不能使用查询的方法,只能使用中断驱动。必须把Intel8274的中断请求信号/INT(Pin28)和中断应答/INTA(Pin27)各自上拉10KW电阻,而将菊花链的中断输入/IPI(Pin29)接地。/INT未上拉时,Intel8274不能产生有效的低电平,CPU不可能响应中断。/INTA未上拉时Intel8274可能向的数据线输出中断向量,扰乱CPU工作。而/IPI未接地时Intel8274的中断请求有可能被抑制,时有时无,破坏系统的稳定性。

软件设计
  通信软件主要使用TMS320的汇编语言实现,精华在于对Intel8274的中断处理上。软件初始化8274为同步模式时,应选择CCITT的CRC,而不是CRC-16。为准确简洁,我们采用最通用的算法描述语言。

同步数据帧发送算法
  为了开始同步帧的发送,在所有情况下(包括DMA)都应该由CPU向8274写入第一个字符。在HDLC协议中,第一个字符就是接收站点的节点地址,而不是开标志。开、关标志由8274自动插入。
Const // 常量定义
DONE = ... // 表示发送或接收过程已结束
DONE; // 帧发送过程尚未结束,正在运行,
RxDone := NOT_DONE; // 帧接收过程尚未结束
Reset Tx Intterrupt; // 复位发送中断
Reset Tx CRC; // 复位CRC发生器。
Send Addr; // 发送帧地址,引爆帧发送开始。
Reset TxUnder-Run/EOM; // 立即复位下溢中断,保证正确产生CRC
{此后,帧发送的实际过程由中断完成,I8274硬件接口应该在规定的最大时间内应产生“下溢/帧结束”中断,否则发生错误,应复位8274 }
while not TimeOut do
begin
if TxDone = DONE then // 由中断过程设置 TxDone标志
begin
Wait CRC; // 等待CRC发送结束
Check TxResult; // 检查发送结果是否正确。
Exit;
end;
end;
Reset 8274; // 至此,则超时退出,发生错误,复位8274。
end;

Intel8274中断响应算法
  HDLC协议的同步通讯必须由中断驱动,主要是同步通讯的协议和校验由硬件完成,软硬件必须配合得当。中断主要处理4类情况,一是利用“发送缓冲器空”中断来发送帧数据,二是用“外部状态变化”中断来判断帧发送结束,三是用“数据接收”中断来接收数据帧,四是用“接收到特殊条件”中断来判断帧接收的开始和结束。在使用多个接收帧缓冲时,中断处理要注意缓冲区切换正确。
procedure IntrruptTxRxFrame
begin
Read Interrpt Type; // 从8274读中断类型
case Interrpt Type of // 检查中断类型
1:Tx Empty: // “发送缓冲器空”中断
if 数据未发送完 then
Send One byte // 从发送缓冲区读取、并发送1字节
else
Reset Tx Empty Interrupt; // 复位此中断,迫使产生下溢中断;
2:External Status Chang // “外部状态变化”中断
if 是下溢中断 then
TxDone := DONE // 帧发送结束,结果正确
else begin
TxDone := DONE; // 帧发送结束
TxResult := FAIL; // 但结果不正确
end;
3:RxChar // “接收到帧数据字符”
读入并存到接收帧缓冲区;
4:RxSpecial: // "接收到特殊条件" 中断
if End of Frame then // 帧接收结束
RxDone := DONE // 接收过程完成,结果正确
else begin
RxDone := DONE // 接收过程完成
RxResult := FAIL; // 但结果不正确.
Reset Error Interrupt
end;
else // 其余中断忽略掉。
Ignore;
end;
Send EOI; // 发中断结束命令.
end;

结语
  同步通讯技术在不断地发展,席卷全球的Internet网就是采用同步协议X..25连接了不同类型的计算机。同步通讯和异步通讯相对立而存在,相比较而发展。这里只是抛砖引玉,介绍了我们实际工作的一点体会和做法。同步通讯将向更高速率发展,应用在更多的日常电子设备中。

参考文献
1 Intel: 《8274 Multi-Protocol Serial Controller》
2 TI: 《TMS320F240 DSP Controllers Refence Guide》

关键字:中断  时钟  异步 引用地址:基于Intel8274的机载同步通讯系统设计

上一篇:新型以太网控制器ENC28J60及其接口技术
下一篇:基于ARM核嵌入式微处理器的以太网应用

推荐阅读最新更新时间:2024-05-13 18:14

如何实现DS1302实时时钟表显示在1602LCD液晶
在1602LCD液晶里显示实时时间: 首先在DS1302实时时钟芯片里写入一个时间, 然后在这个芯片里读取这个时间,并显示在液晶里。现在终于实现了... #include reg52.h #include intrins.h sbit SCLK=P3^6; sbit SDA=P3^4; sbit RST = P3^5; //unsigned char code Write_Address ={0x80,0x82,0x84}; unsigned char code Read_Address ={0x85,0x83,0x81}; unsigned char Time_Table ; void
[单片机]
关于STM32的中断问题集锦
1、STM32的EXIT的库函数 问:EXTI_GetFlagStatus和EXTI_GetITStatus区别是什么? 答:一个是获取状态也的,一个是获取中断的。你可以看一下函数上面的说明。 2、STM32的外部中断 问:STM32的外部中断响应的最大频率是多少? 答:应该是2-3个机器周期 3、判断中断是否会被响应的依据是什么? 答:1、首先是占先式优先级,其次是副优先级;2、占先式优先级决定是否会有中断嵌套;3、Reset、NMI、HardFault优先级为负(高于普通中断优先级)且不可调整。 4、什么是占先式优先级? 答:占先式优先级(pre-emptionpriority):高占先式优
[单片机]
8951定时器的定时中断模式
定时器的使用与我之前所说的中断使用差不多。首先也是设置初始化定时器。先上代码: #include reg52.h #define uchar unsigned char #define uint unsigned int sbit led=P1^0; sbit s1=P3^0; sbit s2=P3^1; uchar counter=0; uchar temp=0; uchar flag=0; code uchar a ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(uint t) { uint i; while(t--) { f
[单片机]
STM32时钟配置方法详解
一、在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 二、在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法:如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: ①对于
[单片机]
STM32F334系统时钟的配置RCC_Config()
MCU:STM32F334C8T6 Frameware:STM32F3348-Discovery_FW_V1.0.0 RCC时钟配置步骤: 重置RCC为默认值:RCC_DeInit(); 库函数中可以查到这个函数选择HSI为系统时钟(见图) 打开外部高速时钟晶振HSE 等待HSE工作 设置AHB时钟 设置高速APB(2)时钟 设置低速APB(1)时钟 设置PLL 打开PLL 等待PLL工作 设置系统时钟 等待系统时钟设置成功 打开所需时钟 代码: void RCC_Config(void) { // 1. 默认设置,HSI为系统时钟: 8M RCC_DeInit();
[单片机]
STM32F334系统<font color='red'>时钟</font>的配置RCC_Config()
STM8s外部时钟晶振失效时钟安全系统CSS启动演示
使用的最小系统晶振是8m的。 这里说下配置过程: 时钟自动切换,开启切换中断 在中断里面清除中断标志,使能CSS并开启CSS中断 CSS中断发生,清除CSS中断标志,将HSI二分频,即16M/2=8M,与外部晶振相同,这样不会影响串口波特率 窗口输出配置信息: 用手触碰PA1、PA2引脚使外部晶振失效 串口输出CSS中断
[单片机]
STM8s外部<font color='red'>时钟</font>晶振失效<font color='red'>时钟</font>安全系统CSS启动演示
用DS12887制作无电源仍可走时的时钟
乍一看题目读者可能会纳闷,这是什么奇怪的东西,不用电源还可以工作?其实笔者只是在这里卖了个关子,说的是不用外加电源也可以正常走时,并不是说整个电路工作时不需要供电。也就是说不使用时这个时钟不需要供电,在你加上电源之后就可以显示时间,并且仍然是正确的。就好像有些手机关闭之后又取下电板,等你下次开机的时候它又能显示正确的时间。其实这些手机里面都是有后备电池的,就是做时钟那一小块电路有后备电池供着电的。要是后备电池没有了电,取下电板后问题就来了,这也是为什么有些用久了的手机取下电板再装上,时间就不对了的缘故。但是本文说的这个时钟不需要外加后备电池,那它是怎么做到这一点的呢?请听我慢慢道来。 先了解一下"主角"的基本特性吧。DS128
[单片机]
用DS12887制作无电源仍可走时的<font color='red'>时钟</font>
针对高速串行接口设计的高效时钟解决方案
  数字系统的设计师们面临着许多新的挑战,例如使用采用了串行器/解串器(SERDES)技术的高速串行接口来取代传统的并行总线架构。基于SERDES的设计增加了带宽,减少了信号数量,同时带来了诸如减少布线冲突、降低开关噪声、更低的功耗和封装成本等许多好处。而SERDES技术的主要缺点是需要非常精确、超低抖动的元件来提供用于控制高数据速率串行信号所需的参考时钟。即使严格控制元件布局,使用长度短的信号并遵循信号走线限制,这些接口的抖动余地仍然是非常小的。   固定频率振荡器可用于很多通用的SERDES标准;但是,这些解决方案价格昂贵。此外,这种做法缺乏灵活性,并且使调试、测试和生产变得困难。   另一种解决方案是使用可编程时钟器
[嵌入式]
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved