新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PCI9052在多功能CAN適配卡中的應用研究

        PCI9052在多功能CAN適配卡中的應用研究

        作者: 時間:2009-03-25 來源:網絡 收藏

        NTSTATUS PCIDriverDevice::DeviceControl(KIrp I)
        {
        NTSTATUS status;
        switch (I.IoctlCode())
        {
        ………………………………………
        case IOCTL_HIL100_READ_IO_DATA:
        status = IOCTL_HIL100_READ_IO_DATA _Handler(I);
        case IOCTL_HIL100_WRITE_IO_DATA:
        status = IOCTL_HIL100_WRITE_IO_DATA _Handler(I);
        case IOCTL_HIL100_WRITE_DA_DATA:
        status = IOCTL_HIL100_WRITE_DA_DATA _Handler(I);
        case IOCTL_HIL100_READ_AD_DATA:
        status = IOCTL_HIL100_READ_AD_DATA _Handler(I);
        default:
        status = STATUS_INVALID_PARAMETER;
        break;
        }
        ………………………….
        }
        在該函數進行驅動中相應的數據處理與傳遞,包括從內存中讀上層程序發送下來的數據或將AD、等外設傳遞上來的數據送到上層程序。
        API函數主要提供了PCI卡的開關,A/D、D/A、I/O的讀寫函數,的設置、讀寫,中斷事件消息函數等。API函數與以上控制代碼相關聯,傳遞數據和控制參數。如下程序所示:
        bool WriteDataToIO(unsigned char data) //寫數據到IO口
        {
        ……
        ULONG BytesReturned;
        if (!DeviceIoControl(hHIL100, IOCTL_HIL100_WRITE_IO_DATA, data, 1,
        NULL, 0, BytesReturned, NULL))
        ……
        }
        bool ReadDataFromIO(unsigned char *data) //從IO口讀數據
        {
        ……
        ULONG BytesReturned;
        if (!DeviceIoControl(hHIL100, IOCTL_HIL100_READ_IO_DATA, data, 1,
        data, 1, BytesReturned, NULL))
        ……
        }
        bool WriteDataToDA(unsigned short control,unsigned short freq[4])//寫數據到AD
        {
        ……
        ULONG BytesReturned;
        unsigned short pData[16];
        pData[0]=control;
        pData[1]=freq[0];
        pData[2]=freq[1];
        pData[3]=freq[2];
        pData[4]=freq[3];
        if (!DeviceIoControl(hHIL100, IOCTL_HIL100_WRITE_DA_DATA, pData, 10,
        NULL, 0, BytesReturned, NULL))
        ……
        }
        bool ReadDataFromAD(unsigned short address[8],unsigned short data[8])
        { //從AD讀數據
        ……
        ULONG BytesReturned;
        if (!DeviceIoControl(hHIL100, IOCTL_HIL100_READ_AD_DATA,address,16,
        data,16, BytesReturned, NULL))
        ……
        }
        bool ReadDataFromDA (unsigned char address,unsigned short *data)//從DA讀數據
        {
        ……
        ULONG BytesReturned;
        if (!DeviceIoControl(hHIL100, IOCTL_HIL100_READ_DA1_DATA,address,1,
        data, 2, BytesReturned, NULL))
        ……
        }
        將這些接口函數生成動態鏈接庫的形式,供上層程序調用。
        3 結束語
        由于PCI總線的高速特性,使其被廣泛應用于高速數據采集系統和數據傳輸通信系統中,有效地解決了實時采集、實時傳輸和實時存儲等問題。而PCI總線控制器專用芯片的出現則縮短了PCI總線硬件設備的開發周期,使得硬件設備的可靠性和穩定性都有了較大的提高。在開發過程中,尤其對于高速采樣及實時嚴格的系統,我們實現了對該系統高效率的操作特性,該有效的解決了高速實時采集、實時傳輸和實時存儲等的驅動問題。同時該PCI卡既實現了CAN總線通信功能,同時也實現了多路通道的數據采集和相應控制。
        3 本文的創新觀點
        1) 本文將API函數與控制代碼建立起關聯
        2) 本文將應用程序集成到對應的API函數里

        本文引用地址:http://www.104case.com/article/173838.htm

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 微山县| 漳平市| 四川省| 永丰县| 册亨县| 丰镇市| 普定县| 永嘉县| 镇原县| 梅州市| 盐津县| 垣曲县| 固始县| 社旗县| 札达县| 贵州省| 易门县| 长顺县| 丰顺县| 福建省| 来安县| 阳原县| 锦屏县| 茌平县| 双牌县| 泰州市| 和静县| 高州市| 蛟河市| 隆子县| 双城市| 山阴县| 清远市| 康保县| 青阳县| 双牌县| 时尚| 秦皇岛市| 泸溪县| 大同市| 舒兰市|