Rumah > masalah biasa > teks badan

Apakah yang dilakukan oleh antara muka gpio?

WBOY
Lepaskan: 2022-08-26 11:34:34
asal
39158 orang telah melayarinya

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.

Apakah yang dilakukan oleh antara muka gpio?

Persekitaran pengendalian tutorial ini: sistem Windows 10, komputer DELL G3.

Untuk apa antara muka gpio?

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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).

Apakah yang dilakukan oleh antara muka gpio?

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.


GPIO selalunya dikonfigurasikan sebagai input/output dwiarah, bergantung pada keperluan papan produk yang berbeza, tetapi terdapat juga situasi satu arah.


Kebanyakan GPIO boleh diakses apabila memperoleh spinlock, tetapi yang diakses melalui bas bersiri biasanya tidak boleh berbuat demikian (sebab hibernasi). Sesetengah sistem mempunyai kedua-dua bentuk GPIO.


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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan