之前存在使用stm32的經(jīng)驗,在stm32中,要模擬51的雙向IO,是使用的開漏輸出+上拉電阻完成的(M3核心需要外接上拉電阻)。所以在使用ch563時,我也如此去使用開漏輸出。剛剛開始時,大概測試了下,發(fā)現(xiàn)在OUT設置為高電平時,PIN可以讀到數(shù)據(jù)。以為就正常了。所以也就如此去使用了。
后來,在進行進一步測試時,發(fā)現(xiàn)讀到的數(shù)據(jù)極不穩(wěn)定,經(jīng)常出現(xiàn)錯誤的數(shù)值,一開始以后是電路問題,各種檢查完畢,也沒發(fā)現(xiàn)問題。最后把CH563的手冊翻出來再次細讀,看到有一處對于PIN的提醒中寫到,當為輸出態(tài)時,PIN不可使用。之后也問了官方技術,說是他們一般做雙向IO時,是切換方向來使用的。突然想到我那個不穩(wěn)定的情況是否就是因為錯誤地使用了開漏輸出來作為雙向IO使用造成的。馬上把代碼改成了普通輸出及普通輸入切換方向的方式。數(shù)值一切正常了。不再出現(xiàn)不穩(wěn)定的情況發(fā)生。
總結:CH563的開漏輸出與stm32的開漏輸出不同。不可在開漏輸出時,作為輸入來使用。CH563若需要實現(xiàn)雙向IO,還是需要自行切換DIR寄存器來切換輸入、輸出方向。希望官方在手冊上補上IO的簡單原理圖,這樣也便于了解IO的工作原理。以避免出現(xiàn)類似的問題。