Antara muka gpio digunakan untuk interaksi data dengan perkakasan; gpio ialah singkatan daripada "Port I/O Tujuan Umum", yang bermaksud port input dan output tujuan umum boleh digunakan secara bebas oleh pengguna kawalan program Anda boleh mengeluarkan tahap tinggi dan rendah melalui antara muka atau membaca sama ada status pin adalah tahap tinggi atau tahap rendah.
Persekitaran pengendalian tutorial ini: sistem Windows 10, komputer DELL G3.
GPIO, singkatan input dan output tujuan umum, mempunyai fungsi yang serupa dengan P0-P3 8051. Pinnya boleh digunakan secara bebas oleh pengguna melalui kawalan program Pin PIN adalah Untuk pertimbangan praktikal, ia boleh digunakan sebagai input tujuan umum (GPI) atau output tujuan umum (GPO) atau input dan output tujuan umum (GPIO), seperti penjana clk, pilih cip. , dsb.
GPIO (Port I/O Tujuan Umum) bermaksud port Input/output tujuan umum, dalam istilah orang awam, ialah pin yang melaluinya tahap tinggi dan rendah boleh dikeluarkan atau melaluinya status pin boleh dibaca - sama ada tahap tinggi atau tahap rendah.
Port GPIO satu ialah konsep yang agak penting Pengguna boleh berinteraksi dengan perkakasan melalui port GPIO untuk interaksi data (seperti UART), mengawal kerja perkakasan (seperti LED, buzzer, dll.), dan membaca kerja. isyarat status perkakasan (seperti isyarat gangguan) dsb. Port GPIO digunakan secara meluas.
Cara menggunakan antara muka gpio
Untuk menggunakan GPIO, sistem mesti terlebih dahulu memperuntukkan GPIO dan menggunakan gpio_request() untuk memperuntukkan GPIO kepada sistem.
Perkara seterusnya yang perlu dilakukan ialah menandakan arah GPIO, biasanya apabila menggunakan GPIO untuk mencipta platform_device (terletak dalam kod persediaan papan):
/* set as input or output, returning 0 or negative errno */ int gpio_direction_input(unsigned gpio); int gpio_direction_output(unsigned gpio, int value);
Kembali 0 tandakan Kejayaan, atau kod ralat errno negatif. Ia harus diperiksa kerana dapatkan/tetapkan panggilan tidak mengembalikan ralat dan mungkin terdapat salah konfigurasi. Anda biasanya harus menggunakan panggilan ini dalam konteks urutan. Walau bagaimanapun, untuk GPIO selamat spinlock, ia juga boleh digunakan sebelum tugasan didayakan, sebagai binaan papan tunggal awal.
Untuk GPIO output, parameter nilai menyediakan nilai output awal. Ini membantu mengelakkan gangguan isyarat semasa permulaan sistem.
Untuk serasi dengan antara muka GPIO awal, menetapkan arah GPIO secara tersirat memerlukan permohonan untuk GPIO. Keserasian ini dialih keluar daripada seni bina gpiolib pilihan.
Jika nombor GPIO tidak sah atau GPIO yang ditentukan tidak boleh beroperasi dalam mod yang sepadan, menetapkan arah akan gagal. Biasanya bukan idea yang baik untuk bergantung pada perisian tegar but untuk menetapkan arah GPIO, kerana fungsi but mungkin tidak disahkan (kecuali untuk boot linux). (Begitu juga, kod persediaan papan tunggal mungkin perlu memultiplekskan pin sebagai GPIO dan mengkonfigurasi tarik naik/turun yang sesuai.)
Akses GPIO Selamat-Spinlock
Kebanyakan GPIO pengawal boleh diakses menggunakan arahan baca dan tulis memori. Mereka tidak memerlukan tidur dan boleh diselesaikan dengan selamat daripada pengendalian gangguan perkakasan dalaman (tidak berulir) dan konteks yang serupa.
Gunakan panggilan berikut untuk mengakses GPIO ini Pada masa ini, gpio_cansleep akan sentiasa mengembalikan ralat
/* GPIO INPUT: return zero or nonzero */ int gpio_get_value(unsigned gpio); /* GPIO OUTPUT */ void gpio_set_value(unsigned gpio, int value);
di mana nilai ialah parameter Boolean, sifar bermakna rendah dan bukan sifar. tinggi. Apabila membaca nilai pin output, nilai yang dikembalikan hendaklah nilai yang dilihat pada pin. . . Ini tidak selalu sepadan dengan nilai output yang ditentukan kerana isyarat longkang terbuka dan isu kelewatan output.
Dapatkan/tetapkan panggilan tidak mengembalikan ralat kerana "GPIO tidak sah" sepatutnya dilaporkan awal oleh gpio_direction_*(). Walau bagaimanapun, tidak semua platform boleh membaca nilai pin output, dan platform yang tidak boleh sentiasa mengembalikan sifar. Pada masa yang sama, adalah satu kesilapan untuk menggunakan antara muka ini dengan GPIO yang boleh menyebabkan tidur.
Pelaksanaan khusus platform digalakkan untuk mengoptimumkan kedua-dua panggilan ini untuk mendapatkan nilai GPIO. Dalam kes di mana nombor GPIO adalah malar, ia biasanya diakses dengan hanya sepasang arahan (membaca atau menulis daftar perkakasan) dan tiada kunci spin diperlukan. Pengoptimuman sedemikian boleh menjadikan aplikasi pemisah bit lebih cekap (dalam masa dan ruang) (berbanding dengan menghabiskan banyak arahan pada panggilan subrutin).
Untuk apa antara muka gpio? , rendah=0). Sesetengah cip juga boleh memilih cara ia memacu nilai ini untuk menyokong "berwayar-OR" atau skema yang serupa (talian isyarat longkang terbuka). Nilai input boleh dibaca (1, 0). Sesetengah cip menyokong bacaan balik pin output, yang berguna dalam situasi wayar-OR (untuk menyokong garis isyarat dua arah). Pengawal GPIO mungkin mempunyai logik failsafe/antibounce input dan kadangkala kawalan perisian. Input
sering digunakan sebagai isyarat sampukan, biasanya dicetuskan tepi, tetapi mungkin juga dicetuskan tahap. Gangguan ini boleh dikonfigurasikan sebagai peristiwa bangun sistem untuk membangunkan sistem daripada mod kuasa rendah.Pada papan tertentu, setiap GPIO digunakan untuk tujuan tertentu, seperti memantau pemasukan/penyingkiran kad MMC/SD, menyemak status perlindungan tulis kad, memandu LED, mengkonfigurasi pemancar, detasmen bit bas bersiri , mencetuskan pengawal perkakasan, mencetuskan suis atau sebagainya.
Untuk lebih banyak pengetahuan berkaitan, sila lawati ruangan Soalan Lazim!
Atas ialah kandungan terperinci Apakah yang dilakukan oleh antara muka gpio?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!