關於指紋硬體ID腳gpio相容原理推導

2021-08-03 06:40:12 字數 1918 閱讀 2177

1、基礎認識

乙個gpio腳配合軟體可以實現高,低,高阻三種狀態的區分,那麼最多可以實現三種指紋硬體的相容.

軟體邏輯:

1》先給pin乙個高電平,然後讀出該pin的電平到val1;

2》再給pin乙個低電平,然後讀出該pin的電平到val2;

若:val1 == 1 && val2 == 1 ==》pin外接高電平;

val1== 0 && val2 == 0 ==》pin外接低電平;

val1 == 1 && val2 == 0 ==》pin腳高阻態,或者懸空態;

**實現:

fp_pin = of_get_named_gpio(np, label, 0);

if (fp_pin <= 0)

// high

gpio_direction_input(fp_pin);

gpio_direction_output(fp_pin, 1);

val1 = gpio_get_value(fp_pin);

// low

gpio_direction_input(fp_pin);

gpio_direction_output(fp_pin, 0);

val2 = gpio_get_value(fp_pin);

klog("%s: (%d, %d, %d)\n", __func__, fp_pin, val1, val2);

if (val1 == 1 && val2 == 0)

else if (val1 == 0 && val2 == 0)

else if (val1 == 1 && val2 == 1)

else

2、原理推導如上等效電路圖分析:

vi 表示pin腳外接指紋模組的電壓,我們最終需要知道的結果就是這個電壓是高還是低;

vcc表示微控制器輸出高電平時候的等效電路;

v0表示微控制器讀取的電壓值等效電路

r1表示指紋模組接到gpio pin腳的限流電阻,這個值通常很小,大概是0-10歐;

r2表示微控制器輸出高電平時候的內阻,這個值通常也比較小以輸出功率6ma算,大概是(1.8v/6)*10^3=300歐,可以看出r2 遠大於r1

r3是微控制器對地阻抗,通常是幾k到幾十k歐,可以看出遠大於r1,r2

從以上推導:

v0 = vi/r1 + vcc/r2 - 1/r3 - 1/r2 - 1/r1

r1 << r2

r3 >> r2

場景1:

若vi接高電平:

那麼vi =1.8v,微控制器給高電平,那麼vcc = 1.8v,那麼:v0 ~= 1.8*(1/r1+1/r2) - 1/r1 -1/r2

由於r1 << r2,那麼v0的值主要是由r1決定,所以v0的值主要由vi決定,當r1==0時候,v0==vi

同理可證只要r1取值合適,不管vi接高電平還是低電平,v0的值主要由vi決定,可以判斷vi外接高電平.

場景2:

若vi接地呢?

那麼就跟下圖這個分析是一樣了,等價於上圖的r1跟r3併聯了(相當於下圖的r2),當r1<

場景3:

若vi接的模組懸空呢?

vi == 0

那麼v0 ~= vcc/r2 ==》,r2本身就是微控制器的輸出阻抗,如此當然是微控制器給高就是高,微控制器給低那v0就是低了。這個時候就可以判斷vi是懸空,也就是所謂高阻了。

基於硬體指紋的軟體加密和註冊技術

在軟體加密保護技術中,一種常用的保護方法就是基於硬體指紋進行許可授權,本文將詳細介紹硬體指紋的具體獲取技術,並提供一段演示源 程式。硬體指紋加密,指的是使用者免費得到軟體並安裝後,軟體從使用者的機器上取得該機器的一些硬體資訊 如硬碟序列號 bois序列號等等 然後把這些資訊和使用者授權進行繫結,產生...

基於硬體指紋的軟體加密和註冊技術

在軟體加密保護技術中,一種常用的保護方法就是基於硬體指紋進行許可授權,本文將詳細介紹硬體指紋的具體獲取技術,並提供一段演示源 程式。硬體指紋加密,指的是使用者免費得到軟體並安裝後,軟體從使用者的機器上取得該機器的一些硬體資訊 如硬碟序列號 bois序列號等等 然後把這些資訊和使用者授權進行繫結,產生...

delphi VMP加殼 自檢保護和硬體ID獲取

function pchwidmd5 string vmp硬體號,返回md5 varbuf array 0 127 of ansichar md5 tidhashmessagedigest5 begin vmprotectbegin hwid md5 tidhashmessagedigest5.cr...