• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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.czjhyjcfj.com/article/173838.htm

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 甘泉县| 宿州市| 美姑县| 淳化县| 惠安县| 宕昌县| 吉木乃县| 平安县| 丽江市| 琼结县| 建瓯市| 喀什市| 德兴市| 九龙县| 广宁县| 鞍山市| 株洲市| 克什克腾旗| 融水| 沙田区| 富阳市| 丰宁| 洪泽县| 鹿泉市| 襄城县| 开封市| 宁安市| 积石山| 博白县| 广丰县| 东海县| 天津市| 永济市| 江陵县| 宜君县| 大庆市| 安远县| 光山县| 七台河市| 陵川县| 伽师县|