新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于WinCE系統(tǒng)的FIFO數(shù)據(jù)傳輸程序設(shè)計(jì)

        基于WinCE系統(tǒng)的FIFO數(shù)據(jù)傳輸程序設(shè)計(jì)

        作者: 時(shí)間:2012-04-16 來源:網(wǎng)絡(luò) 收藏

        當(dāng)數(shù)據(jù)采集板通過程序控制方式、定時(shí)器觸發(fā)方式或外部觸發(fā)方式采集到模擬信號(hào)后自動(dòng)進(jìn)行A/D轉(zhuǎn)換后將數(shù)據(jù)放入A/D數(shù)據(jù)寄存器并依次寫入 緩沖區(qū)中,Windows CE.net中的用戶應(yīng)用程序通過檢測(cè)標(biāo)志寄存器和MIC-2718狀態(tài)寄存器(地址為BASE+8)的狀態(tài)來確定是否進(jìn)行了有效的A/D轉(zhuǎn)換。下面給出在Windows CE開發(fā)平臺(tái)上對(duì)進(jìn)行讀操作的部分代碼,設(shè)MIC-2718的基地址為300H:
        PUCHAR ioPortBase=MapIoSpace(300H);//將物理地址影射為虛擬地址
        BYTE aistatus=READ_PORT_UCHAR(ioPortBase+8);//讀MIC-2718的狀態(tài)寄存器
        BYTE status=READ_PORT_UCHAR(ioPortBase+25);//讀FIFO的狀態(tài)寄存器
        BYTE ad0,ad1;
        if(aistatus0x10)//若MIC-2718狀態(tài)寄存器的A/D轉(zhuǎn)換位有效
        {
        if(status1!=0)//若FIFO不為空,則讀FIFO
        {
        ad0=READ_PORT_UCHAR(ioPortBase+23);
        ad1=READ_PORT_UCHAR(ioPortBase+24);
        }
        }

        表1 A/D數(shù)據(jù)寄存器與FIFO數(shù)據(jù)寄存器的比較
        3.jpg

        在使用MIC-2718的某一通道分別用常規(guī)方式和FIFO方式對(duì)一個(gè)持續(xù)變化的電壓源做連續(xù)的信號(hào)采集和傳輸時(shí),兩種方式傳輸?shù)臄?shù)據(jù)如表1所示。可以看出,第2和第8組中A/D數(shù)據(jù)寄存器中的數(shù)值是錯(cuò)誤的,可見使用普通A/D傳輸方式存在數(shù)據(jù)丟失問題,因此并不能準(zhǔn)確傳輸數(shù)據(jù),而使用FIFO方式可以保證的完整性。



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 和政县| 青阳县| 赞皇县| 凌云县| 蕲春县| 无锡市| 龙山县| 苍溪县| 静宁县| 南汇区| 旌德县| 周口市| 沐川县| 天峨县| 冕宁县| 湟源县| 云龙县| 旬阳县| 丹棱县| 郓城县| 扬州市| 交城县| 汉源县| 萝北县| 永靖县| 洪雅县| 乌审旗| 罗平县| 钦州市| 锡林郭勒盟| 南宁市| 三门峡市| 天峻县| 济南市| 黄陵县| 肇源县| 永修县| 商丘市| 渝中区| 砚山县| 习水县|