5.3 PXI数字传输模块软件面板的设计和测试结果
本课题上层应用程序是通过VC++工具进行开发的。之所以选择VC++是因为驱动程序也是在该软件平台上编写与实现的,这样便于应用程序与底层驱动的调用与衔接。应用程序访问设备驱动程序,一般由两种方法,一种是在应用程序中直接编程访问驱动程序,第二种方法是先利用 VC 等语言编写与驱动程序的接口,将函数封装成动态链接库供其它应用程序调用。这两种方法各有利弊,前一种方法比较灵活,应用程序几乎可实现对硬件的全面操作,但这种办法需应用程序开发工具支持与驱动程序的接口,并且开发者要全面了解驱动程序和硬件结构。后一种方法灵活性差,但动态连接库写好后上层应用程序可以用几乎任何一种高级语言写。并且由于应用程序和驱动程序之间隔了一层动态连接库,因此用户可以不用太关心驱动程序的情况和硬件结构。本课题选用直接接口设计。
直接接口与通过动态连接库实现接口,除了在接口上有区别之外,在打开设备,读写设备等方面两者是一样的。下面介绍一下接口和界面的实现步骤[40]。
(1)定义应用程序与设备驱动程序接口所需的唯一标识号GUID。
(2)编写接口函数。
(3)得到与对应GUID相关的信息。
(4)获取接口数据。
(5)获取符号连接名长度。
(6)获取符号连接名。
(7)创建文件,由于任何设备在Windows中都被认为是一个文件,所以从创建完文件开始,对该设备的操作将都使用文件读写函数完成。
(8)应用程序通过写文件函数,向设备驱动程序发送读写请求。
根据上述步骤设计的软面板如图5-5所示。通过软面板可以实现各种模式下的数据读写功能。
最后对设计出来的板卡进行了硬件测试,在应用程序中编写如下简单程序:
void CPDC4000DemoDlg::OnBlockDmaPciToLocalDemo()//DMA模式输出数据
{
unsigned char pData[0x100];//待输出的数组
for (int i = 0; i < 0x100; i ++)
{
pData[i] = i + 0x0;
}
m_iStatus = STATUS_BLOCK_WRITE;
BlockDmaPciToLocal(pData, 0x100);
}
通过逻辑分析仪测量板卡的输出波形,得到输出低8位结果见图5-6。在源程序中写入的数据为pData数组,它的取值是从0开始依次加1,因此从最低位开始往上一位走,依次为2分频。而从输出波形可以看出,输出完全符合写入的数据,数据输出的速率为16 MHz。
图5-5 PXI卡软件面板
图5-6 低8位输出结果
5.4 本章小结
本章详细的介绍了PCI/PXI设备驱动程序特点,以及DDK开发驱动程序的主要技术内容。本课题用DDK成功的开发出了基于PCI9054的设备驱 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |