摘要:dei1016是一种可支持arinc429航空总线协议的串行接收、发送器件。文中介绍了dei1016的主要功能和工作原理,给出了dei1016的数据收发过程,同时重点介绍了dei1016与at89c52单片机接口电路的设计方法。
1 dei1016的主要功能
dei1016是device engineering incorporated 生产的一种可支持arinc429航空总线协议的串行接收、发送器件。该器件的主要功能如下:
●串行数据字长为32或25位;
●串行数据速率为100kbps或12.5kbps;
●具有独立的收、发电路;
●两个独立的接收器可直接与arinc429总线接口;
●具有串/并接收数据转换,和并/串发送数据转换功能;
●对接收的数据可进行奇偶状态校验;并可对发送数据奇偶状态进行设置;
●可自动产生字与字之间的间隔;
●采用单一+5v供电。
2 dei1016的工作原理
dei1016的引脚功能及特点以前已有介绍,现仅对该器件的工作原理作以描述。
2.1 dei1016的复位及初始化
电路上电后,首先在mr引脚施加200μs的低电平脉冲以使dei1016复位,然后把控制字写到16位数据总线上,这样,在ldcw引脚施加低电平便可把控制字写入到控制字寄存器,尔后便可接收和发送数据。
2.2 dei1016的数据发送过程
dei1016的数据发送时序如图1所示。发送数据时,首先应查询txr引脚是否为高电平,若是高电平,表明发送存储器已空;此时置entx引脚为低电平可停止发送数据,并把要发送的数据写到16位数据总线上。之后,若要发送数据字1,则置ld1为低,ld2为高;若发送数据字2,则置ld1为高,ld2为低?此时再查询txr引脚是否为低电平,若为低电平,表明发送数据已装载到存储器中,此时再置entx引脚为高电平即可发送数据。dei1016的发送存储器最多可装载8个32位字长的数据,dei1016采用的是先进先出的发送顺序。
2.3 dei1016的数据接收过程
dei1016的数据接收时序如图2所示。当接收器1接收到数据后,系统会置dr1为低电平;而当接收器2接收到数据后,系统将置dr2为低电平。欲使接收器1将接收数据的字1送至16位数据总线上,应先置sel为低电平,再置oe1为低电平且置oe2为高。而后再置sel为高电平,便可将字2送至16位数据总线。要使接收器2的数据送至16位数据总线上,则置oe2为低电平,oe1为高电平即可。
表1 74ls373功能表
输出控制oe 使能g 输入d 输出q
l h h h
l h l l
l l x qo
h x x z
3 at89c52与dei1016的接口设计
at89c52(u1)8位微控器与dei1016的16位数据总线进行数据交换时,必须先利用锁存器来锁存数据。其接口电路框图见图3。发送数据时,u1先把要发送的数据分成低8位和高8位送出,并进入u3、u4锁存,尔后再把16位数据一同送至dei1016?u2?的数据总线上。u3、u4、u5、u6均选用74ls373芯片,它们的内部均由d锁存器和三态输出门组成,其功能表如表1所列。当oe为低电平,且g为高电平时,输出q与输入d之间为直通方式。而当oe为高电平,且g由高电平跳变为低电平后,d端输入数据被d锁存器锁存,之后即使d端(p0口)输入数据再发生变化,也不会影响已锁存的数据。如果oe为低电平,系统将输出原先锁存的数据。为了锁存低8位数据,需要由u1的wr和地址选通信号y7(由译码器u7译出)经或非门u8去控制u3的g端。实际上,只有u1在执行写操作时, wr和y7才同时为低电平,而此时低8位数据才能被u3暂时锁存。高8位数据的锁存与此类似m,u1的p3.4由高变低可打开u3、u4的输出门,从而使u3、u4把数据送至u2的数据总线,当u1的p1.3或p1.4由高变低以把16位数据装入发送存储器后,p3.4会由低变高,此时u3、u4输出为高阻抗状态,但不会影响u2的数据输出状态。其发送程序如下:
mov dptr,#e000h
mov a,#d1l ;取字1的低8位
movx @dptr,a ;把字1的低8位锁入u3
mov dptr,#c000h
mov a,#d1h ;取字1的高8位
movx @dptr,a ;把字1的高8位锁入u4
clr p3.4 ;打开u3、u4的输出
nop
clr p1.3 ;字1数据装入dei1016
nop
setb p3.4 ;关闭u3、u4的输出
setb p1.3
mov dptr,#e000h
mov a,#d2l ;取字2的低8位
movx @dptr,a ;把字2的低8位锁入u3
mov dptr,#c000h
mov a,#d2h ;取字2的高8位
movx @dptr,a ;把字2的高8位锁入u3
clr p3.4 ;打开u3、u4的输出
nop
clr p1.4 ;字2数据装入dei1016
nop
setb p3.4
setb p1.4
用u1接收数据,应将dr1、dr2及txr经与门u13接至u1的int0,在int0口产生中断后,u1便执行读操作,并通过rd和y5控制u14、u15以读入dr1、dr2及txr的状态。u2接收到数据或发送数据完毕后,即向u1的int0口申请中断,并在中断程序中判断dr1、dr2及txr的状态。txr为低表明发送完毕,而dr1或dr2为低则表明已收到数据。此时可置p1.2(sel)为低电平,同时也置p1.0(接dei1016的oe1)或p1.1 ?接dei1016的oe2?为低电平,以使字1的数据出现在数据总线上,而使p1.0、p1.1经u11异或后输出以使u5、u6的g端为高电平,从而把数据锁入u5、u6。由于rd分别与y7、y6相或后的输出是与u5、u6的oe门相连接的,因此,u1 执行读操作时,应先后打开u5、u6的oe门来把数据读入。其接收程序如下:(以接收器1为例)。
clr p1.2 ;置dei1016的sel=0,读字1
clr p1.0 ;置dei1016的/oe1=0
setb p1.1 ;置dei1016的/oe2=1
nop
mov dptr,#e000h
movx a,@dptr ;把字1的低8位读入
mov 10h,a
mov dptr,#c000h
movx a,@dptr ;把字1的高8位读入
mov 11h,a
setb p1.2 ;置dei1016的sel=1,读字2
nop
mov dptr,#e000h
movx a,@dptr ;把字2的低8位读入
mov 12h,a
mov dptr,#c000h
movx a,@dptr ;把字2的高8位读入
mov 13h,a
setb p1.0 ;置dei1016的/oe1=1
setb p1.1 ;置dei1016的/oe2=1
setb p1.2 ;置dei1016的sel=1
图3
dei1016的两路接收可能产生同时接收的现象。即在上述两路共用一个中断源时,如果某一路申请中断已进入接收程序,那么另一路同时接收的数据就可能被屏蔽。解决方法是:进入中断程序后,在接收数据过程中再查询另一路dr的状态。当然,如果每路单独使用一个中断源,效果将会更好。
4 结束语
实际上,上述at89c52与dei1016的接口电路经改进也可以应用到其它16位数据总线接口的电路中,而如果用isp器件替代锁存器及其门电路,还可大大减小电路板的面积。
电网建设的“雄安质量”:世界首例特高压输电线路切改工程
腾讯即将在高新区打造长三角区域首个腾讯数字产业基地
RÖtt KRÖN全球首发,多晶锆宝石音腔真无线耳机重磅问世!
用于化学分析的Si各向异性湿法化学蚀刻
DC-DC Conversion Without Induc
AT89C52单片机与ARINC429航空总线接口设计
CDMA2000 1x EV-DO有什么技术特点?
罗姆推SiC制肖特基势垒二极管 正向电压仅为1.35V
好用的蓝牙耳机该如何选择呢?平价蓝牙耳机这些挺好用!
机器人3D模型可视化建模线上三维虚拟现实的展示
关于一款可以在STM8上运行的实时操作系统Atomthreads
10G波长可调光模块已完成开发和验证测试,即将实现量产
安卓机皇三星S8今晚发布 配置渲染图满天飞只差价格不知道
在2019年光伏市场方面海外争夺战成关键
dc调光模块24V转100mA驱动隔离放大器的特性说明
讯记推出Profibus冗余双总线结构光电转换器
高压功率放大器在压电驱动器的研究中的应用
比特币的闪电网络LN还存在着很多的不足之处
五种常见温度计的工作原理
一个模拟工程师被一个小小电感给摩擦了?