對通用輸入輸出GPIO的深入理解
http://bbs.21ic.com/blog-804662-97083.html
GPIO的各種模式
GPIO管腳可以被配置為多種工作模式,其中有3種比較常用:高阻輸入、推輓輸出、開漏輸出
1. 高阻輸入(Input)
圖1.1 GPIO高阻輸入模式結構示意圖
為減少資訊傳輸線的數目,大多數計算機中的資訊傳輸線採用匯流排形式,即凡要傳輸的同類資訊都在同一組傳輸線,且資訊是分時傳送的。在計算機中一般有三組匯流排,即資料匯流排、地址匯流排和控制匯流排。為防止資訊相互干擾,要求凡掛到總線上的暫存器或儲存器等,它的輸入輸出端不僅能呈現0、1兩個資訊狀態,而且還應能呈現第三個狀態----高阻抗狀態,即此時好像它們的輸出被開關斷開,對匯流排狀態不起作用,此時匯流排可由其他器件佔用。三態緩衝器即可實現上述功能,它除具有輸入輸出端之外,還有一控制端。
如圖1.1所示,為GPIO管腳在高阻輸入模式下的等效結構示意圖。這是一個管腳的情況,其它管腳的結構也是同樣的。輸入模式的結構比較簡單,就是一個帶有施密特觸發輸入(Schmitt-triggered input)的三態緩衝器(U1),並具有很高的輸入等效阻抗。施密特觸發輸入的作用是能將緩慢變化的或者是畸變的輸入脈衝訊號整形成比較理想的矩形脈衝訊號。執行GPIO管腳讀操作時,在讀脈衝(Read Pulse)的作用下會把管腳(Pin)的當前電平狀態讀到內部總線上(Internal Bus)。在不執行讀操作時,外部管腳與內部匯流排之間是隔離的。
2. 推輓輸出(Output)
圖1.2 GPIO推輓輸出模式結構示意圖
推輓輸出原理:在功率放大器電路中大量採用推輓放大器電路,這種電路中用兩隻三極體構成一級放大器電路,兩隻三極體分別放大輸入訊號的正半周和負半周,即用一隻三極體放大訊號的正半周,用另一隻三極體放大訊號的負半周,兩隻三極體輸出的半周訊號在放大器負載上合併後得到一個完整週期的輸出訊號。
推輓放大器電路中,一隻三極體工作在導通、放大狀態時,另一隻三極體處於截止狀態,當輸入訊號變化到另一個半周後,原先導通、放大的三極體進入截止,而原先截止的三極體進入導通、放大狀態,兩隻三極體在不斷地交替導通放大和截止變化,所以稱為推輓放大器(armjishu.com)。
如圖1.2所示,為GPIO管腳在推輓輸出模式下的等效結構示意圖。U1是輸出鎖存器,執行GPIO管腳寫操作時,在寫脈衝(Write Pulse)的作用下,資料被鎖存到Q和/Q。T1和T2構成CMOS反相器,T1導通或T2導通時都表現出較低的阻抗,但T1和T2不會同時導通或同時關閉,最後形成的是推輓輸出。在推輓輸出模式下,GPIO還具有回讀功能,實現回讀功能的是一個簡單的三態門U2。注意:執行回讀功能時,讀到的是管腳的輸出鎖存狀態,而不是外部管腳Pin的狀態。
3. 開漏輸出(OutputOD)
圖1.3 GPIO開漏輸出結構示意圖
如圖1.3所示,為GPIO管腳在開漏輸出模式下的等效結構示意圖。開漏輸出和推輓輸出相比結構基本相同,但只有下拉電晶體T1而沒有上拉電晶體。同樣,T1實際上也是多組可程式設計選擇的電晶體。開漏輸出的實際作用就是一個開關,輸出“1”時斷開、輸出“0”時連線到GND(有一定內阻)。回讀功能:讀到的仍是輸出鎖存器的狀態,而不是外部管腳Pin的狀態。因此開漏輸出模式是不能用來輸入的。
開漏輸出結構沒有內部上拉,因此在實際應用時通常都要外接合適的上拉電阻(通常採用4.7~10kΩ)。開漏輸出能夠方便地實現“線與”邏輯功能,即多個開漏的管腳可以直接並在一起(不需要緩衝隔離)使用,並統一外接一個合適的上拉電阻,就自然形成“邏輯與”關係。開漏輸出的另一種用途是能夠方便地實現不同邏輯電平之間的轉換(如3.3V到5V之間),只需外接一個上拉電阻,而不需要額外的轉換電路。典型的應用例子就是基於開漏電氣連線的I2C匯流排。
4. 鉗位二極體
GPIO內部具有鉗位保護二極體,如圖1.4所示。其作用是防止從外部管腳Pin輸入的電壓過高或者過低。VDD正常供電是3.3V,如果從Pin輸入的訊號(假設任何輸入訊號都有一定的內阻)電壓超過VDD加上二極體D1的導通壓降(假定在0.6V左右),則二極體D1導通,會把多於的電流引到VDD,而真正輸入到內部的訊號電壓不會超過3.9V。同理,如果從Pin輸入的訊號電壓比GND還低,則由於二極體D2的作用,會把實際輸入內部的訊號電壓鉗制在-0.6V左右。
圖1.4 GPIO鉗位二極體示意圖
假設VDD=3.3V,GPIO設定在開漏模式下,外接10kΩ上拉電阻連線到5V電源,在輸出“1”時,我們通過測量發現:GPIO管腳上的電壓並不會達到5V,而是在4V上下,這正是內部鉗位二極體在起作用。雖然輸出電壓達不到滿幅的5V,但對於實際的數字邏輯通常3.5V以上就算是高電平了(armjishu.com)。
圖1.5 解決開漏模式上拉電壓不足的方法
如果確實想進一步提高輸出電壓,一種簡單的做法是先在GPIO管腳上串聯一隻二極體(如1N4148),然後再接上拉電阻。參見圖1.5,框內是晶片內部電路。向管腳寫“1”時,T1關閉,在Pin處得到的電壓是3.3+VD1+VD3=4.5V,電壓提升效果明顯;向管腳寫“0”時,T1導通,在Pin處得到的電壓是VD3=0.6V,仍屬低電平
漏極開路的分析
電力場效電晶體又名電力場效應電晶體分為結型和絕緣柵型,通常主要指絕緣柵型中的MOS型(Metal Oxide Semiconductor FET),簡稱電力MOSFET(Power MOSFET),結型電力場效應電晶體一般稱作靜電感應電晶體(Static Induction Transistor——SIT)。
A:我們先來說說集電極開路輸出的結構。集電極開路輸出的結構如圖1所示,右邊的那個三極體集電極什麼都不接,所以叫做集電極開路(左邊的三極體為反相之用,使輸入為“0”時,輸出也為“0”)。對於圖1,當左端的輸入為“0”時,前面的三極體截止(即集電極C跟發射極E之間相當於斷開),所以5V電源通過1K電阻加到右邊的三極體上,右邊的三極體導通(即相當於一個開關閉合);當左端的輸入為“1”時,前面的三極體導通,而後面的三極體截止(相當於開關斷開)。
我們將圖1簡化成圖2的樣子。圖2中的開關受軟體控制,“1”時斷開,“0”時閉合。很明顯可以看出,當開關閉合時,輸出直接接地,所以輸出電平為0。而當開關斷開時,則輸出端懸空了,即高阻態。這時電平狀態未知,如果後面一個電阻負載(即使很輕的負載)到地,那麼輸出端的電平就被這個負載拉到低電平了,所以這個電路是不能輸出高電平的。
再看圖三。圖三中那個1K的電阻即是上拉電阻。如果開關閉合,則有電流從1K電阻及開關上流過,但由於開關閉和時電阻為0(方便我們的討論,實際情況中開關電阻不為0,另外對於三極體還存在飽和壓降),所以在開關上的電壓為0,即輸出電平為0。如果開關斷開,則由於開關電阻為無窮大(同上,不考慮實際中的漏電流),所以流過的電流為0,因此在1K電阻上的壓降也為0,所以輸出端的電壓就是5V了,這樣就能輸出高電平了。但是這個輸出的內阻是比較大的(即1KΩ),如果接一個電阻為R的負載,通過分壓計算,就可以算得最後的輸出電壓為5*R/(R+1000)伏,即5/(1+1000/R)伏。所以,如果要達到一定的電壓的話,R就不能太小。如果R真的太小,而導致輸出電壓不夠的話,那我們只有通過減小那個1K的上拉電阻來增加驅動能力。但是,上拉電阻又不能取得太小,因為當開關閉合時,將產生電流,由於開關能流過的電流是有限的,因此限制了上拉電阻的取值,另外還需要考慮到,當輸出低電平時,負載可能還會給提供一部分電流從開關流過,因此要綜合這些電流考慮來選擇合適的上拉電阻。
如果我們將一個讀資料用的輸入端接在輸出端,這樣就是一個IO口了(51的IO口就是這樣的結構,其中P0口內部不帶上拉,而其它三個口帶內部上拉),當我們要使用輸入功能時,只要將輸出口設定為1即可,這樣就相當於那個開關斷開,而對於P0口來說,就是高阻態了。
對於漏極開路(OD)輸出,跟集電極開路輸出是十分類似的。將上面的三極體換成場效電晶體即可。這樣集電極就變成了漏極,OC就變成了OD,原理分析是一樣的。
另一種輸出結構是推輓輸出。推輓輸出的結構就是把上面的上拉電阻也換成一個開關,當要輸出高電平時,上面的開關通,下面的開關斷;而要輸出低電平時,則剛好相反。比起OC或者OD來說,這樣的推輓結構高、低電平驅動能力都很強。如果兩個輸出不同電平的輸出口接在一起的話,就會產生很大的電流,有可能將輸出口燒壞。而上面說的OC或OD輸出則不會有這樣的情況,因為上拉電阻提供的電流比較小。如果是推輓輸出的要設定為高阻態時,則兩個開關必須同時斷開(或者在輸出口上使用一個傳輸門),這樣可作為輸入狀態,AVR微控制器的一些IO口就是這種結構。
在平時的電路設計時我們會遇到開漏(open drain)和開集(open collector)的概念,可能大家在念書時就知道其基本的用法,而且在設計中也並未遇到過問題。但是我忽然覺得自己也對這個概念瞭解的並不系統。於是進行了以下總結: 所謂開漏電路的概念裡提到的“漏”就是指MOS FET的漏極,同理,開集電路中的“集”就是指三極體的集電極,開漏電路就是指以MOS FET的漏極為輸出的電路。一般的常規用法是會在漏極外部的電路新增一個上拉電阻。完整的開漏電路應該由開漏器件和開漏的上拉電阻組成。如下圖中所示:
組成開漏形式的電路有以下幾個特點:
1. 利用外部電路的驅動能力,減少IC內部的驅動。當IC內部MOSFET導通時,驅動電流是從外部的VCC流經R pull-up,MOSFET到GND。IC內部僅需很下的柵極驅動電流。如圖1。
2. 可以將多個開漏輸出的Pin,連線到一條線上。形成“與邏輯”關係。如圖1,當PIN_A、PIN_B、PIN_C任意一個變低後,開漏線上的邏輯就為0了。這也是I2C,SMBus等匯流排判斷匯流排佔用狀態的原理。
3. 可以利用改變上拉電源的電壓,改變傳輸電平。如圖2, IC的邏輯電平由電源Vcc1決定,而輸出高電平則由Vcc2決定。這樣我們就可以用低電平邏輯控制輸出高電平邏輯了。
4. 開漏Pin不連線外部的上拉電阻,則只能輸出低電平。
5. 標準的開漏腳一般只有輸出的能力。新增其它的判斷電路,才能具備雙向輸入、輸出的能力。
應用中需注意:
1. 開漏和開集的原理類似,在許多應用中我們利用開集電路代替開漏電路。例如,某輸入Pin要求由開漏電路驅動。則我們常見的驅動方式是利用一個三極體組成開集電路來驅動它,即方便又節省成本。如圖3。
2. 上拉電阻R pull-up的阻值決定了邏輯電平轉換的沿的速度。阻值越大,速度越低功耗越小。反之亦然!
GPIO配置
(1)GPIO_Mode_AIN 模擬輸入
(2)GPIO_Mode_IN_FLOATING 浮空輸入
(3)GPIO_Mode_IPD 下拉輸入
(4)GPIO_Mode_IPU 上拉輸入
這三種輸入電路是用那一種,要根據外圍電路來決定。
所謂高阻,可以簡單理解為輸出端處於浮空狀態(沒有電流流動),其電平隨外部電平高低而定,即閘電路放棄對輸出端電路的控制。而上拉就是將不確定的訊號通過一個電阻嵌位在高電平,電阻同時起限流作用。下拉同理,只不過上拉是對器件注入電流,下拉是輸出電流。至於弱上拉和強上拉,只是上拉電阻的阻值不同,沒有什麼嚴格區分。簡言之,上拉就是在埠沒有輸入的情況下,將埠的電平穩定在高電平。
(5)GPIO_Mode_Out_OD 開漏輸出
(6)GPIO_Mode_Out_PP 推輓輸出
(7)GPIO_Mode_AF_OD 複用開漏輸出
(8)GPIO_Mode_AF_PP 複用推輓輸出
GPIO_Speed_10MHz 最高輸出速率10MHz
GPIO_Speed_2MHz 最高輸出速率2MHz
GPIO_Speed_50MHz 最高輸出速率50MHz
1.1I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這個速度是指I/O口驅動電路的響應速度而不是輸出訊號的速度,輸出訊號的速度與程式有關(晶片內部在I/O口 的輸出部分安排了多個響應速度不同的輸出驅動電路,使用者可以根據自己的需要選擇合適的驅動電路)。通過選擇速度來選擇不同的輸出驅動模組,達到最佳的噪聲 控制和降低功耗的目的。高頻的驅動電路,噪聲也高,當不需要高的輸出頻率時,請選用低頻驅動電路,這樣非常有利於提高系統的EMI效能。當然如果要輸出較高頻率的訊號,但卻選用了較低頻率的驅動模組,很可能會得到失真的輸出訊號。
關鍵是GPIO的引腳速度跟應用匹配(推薦10倍以上?)。比如:
Ÿ 對於串列埠,假如最大波特率只需115.2k,那麼用2M的GPIO的引腳速度就夠了,既省電也噪聲小。
Ÿ 對於I2C介面,假如使用400k波特率,若想把餘量留大些,那麼用2M的GPIO的引腳速度或許不夠,這時可以選用10M的GPIO引腳速度。
Ÿ 對於SPI介面,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不夠了,需要選用50M的GPIO的引腳速度。
1.2 GPIO口設為輸入時,輸出驅動電路與埠是斷開,所以輸出速度配置無意義。
1.3在復位期間和剛復位後,複用功能未開啟,I/O埠被配置成浮空輸入模式。
1.4所有埠都有外部中斷能力。為了使用外部中斷線,埠必須配置成輸入模式。
1.5GPIO口的配置具有上鎖功能,當配置好GPIO口後,可以通過程式鎖住配置組合,直到下次晶片復位才能解鎖。
2、推輓輸出與開漏輸出的區別
推輓輸出:可以輸出高,低電平,連線數字器件;開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內).
推輓結構一般是指兩個三極體分別受兩互補訊號的控制,總是在一個三極體導通的時候另一個截止.
要實現 線與 需要用OC(open collector)閘電路.是兩個引數相同的三極體或MOSFET,以推輓方式存在於電路中,各負責正負半周的波形放大任務,電路工作時,兩隻對稱的功率開關管每次只有一個導通,所以導通損耗小,效率高。輸出既可以向負載灌電流,也可以從負載抽取電流
當埠配置為輸出時:
開漏模式:輸出 0 時,N-MOS 導通,P-MOS 不被啟用,輸出0。
輸出 1 時,N-MOS 高阻, P-MOS 不被啟用,輸出1(需要外部上拉電路);此模式可以把埠作為雙向IO使用。
推輓模式:輸出 0 時,N-MOS 導通,P-MOS 高阻 ,輸出0。
輸出 1 時,N-MOS 高阻,P-MOS 導通,輸出1(不需要外部上拉電路)。
簡單來說開漏是0的時候接GND 1的時候浮空 推輓是0的時候接GND 1的時候接VCC
3、在STM32中選用IO模式
(1) 浮空輸入_IN_FLOATING —浮空輸入,可以做KEY識別,RX1
(2)帶上拉輸入_IPU—IO內部上拉電阻輸入
(3)帶下拉輸入_IPD—IO內部下拉電阻輸入
(4) 模擬輸入_AIN —應用ADC模擬輸入,或者低功耗下省電。
(5)開漏輸出_OUT_OD —IO輸出0接GND,IO輸出1,懸空,需要外接上拉電阻,才能實現輸出高電平。當輸出為1時,IO口的狀態由上拉電阻拉高電平,但由於是開漏輸出模式,這樣IO口也就可以由外部電路改變為低電平或不變 。可以讀IO輸入電平變化,實現C51的IO雙向功能。
(6)推輓輸出_OUT_PP ——IO輸出0-接GND, IO輸出1 -接VCC,讀輸入值是未知的。
(7)複用功能的推輓輸出_AF_PP ——片內外設功能(I2C的SCL,SDA)
(8)複用功能的開漏輸出_AF_OD——片內外設功能(TX1,MOSI,MISO.SCK.SS)
例項總結:
(1)模擬I2C使用開漏輸出_OUT_OD,接上拉電阻,能夠正確輸出0和1;讀值時先
GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然後可以讀IO的值;使用
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
(2)如果是無上拉電阻,IO預設是高電平;需要讀取IO的值,可以使用
帶上拉輸入_IPU和浮空輸入_IN_FLOATING和 開漏輸出_OUT_OD;
4、IO低功耗:
關於模擬輸入&低功耗,根據STM32的低功耗AN(AN2629)及其原始檔,在STOP模式下,為了得到儘量低的功耗,確實把所有的IO(包括非A/D輸入的GPIO)都設定為模擬輸入
相關推薦
對通用輸入輸出GPIO的深入理解
http://bbs.21ic.com/blog-804662-97083.html GPIO的各種模式 GPIO管腳可以被配置為多種工作模式,其中有3種比較常用:高阻輸入、推輓輸出、開漏輸出 1. 高阻輸入(Input) 圖1.1 GPIO高阻輸
STM32庫函式詳解----(通用輸入/輸出GPIO)
初始化和配置相關函式 1.void GPIO_DeInit (GPIO_TypeDef* GPIOx) 函式解釋:gpio的反初始化函式,該函式的作用是把GPIO相關的暫存器配置成上電覆位後的預設狀態,在第一次初始化前或者不在使用某一介面後,可以呼叫該函式。 引數
STM32的8種GPIO輸入輸出模式深入詳解
輸入模式 -輸入浮空(GPIO_Mode_IN_FLOATING) -輸入上拉(GPIO_Mode_IPU) -輸入下拉(GPIO_Mode_IPD) -模擬輸入(GPIO_Mode_AIN)輸出模式 -開漏輸出(GPIO_Mode_Out_OD
ObjectInputStream || ObjectOutputStream 序列化對象輸入輸出流Demo 學習
圖形 new 顯示 獲取 || 數組 所有 make 聲明 A:Api 說明: ObjectOutputStream 寫入的基本數據和對象 *(內存 到 硬盤 對象的 存儲!!) ObjectInputStream 對以前使用 ObjectOutputStream 寫入的基
對標準輸入輸出的補充
對緩衝區有了更深刻的理解! scanf(%*c)可以跳過一個字元 描述 已知w是一個大於10但不大於1000000的無符號整數,若w是n(n≥2)位的整數,則求出w的後n-1位的數。 輸入 第一行為M,表示測試資料組數。 接下來M行,每行包含一個測試資料
安卓專案實戰之強大的網路請求框架okGo使用詳解(一):實現get,post基本網路請求,下載上傳進度監聽以及對Callback自定義的深入理解
1.新增依賴 //必須使用 compile 'com.lzy.net:okgo:3.0.4' //以下三個選擇新增,okrx和okrx2不能同時使用,一般選擇新增最新的rx2支援即可 compile 'com.lzy.net:okrx:1.0.2' compile 'com.lzy
C++中cin/cout和流符號的原理(對過載輸入輸出流比較有用)
cin/cout並不是C++的關鍵字,而是物件。 C++的<iostrem>中,有一個istream類和一個ostream類,而cin就是istream類的物件,cout就是ostream類的物件。 流符號是怎樣實現的呢? C++支援過載運算子,而流符號(<<、&
對委託與事件的深入理解
一、委託的理解 委託是一種型別(與列舉是一樣的):特殊的地方是它指向一個方法 二、委託的使用場景:將一個方法抽象出來作為引數傳遞 class Program { static void Main(string[] args) { //MyDelegate md = (s) => {
對全連線層的深入理解
理解全連線層 連線層實際就是卷積核大小為上層特徵大小的卷積運算,卷積後的結果為一個節點,就對應全連線層的一個點。(理解) 假設最後一個卷積層的輸出為7×7×512,連線此卷積層的全連線層為1×1×4096。如果將這個全連線層轉化為卷積層:1.共有4096組濾波器2.每
深入理解Solidity——輸入輸出引數
輸入引數和輸出引數(Input Parameters and Output Parameters) 與JavaScript一樣,函式可以將多個引數作為輸入,但與Javascript和C不同的是,Solidity的函式可以返回任意數量的引數作為輸出。 輸入
深入理解Spring AOP之二代理對象生成
gets code 網上 none work class als post 產生 深入理解Spring AOP之二代理對象生成 spring代理對象 上一篇博客中講到了Spring的一些基本概念和初步講了實現方
深入理解JVM_內存管理對象訪問與大小02
gms uwa hint map awd bpp ase pbo cdc 1、對象訪問: 在java語言中,對象訪問如何進行的? (1)最簡單的訪問,也會涉及java棧、java堆和方法區這三個最重要的內存區域之間的關聯關系。 Ob
深入理解JVM:HotSpot虛擬機對象探秘
意願 對象分配 初始化 處理 失敗 每一個 面向 this 線程id 對象的創建 java是一門面向對象的語言。在Java程序執行過程中無時無刻有Java對象被創建出來。在語言層面上,創建對象(克隆、反序列化)一般是一個newkeyword而已,而在虛
N!的階乘附帶簡單大整數類的輸入輸出(暫時沒有深入的了解)
ios sta 好的 n! width ear ati str cstring Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! 我的思路:就想著大整數類去了,才發現自己還不能很好的掌握,其實
對事務的深入理解
技術 回滾 平臺 com 一個 許多事 isolation 自己的 管理 1.事務是對一系列動作的組合 2.事務是對一系列動作的組合 3.事務是對一系列動作的組合 4.事務是對一系列動作的組合,要麽全都成功,要麽全都失敗回滾 5.事務是對一系列動作的組合,要麽全都成
鏈接:深入理解javascript構造函數和原型對象
原型對象 函數 href 深入理解java asc 構造 rip spa tar 鏈接:深入理解javascript構造函數和原型對象http://www.jb51.net/article/55539.htm 鏈接:深入理解javascript構造函數和原型對象
深入理解Java類型信息(Class對象)與反射機制
成員變量 字段 機制 () 程序 轉換 默認 數據 統一 深入理解Class對象 RRTI的概念以及Class對象作用 認識Class對象之前,先來了解一個概念,RTTI(Run-Time Type Identification)運行時類型識別,對於這個詞一
對find,xargs,grep和管道的一些深入理解
發送 文件名 rgs rom 輸入 很多 () option 理解 轉自於:http://fatmouse.xyz/2016/05/10/2016-05-10-find-grep-xargs-and-pipe/ 問題 相信大家都知道在目錄中搜索含有固定字符串文件的命令:
輸入輸出再理解
管理輸入與輸出顯示當前時間,顯示格式為hh:mm:ss,並保存到文件time.txt文件中。分析:調用date-hh:mm:ss,tee-復制輸出到指定位置顯示/etc/passwd文件的第15-18行內容顯示/bin中文件包含大寫字母的文件,保存到bin_westos_file.txt文件中,並統計個數顯示
關於輸入阻抗和輸出阻抗的理解
ora 輸入 電源 text 現實 事業 獨立 包括 block 輸入阻抗 輸入阻抗(input impedance)是指一個電路輸入端的等效阻抗。在輸入端上加上一個電壓源U,測量輸入端的電流I,則輸入阻抗Rin就是U/I。你可以把輸入端想象成一個電阻的兩端,這個電阻的