基于LabVIEW应用ARINC 429板卡实现数据通讯——(下篇)

五、基于LabVIEW实现数据通讯

基于LabVIEW实现429板卡的数据通讯是调用API 动态链接库文件来实现的。该文件中有许多的板卡操作函数,在调用板卡中必须按照一定的函数调用流程来操作板卡,否则极易出现板卡操作错误。

1、API函数的调用步骤

API函数的调用步骤如下所示:

(1)打开板卡并初始化

打开板卡 (CHR429_OpenDev 或 CHR429_OpenDevEx)

获取板卡信息﹤可选﹥ (CHR429_GetDevInfo)

复位板卡 (CHR429_ResetDev)

使能板卡时间计数器﹤可选﹥(CHR429_EnableTimeStamp)

(2)通道参数配置

通道模式设置[自环/正常] (CHR429_Channel_Mode)

通道 429 字格式设置﹤可选﹥ (CHR429_Channel_SetWordFormat)

通道 429 方向设置﹤可选﹥ (CHR429_Channel_Dir)(仅 CHR32XXX-D 产品需配置)

(3)数据的接收

通道初始化参数配置(CHR429_Rx_Channel_Init 或 CHR429_Rx_Channel_InitEx)

添加接收时间戳﹤可选﹥(CHR429_Rx_Channel_AddTimeStamp)

SD 标号过滤使能﹤可选﹥(CHR429_Rx_Channel_EnableFilter)

添加 SD 标号过滤﹤可选﹥需先使能SD标号过滤,再添加过滤SD标号(CHR429_Rx_Channel_AddFilter 或 CHR429_Rx_Channel_AddFilterTable)

接收中断使能﹤可选﹥ (CHR429_Rx_Channel_SetInt)

创建接收中断事件﹤可选﹥(CHR429_Rx_Channel_CreateEvent)

接收 FIFO 复位 (CHR429_Rx_Channel_ClearFIFO)

开始接收 (CHR429_Rx_Channel_Start)

查询接收方式:1读取接收 FIFO 数据量(CHR429_Rx_Channel_FIFOCount)

2若接收 FIFO 的数据量≠0,则可读取数据(CHR429_Rx_Channel_Read)

3可重复 1、2 步不停读取数据

中断接收方式:1等待接收中断事件﹤可选﹥(CHR429_Rx_Channel_WaitEvent)

2读取接收 FIFO 的数据量(CHR429_Rx_Channel_FIFOCount)

3若接收 FIFO 的数据量≠ 0,则可读取数据(CHR429_Rx_Channel_Read)

4可重复 1、2、3 步不停读取数据

停止接收 (CHR429_Rx_Channel_Stop)

中断禁止﹤可选﹥ (CHR429_Rx_Channel_SetInt)

关闭接收中断事件﹤可选﹥(CHR429_Rx_Channel_CloseEvent)

4、数据的发送

1通道初始化参数配置(CHR429_Tx_Channel_Init 或 CHR429_Tx_Channel_InitEx)

2配置 429 消息块(CHR429_Tx_Channel_WriteCB)

3开始消息块的发送(CHR429_Tx_Channel_Start)

5、关闭板卡

应用程序退出时,复位板卡(CHR429_ResetDev),并关闭板卡(CHR429_CloseDev)

2、函数中数据结构说明

(1)板卡设备参数信息(CHR429_GetDevParInfo/读取板卡设备参数信息):dwCardType------板卡类型 、dwhwVersion------硬件版本号、 dwdvrVersion------驱动版本号、dwlibVersion------库版本号、dwBoardID------拨码开关 ID(板卡不支持)、dwSN------序列号、dwChMax------通道数。

(2)设置通道模式参数信息(CHR429_Channel_Mode/设置429通道模式):Channel------通道号。若16通道板卡则取值范围0~15、Mode------429 模式 1:正常工作模式 0:自检工作模式。

(3)设置通道子格式参数(CHR429_Channel_SetWordFormat/设置 429 通道字格式):Channel------通道号、WordFormat------字格式 1:格式 2(即总线数据格式) 0:格式 1。如下图13所示即是32位数据的两种不同字格式,在板卡自带的测试软件中解析数据字是按照格式1进行的。图14是25位数据的字格式。

(4)发送通道参数配置(CHR429_Tx_Channel_Init/429 发送通道初始化配置):BaudRate------波特率,取值范围为0~5,0-150Kbps/1-100/2-50/3-48/4-12.5/5-10、DataBit------数据位长度,取值25或32 、Parity------校验方式,取值范围为0~2,0-无校验/1-奇校验/2-偶校验。

图13 32位数据字格式

图14 25位数据字格式

(6)配置429消息块参数(CHR429_Tx_Channel_WriteCB/配置429消息块):Channel------通道号、MsgNum------消息id号,从0开始编号,到255结束。由于消息是顺序执行的,消息块中的消息编号必须连续。 pstTxcb ------429 发送配置结构(TxRunning------消息发送初始状态,TRUE:在调用CHR429_Tx_Channel_Start函数后,本消息会被执行,FALSE:在调用CHR429_Tx_Channel_Start函数后,硬件将会跳过该消息,消息不会被执行,直到用户调用函数CHR429_Tx_Channel_MsgRunning来启动消息的执行、TxPeriod------消息发送周期,分辨率1ms,0:为事件消息;非 0:周期消息、TxInitPeriod------消息发送周期的初始值,分辨率 1ms。可以调整消息开始运行的初始点、TxGap------字间隔,分辨率100us,表示上一个429字消息的结尾到下一个429字消息的开头、TxData------消息中待发送的 429 字数据)。

(7)设置接收中断、触发深度参数(CHR429_Rx_Channel_SetInt /设置接收中断、触发深度):Channel------通道号、Enabled------中断使能控制,0-禁止中断 1-使能中断、Depth------FIFO触发深度值(中断使能时该参数有效) ,取值 0~32767(接收有时间),取值 0~65535(接收无时间)若接收 FIFO里429数据量大于或等于触发深度值时,则有中断发生。

3、LabVIEW进行通讯测试

基于LabVIEW在进行429板卡内部通道之间数据通讯时,应严格按照上面说到的函数调用顺序编写程序,具体的调用过程如下图15所示,该程序是普通的数据通讯范例,没有设置中断等其他功能。当开始发送数据时,周期发送数据字为AABBCC01(可以看到周期消息配置参数中周期设置为500ms);点击事件消息时,会发送一组为AABB555的数据字。

图15 函数调用过程图

编写好程序设置好参数后运行。操作界面如下图16所示,这里还是选择4通道发送、3通道接收来实现数据通讯。点击开始发送,通道4周期发送数据字"AABBCC01",(周期为500ms),点击发送事件消息则发送一次数据字"AABB5555"。

图16 用户操作界面

六、基于示波器观察数据传输

429总线传输的是双极性归零式信号,信号从高电平回归零电平表示逻辑状态"1";信号从低电平回归到零电平表示逻辑状态0。如下图20波形所示,红色框选中的为逻辑"0"、蓝色框选中的为逻辑"1"。

图17 双极性归零式信号示意

以图16接收到的数据进行波形分析,如下图18所示,每一个方框的宽度代表一个周期,即红色圈代表500ms。如此示波器抓取到的周期消息和事件消息在时间上的显示关系是十分清楚的。注意这里示波器显示的波形数据是在总线上传输的数据顺序。读取的时候还需要按照输入的字格式进行转化。

图18 抓取到的数据时间关系

将图18抓取到的波形选择一个进行放大观察,其具体的一个429数据字如下图19所示,示波器上显示的数据为"0000,0001,1001,1110,1110,1010,1010,1010",从左到右显示的是32位数据的最低位和最高位。需要特别说明的是,标号位的发送数据顺序与正常顺序相反,先发送高字节在发送低字节(即7~0、8~31)。

本帧数据下发的是周期消息,数据字为"AABBCC01",转化成二进制数为"1010,1010,1011,1011,1100,1100,0000,0001"。由于数据选择字格式1发送和接收,也就是说波形显示是7-0、8-31(总线数据还是按照标志位、SDI、DATA、SSM、P的顺序)。Lab-001、SDI-01、DATA-1010101010111011110、SSM-02、P-0。

若需要读取解析本帧数据,需将示波器上的第31位放至第8位,29-30位放至第9-10位。这样转换后数据就是格式一"1010,1010,1011,1011,1100,1100,0000,0001"。

图19 格式一发送数据后在总线上的传输顺序

图19 格式二发送数据后在总线上的传输顺序(常用)

设置周期的效果我们在图18的波形中已经观察过了,周期对周期消息设置有效,而事件消息中与周期起到对应作用的则是字间隔,如下图20所示,第一个429数据字的字间隔设置为0,第二个429数据字的字间隔取3,效果如下图所示(在该硬件板卡中,为了使两条消息有所区分,即设置默认时间间隔100us,若设置字间隔为3则两条消息间隔由400us)。

图20 设置字间隔的作用

相关推荐
陌夏微秋1 天前
硬件基础06 滤波器——无源、有源(含Filter Solutions、Filter Pro、MATLAB Fdatool)
matlab·硬件工程·信息与通信·信号处理
老哥不老1 天前
LTE及EPC技术原理(笔记)
笔记·信息与通信
易召1 天前
练习LabVIEW第三十八题
labview
得之坦然,失之淡然。2 天前
FPGA实现USB2.0通信——基于CY7C68013A芯片
fpga开发·开源·信息与通信
北辰远_code2 天前
三层交换技术,eNSP实验讲解
计算机网络·信息与通信·三层交换机·ensp仿真实验
易召3 天前
练习LabVIEW第三十三题
labview
易召3 天前
练习LabVIEW第三十四题
labview
国产化嵌入式平台解决方案3 天前
【网络监控加速设备】国产化一站式高性能数据处理平台(海光CPU+复旦微FPGA)
网络·嵌入式硬件·信息与通信·网络监控·全国产化
易召3 天前
练习LabVIEW第三十二题
labview