軟體判斷從器件是否接入的一種技巧

2021-07-25 20:34:00 字數 511 閱讀 4196

在實際的工程專案中,有時候會碰到兩款差異不大的產品,設計的時候共用一款pcb,軟體也共用一套軟體。這個時候,我們可以開闢乙個io口,用於偵測實際應用的是哪款產品。

如上圖所示,假如我們開發的是a和b兩款產品,在a產品pcb中,r101空貼,那麼io口讀取到的是高電平,那麼可以通過io口的讀取狀態(高)判斷是a產品;在b產品pcb中,r16和r101都要貼,那麼io口讀取的就是低電平,可以以此判斷產品是b產品。

問題:在開發中,主mcu與外部器件進行spi通訊,在判斷是a或者b產品的時候,利用主mcu往從器件暫存器寫入0xff數值,然後在讀取從器件的暫存器是否是0xff數值,以此判斷從器件是否接入。但是在應用中發現,在常溫時候,從器件懸空,spi通訊管腳都處於懸空狀態,讀取到的是0x00,在低溫狀態下,讀取的數值變為0xff,導致了軟體的誤判!所以,應用此種方式判斷從器件是否接入是不安全的,正確的做法應該同文章開頭講述的那樣。

雜湊的一種用法 判斷相等

在輸入資料量比較大,時間要求比較高的情況下,判斷相等可以考慮雜湊的方法,比如,輸入10w 100w,時間要求4000ms 7000ms,用普通方法肯定要tle的,這時就需要hash。首先要構造hash表,這裡根據輸入量來確定hash table的大小,比如poj3349中輸入量最大12w,所以最壞情...

判斷磁碟是否是USB連線的另一種方法

讀取出本地電腦上的usb盤,除了前面說的乙個方法外 還有一種方法,如下 public static listgetusbdisk where assocclass win32 diskdrivetodiskpartition get foreach managementobject partitio...

另一種實用的接入erlang控制台的方法

能對執行中的erl系統進行控制是非常重要的乙個福利,但是假如你的erl系統是後台執行的,根本就沒有shell可以讓你輸入。如果你的節點有name 那麼可以用jcl 或者 remsh 接入.否則的話 你就得用如下方法 請先參考 embedded systems user s guide.這種方式的好處...