0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用樹(shù)莓派控制GPIO教程

CHANBAEK ? 來(lái)源:頭條號(hào)科G棧 ? 作者:頭條號(hào)科G棧 ? 2023-03-24 11:26 ? 次閱讀

平臺(tái):樹(shù)莓派 bcm2835 Raspberry Pi 3 Model B Rev 1.2

poYBAGQdGFOAGmsHAAKR98JiafE578.jpg

pYYBAGQdGFSAU6GmAABPVqbulAs111.jpg

應(yīng)用層控制gpio目前知道有兩種方式——通過(guò)gpio設(shè)備文件和內(nèi)存映射。

第一種,通過(guò)gpio設(shè)備文件

設(shè)備文件位于/sys/class/gpio目錄下

poYBAGQdGFSAYPvLAABdJwERqlQ385.jpg

通過(guò)向export中寫(xiě)gpio號(hào)可以?huà)燧d對(duì)應(yīng)的gpio,gpio號(hào)是bcm的號(hào),不是wiringPi的。

pYYBAGQdGFaAb9PuAAMjlemaGx4550.jpg

掛載后在gpio的文件夾下會(huì)有配置接口文件,向這些接口文件寫(xiě)命令就能控制gpio了。

poYBAGQdGFeAZVnDAAEhMwe2MlI293.jpg

上面用echo這種方式寫(xiě)成shell腳本就可以用腳本控制gpio了。

如果通過(guò)c語(yǔ)言控制,使用Linux操作文件的API編程即可。

pYYBAGQdGFiAUmgFAAGDPQk8JDI690.jpg

第二種,內(nèi)存映射

將gpio的地址映射到內(nèi)存空間,之后所有對(duì)這片內(nèi)存的操作就是對(duì)gpio的操作。使用mmap函數(shù)實(shí)現(xiàn)映射。物理內(nèi)存的設(shè)備文件是/dev/mem。

poYBAGQdGFiALjLtAABPaPhTz4g236.jpg

bcm2835的外設(shè)地址是0x3f000000,gpio的地址是外設(shè)地址基礎(chǔ)上偏移0x200000。

pYYBAGQdGFmAFh2MAADG8pGmlbc020.jpg

使用open函數(shù)可以打開(kāi)mem設(shè)備文件,之后使用mmap函數(shù)映射,其返回值就是分配的內(nèi)存空間的起始地址。

poYBAGQdGFqADo81AAEurVNG0M0064.jpg

注:必須有管理員權(quán)限才能打開(kāi)mem設(shè)備文件,所以運(yùn)行命令時(shí)必須加上sudo。

gpio有41個(gè)寄存器,每個(gè)寄存器都是32位的。

pYYBAGQdGFuATg0HAAK74GilLkM933.jpg

前六個(gè)用來(lái)設(shè)置gpio的功能,前五個(gè)寄存器每個(gè)設(shè)置10個(gè)gpio,最后一個(gè)設(shè)置4個(gè),三個(gè)位設(shè)置一種功能。

poYBAGQdGFyACJW0AAJmNLQaiYw773.jpg

gpio的設(shè)置寄存器是第8和9,清除寄存器是第11和12。一個(gè)位對(duì)應(yīng)一個(gè)gpio。

pYYBAGQdGF2AXBIgAAEPwGAj7po002.jpg

poYBAGQdGF6AApiuAADQ_8Pyz-w458.jpg

根據(jù)以上寄存器的布局方式,可以使用下面的代碼來(lái)設(shè)置和控制gpio。圖中小寫(xiě)gpio就是映射后返回的地址指針,g是gpio號(hào)。

pYYBAGQdGF-AaE43AAH3kMQp_5s997.jpg

poYBAGQdGGCAFthCAAC_NwUqB48471.jpg

小結(jié): 第一種方式比較適合對(duì)單獨(dú)gpio的控制,比如調(diào)試和測(cè)試,更適用腳本編程;第二種方式適合c代碼編程,更加通用方便。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2903

    瀏覽量

    73539
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61969
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    658

    瀏覽量

    21928
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1175

    瀏覽量

    51515
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1679

    瀏覽量

    105256
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樹(shù)莓實(shí)現(xiàn)web控制GPIO的圖解教程

    樹(shù)莓實(shí)現(xiàn)web控制GPIO的圖解教程:在網(wǎng)上看到一個(gè)老外用樹(shù)莓web
    發(fā)表于 06-30 21:27

    樹(shù)莓控制gpio

    樹(shù)莓在哪里編寫(xiě)程序控制gpio引腳
    發(fā)表于 07-23 09:05

    樹(shù)莓是如何控制GPIO輸入輸出的?

    ://shumeipai.nxez.com/2016/09/28/rpi-gpio-module-inputs.html#]https://blog.csdn.net/qq_41204464
    發(fā)表于 07-08 07:42

    通過(guò)Python RPi.GPIO控制樹(shù)莓引腳

    零、匯總通過(guò)Python RPi.GPIO 控制樹(shù)莓引腳輸出高低電平、脈沖電平驅(qū)動(dòng)器接收接收樹(shù)莓
    發(fā)表于 08-31 07:59

    樹(shù)莓gpio應(yīng)用

    樹(shù)莓現(xiàn)在越來(lái)越火,網(wǎng)上樹(shù)莓的資料也越來(lái)越多。樹(shù)莓源自英國(guó),國(guó)外嵌入式開(kāi)源領(lǐng)域具有良好的分享
    發(fā)表于 11-09 15:10 ?4142次閱讀

    樹(shù)莓gpio接口及編程方法

    樹(shù)莓現(xiàn)在越來(lái)越火,網(wǎng)上樹(shù)莓的資料也越來(lái)越多。樹(shù)莓源自英國(guó),國(guó)外嵌入式開(kāi)源領(lǐng)域具有良好的分享
    發(fā)表于 11-22 11:54 ?6.5w次閱讀

    樹(shù)莓gpio有什么用_怎么用

    樹(shù)莓現(xiàn)在越來(lái)越火,網(wǎng)上樹(shù)莓的資料也越來(lái)越多。樹(shù)莓源自英國(guó),國(guó)外嵌入式開(kāi)源領(lǐng)域具有良好的分享
    發(fā)表于 12-06 09:05 ?1.6w次閱讀

    用網(wǎng)頁(yè)控制樹(shù)莓GPIO引腳

    電子發(fā)燒友網(wǎng)站提供《用網(wǎng)頁(yè)控制樹(shù)莓GPIO引腳.zip》資料免費(fèi)下載
    發(fā)表于 11-16 14:57 ?1次下載
    用網(wǎng)頁(yè)<b class='flag-5'>控制</b><b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>的<b class='flag-5'>GPIO</b>引腳

    樹(shù)莓驅(qū)動(dòng)步進(jìn)電機(jī)

    步進(jìn)電機(jī)一般由電機(jī)、驅(qū)動(dòng)器構(gòu)成,樹(shù)莓連接驅(qū)動(dòng)器控制電機(jī)。 一、接線(xiàn) DIR+/- 用于控制方向,PUL+/- 用于控制轉(zhuǎn)動(dòng); 正極?DIR
    發(fā)表于 03-20 14:40 ?0次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>驅(qū)動(dòng)步進(jìn)電機(jī)

    樹(shù)莓驅(qū)動(dòng)步進(jìn)電機(jī)

    ?閑了無(wú)聊,想用樹(shù)莓驅(qū)動(dòng)步進(jìn)電機(jī)。 測(cè)試了兩天終于OK了 下圖是DM422C接步進(jìn)電機(jī)和樹(shù)莓GPIO 步進(jìn)電機(jī)紅綠 一組, 黃藍(lán) 一組
    發(fā)表于 03-21 14:26 ?0次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>驅(qū)動(dòng)步進(jìn)電機(jī)

    樹(shù)莓控制步進(jìn)電機(jī)

    樹(shù)莓控制步進(jìn)電機(jī) 前言 設(shè)備 連接 源碼 前言 測(cè)試步進(jìn)電機(jī) 設(shè)備 名稱(chēng) 型號(hào) 樹(shù)莓 3B+ 步進(jìn)電機(jī) 28BYJ-48-5V 步進(jìn)電機(jī)
    發(fā)表于 03-21 11:39 ?0次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b><b class='flag-5'>控制</b>步進(jìn)電機(jī)

    樹(shù)莓控制PWM控制電機(jī)轉(zhuǎn)速

    python庫(kù)配置 安裝GPIO庫(kù) sudo apt-get install python3-rpi.gpio 電機(jī)控制程序 import time import RPi.GPIO a
    發(fā)表于 03-31 10:59 ?1次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b><b class='flag-5'>控制</b>PWM<b class='flag-5'>控制</b>電機(jī)轉(zhuǎn)速

    樹(shù)莓控制繼電器

    樹(shù)莓控制繼電器命令行輸入gpio readall查看樹(shù)莓io口屬性可以看到被分為左右兩側(cè),左
    發(fā)表于 04-21 11:50 ?0次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b><b class='flag-5'>控制</b>繼電器

    Linux樹(shù)莓開(kāi)發(fā)之wiringPi庫(kù),樹(shù)莓控制繼電器

    wiringPi庫(kù)是樹(shù)莓的IO控制庫(kù),使用C語(yǔ)言開(kāi)發(fā),提供了非常多的接口供使用,包括GPIO,中斷,多線(xiàn)程,等。 在樹(shù)莓
    發(fā)表于 05-04 11:10 ?1次下載
    Linux<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>開(kāi)發(fā)之wiringPi庫(kù),<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b><b class='flag-5'>控制</b>繼電器

    使用樹(shù)莓GPIO口點(diǎn)亮雙色LED燈

    上一篇文章向大家介紹樹(shù)莓的硬件部分、安裝操作系統(tǒng)及基礎(chǔ)設(shè)置。這篇文章將介紹樹(shù)莓的強(qiáng)大的開(kāi)發(fā)功能口——GPIO,以及利用
    的頭像 發(fā)表于 07-04 11:34 ?1855次閱讀
    使用<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b><b class='flag-5'>GPIO</b>口點(diǎn)亮雙色LED燈