有些朋友可能會覺得開關(guān)檢測對于每個嵌入式工程師來說都是一個入門級別的問題,那么切換檢測有什么意義呢? 首先,如果由于種種原因,您選擇的MCU沒有足夠的IO口來一次性處理這么多的開關(guān)信號,您應該怎么辦? 其次,如何區(qū)分開關(guān)的“動作”和“狀態(tài)”? 壓力和彈跳的作用是短暫的,但這種狀態(tài)在相當長的一段時間內(nèi)保持不變。
如何區(qū)分和處理開關(guān)檢測呢? 第三,是關(guān)于我們熟悉的過濾問題,不應該說只有硬件濾波就能達到這樣的效果。 假設(shè)您的開關(guān)信號性質(zhì)的性質(zhì)不同,需要的濾波時間也不同,那么如何統(tǒng)一處理它們呢?嵌入式工程師不是在山川中工作,而是在道場的螺絲殼中工作。 在日常工作中,工程師逐漸積累了豐富的實戰(zhàn)經(jīng)驗。 例如,硬件不足可以與軟件拼湊在一起,內(nèi)存可以犧牲實時性,以換取時空。
在嵌入式開關(guān)檢測設(shè)計中,MCU端口是一路開關(guān)信號使用比計算機端口更多的端口的“并行處理方式”。 當然,端口不足的解決方案是“并行轉(zhuǎn)串行”,以串行方式檢測開關(guān)信號。
為了具體實現(xiàn),需要一個“多路開關(guān)檢測接口芯片”,該芯片檢測多開關(guān)體積的輸入信號,并通過SPI將檢測到的開關(guān)狀態(tài)發(fā)送給MCU。 這種方法可以顯著節(jié)省MCUIO端口資源,如檢測16路開關(guān),并行方式只需要16個單片機的MCUIO端口,串行方式只需要一個SPI端口。