《設備樹 —— 設備樹配置GPIO時,GPIO_ACTIVE_HIGH和GPIO_ACTIVE_LOW的作用》


  正常情況下,我們需要一個gpio口控制燈,我們認為燈打開就是active狀態。對於一個程序員來說,我們可以封裝一個函數,寫1就是打開燈,寫0就是關燈。

  但是對於硬件來說,變化的是gpio口的電平狀態。如果gpio輸出高電平燈亮,那么這就是高有效。如果硬件設計是gpio輸出低電平燈亮,那么就是低有效。對於一個軟件工程師來說,我們的期望是寫1就是亮燈,寫0就是關燈。

  我可不管硬件工程師是怎么設計的。我們可以認為dts是描述具體的硬件。因此對於驅動來說,硬件的這種變化,只需要修改dts即可。軟件不用任何修改。

  大概知道是將硬件邏輯隔離開來的意思。

  gpio_set_value(led_dev.led_no,0);

  gpio_set_value(led_dev.led_no,1);

  gpio_set_value 設置的是邏輯電平,1 有效 0 無效

  如果GPIO_ACTIVE_LOW  那么 1 有效 就是低電平 0 無效 就是高電平 (物理電平)

  如果GPIO_ACTIVE_HIGH  那么 1 有效 就是高電平 0 無效 就是低電平 (物理電平)

  總結一下:

  在設備樹配置GPIO時設置的有效電平指的是實際電路的電平。例如一個LED,拉低點亮。那么在配置設備樹的時候這個GPIO就應該設置為GPIO_ACTIVE_LOW。

  我們在應用層設置GPIO都是希望是高電平點亮,那么這個就可以理解為邏輯電平。那么我們應用程序就只管設置為高電平就行了。

  底層程序會根據我們的邏輯電平去做適配。這樣就實現上層只管認為就是高電平點亮,不用管底層是什么電平點亮。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM