新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于uClinux的嵌入式多功能信息交互終端

基于uClinux的嵌入式多功能信息交互終端

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

鍵盤的實現(xiàn)

鍵盤的實現(xiàn)有兩種方案—采用I/ O (輸入/ 輸出)口或SPI(serial peripheral interface) 口。使用I/ O 口傳輸速度較快,但占用引腳較多,實現(xiàn)16 個按鍵的矩陣式鍵盤需要9 個引腳(4 個輸入、4 個輸出和1 個中斷請求) ; 用SPI 接口傳輸速度較慢,但只需要IN、OU T、CL K、CS0 、CLR 五個引腳。在主頻為66MHz的MCF5272 (Motorola 摩托羅拉) 之上,采用SPI 口基本滿足鍵盤傳輸速度的要求。

MIIT 鍵盤硬件電路通過兩片74LS164 級聯(lián)實現(xiàn)16 個按鍵。其中,164 的輸入引腳A 要與B 相連,再接QSPI 的引腳。另外,鍵盤電路工作時必須將164的CLR 引腳設(shè)置為低電平(低電平有效) 。

實現(xiàn)MIIT 鍵盤的SPI 口工作在主模式下。SPI口數(shù)據(jù)發(fā)送操作是通過向command RAM(命令) 中寫數(shù)據(jù)觸發(fā)的,經(jīng)過8 位時鐘周期完成1 個字節(jié)的發(fā)送。鍵盤掃描碼作為輸入數(shù)據(jù)保留在transmit RAM (傳輸) 中,數(shù)據(jù)發(fā)送完畢后QIR(interrupt register) 自動置位,產(chǎn)生中斷。鍵盤掃描程序檢測到該中斷后,讀取Receive RAM(接收) 中的數(shù)據(jù),而該數(shù)據(jù)就是t ransmit RAM 中的鍵盤掃描碼通過鍵盤電路處理后得到的鍵盤檢測值,軟件系統(tǒng)對該檢測值進行處理后得到鍵盤相應(yīng)按鍵值。

uCLinux 的串口數(shù)據(jù)采集

uCLinux 的和停止位的設(shè)置) 、串口write 和read (讀寫) 、串口close (關(guān)閉) 等內(nèi)容。數(shù)據(jù)采集程序?qū)崿F(xiàn)上與windows操作系統(tǒng)下的串口通訊不一樣,其中有三點值得特別注意:

1) MIIT 只是通過串口傳輸數(shù)據(jù),不需通過串口模擬通信,所以MIIT 串口采用了Raw Mode (原始模式) 方式。設(shè)置方式如下:

options. c-lflag   = ~ ( ICANON | ECHO | ECHOE | ISIG) ( Input) ;

options. c-oflag   = ~OPOST(Output) ;

2) 在設(shè)置串口時,發(fā)送方和接收方的波特率、效驗位和停止位要相同,否則雙方將不能通訊;

3) 為了防止所采集的數(shù)據(jù)出現(xiàn)亂碼,需要把串口控制字符集control characters 中的VTIME 和VMIN設(shè)置為0 和1 。0 表示打開串口后隨時接收數(shù)據(jù);1 被當做逾時設(shè)定值為一字元。

特定應(yīng)用程序的實現(xiàn)

應(yīng)用程序主要包括系統(tǒng)設(shè)置、基礎(chǔ)數(shù)據(jù)、采集數(shù)據(jù)、網(wǎng)絡(luò)通訊和打印等。應(yīng)用程序采用單任務(wù)的控制方式,軟件系統(tǒng)接到按鍵事件后執(zhí)行相關(guān)操作,如網(wǎng)絡(luò)通訊、打印等。例如,MIIT 在接到自動數(shù)據(jù)采集的按鍵命令后,執(zhí)行采集任務(wù),然后將采集的數(shù)據(jù)交與數(shù)據(jù)庫處理,完成后等待新的按鍵事件。

結(jié) 論

采用性能可靠 操作系統(tǒng)作為MIIT 的操作系統(tǒng),無疑確保了程序的可靠性、簡化了軟件實現(xiàn)的復(fù)雜程度。在MIIT 系統(tǒng)上關(guān)鍵技術(shù)的實現(xiàn),解決了MIIT 中的鍵盤輸入、Linux 串口數(shù)據(jù)采集、特定應(yīng)用程序等問題,為MIIT能夠在家電、工業(yè)控制等領(lǐng)域得到應(yīng)用和發(fā)展奠定了一定的理論和實踐基礎(chǔ)。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關(guān)推薦

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

關(guān)閉