Rumah  >  Artikel  >  Tutorial sistem  >  Pemacu PWM Linux

Pemacu PWM Linux

王林
王林ke hadapan
2024-02-05 15:40:031223semak imbas

1. Gambaran keseluruhan

Artikel ini akan memberikan pengenalan yang mendalam kepada rangka kerja pemacu PWM (Pulse-Width Modulation) Linux, termasuk prinsip pelaksanaannya, kaedah penambahan pemacu dan kaedah penyahpepijatan untuk membantu pembangun lebih memahami dan menggunakan fungsi ini.

Sampel versi kernel Linux yang ditunjukkan dalam artikel ini ialah 6.2.8.

2 Teknologi PWM, sebagai teknologi modulasi yang biasa digunakan, boleh mengubah kitaran tugas isyarat berkesan dengan melaraskan lebar masa peringkat tinggi bentuk gelombang berkala, dengan itu mencapai kawalan bekalan kuasa untuk peranti. Kawasan aplikasi PWM biasa termasuk pelarasan kecerahan lampu latar skrin, kawalan kelajuan motor dan kawalan kelajuan kipas. Kernel Linux menyokong rangka kerja pemacu PWM dan menyediakan kod teras rangka kerja pemacu PWM dan kod antara muka sysfs dengan mengabstraksikan jenis data struktur pengawal PWM dan isyarat PWM. Pembangun boleh menggunakan rangka kerja pemacu ini untuk menambah pemacu pengawal PWM mereka sendiri dengan mudah dan menggunakan antara muka sysfs untuk penyahpepijatan berfungsi.

Pembangun pemacu boleh mereka bentuk struktur pengawal PWM khusus mengikut keperluan, menggunakan struktur pwm_chip sebagai pembolehubah ahli Berikut ialah contoh, yang ditakrifkan dalam pemacu ./drivers/pwm/pwm-ab8500.c. Pemacu PWM Linux

(2) struktur pwm_ops struktur, termasuk fungsi operasi pengawal PWM. Dua fungsi asas yang harus dilaksanakan oleh pembangun pemacu ialah fungsi guna dan fungsi get_state digunakan untuk mengkonfigurasi pengawal PWM, termasuk mengkonfigurasi keadaan daya, tempoh, kitaran tugas, kekutuban, dll. bagi isyarat PWM; ; fungsi get_state digunakan Dapatkan status awal isyarat saluran PWM yang ditentukan semasa mendaftarkan pengawal PWM, termasuk status dayakan, tempoh, kitaran tugas, kekutuban, dsb. Pemacu PWM Linux

(3) struct pwm_device structure, mewakili output isyarat PWM oleh pengawal PWM. Pemacu PWM Linux

3.3 Fungsi Teras Rangka Kerja PemanduPemacu PWM Linux

(1) pwmchip_add fungsi. Digunakan untuk mendaftar peranti pengawal PWM baharu. Ditakrifkan dalam ./drivers/pwm/core.c.

(2) pwmchip_remove fungsi. Digunakan untuk mengalih keluar peranti pengawal PWM. Ditakrifkan dalam ./drivers/pwm/core.c. Pemacu PWM Linux

Kaedah pelaksanaan tipikal pemandu 3.4Pemacu PWM Linux

(1) Ringkasan

Fail sumber pemacu PWM terletak di laluan ./drivers/pwm Pembangun pemacu perlu menambah fail sumber yang sepadan Reka bentuk fail sumber boleh merujuk kepada kod pemacu pengeluar lain. Merujuk kepada gaya penamaan kod asal, anda boleh menamakan fail sumber pemacu yang baru ditambah pwm-xx.c, namakan probe dan alih keluar fungsi masing-masing sebagai xx_pwm_probe dan xx_pwm_remove, dan mentakrifkan struktur pengawal PWM sebagai struct xx_pwm_chip. Fail dalam laluan ./drivers/pwm adalah seperti berikut.

(2) gunakan fungsi dan dapatkan_nyatakan definisi fungsiPemacu PWM Linux

Menurut manual pengawal PWM, fungsi apply dan fungsi get_state ditakrifkan oleh pembangun pemacu.

(3)xx_pwm_probe takrifan fungsi

Kaedah pelaksanaan fungsi xx_pwm_probe ialah: mula-mula mulakan pembolehubah struktur pengawal PWM xx_pwm_chip, dan kemudian panggil fungsi teras rangka kerja pemacu PWM pwmchip_add untuk mendaftar peranti pengawal PWM baharu.

(4)xx_pwm_remove definisi fungsi

Fungsi

xx_pwm_remove dilaksanakan dengan memanggil fungsi teras rangka kerja pemacu PWM pwmchip_remove untuk mengalih keluar peranti pengawal PWM.

4. Kaedah penambahan pemandu

4.1 Tambah fail sumber pemacu

Ikuti kaedah yang diterangkan dalam Bahagian 3.4, tulis fail sumber pemacu pwm-xx.c, dan tambahkannya pada laluan ./drivers/pwm.

4.2 menambah sokongan kompilasi

(1) Ubah suai fail Kconfig di bawah laluan ./drivers/pwm dan tambahkan pilihan konfigurasi pemacu PWM yang ditambahkan.

(2) Ubah suai fail Makefile dalam laluan ./drivers/pwm dan tambahkan pilihan kompilasi pwm-xx.c.

(3) Dalam antara muka memuconfig, dayakan pemacu PWM yang ditambahkan. Antara muka konfigurasi adalah seperti berikut.

4.3 Tambah nod pokok peranti pengawal PWMPemacu PWM Linux

Tambahkan nod pokok peranti pengawal PWM dalam pepohon peranti. Sifat asas nod ini termasuk keserasian, daftar dan bilangan #pwm-cells Tambah gangguan, jam, set semula dan sifat lain seperti yang diperlukan.

Untuk kaedah reka bentuk pokok peranti pengawal PWM, sila rujuk ./Documentation/devicetree/bindings/pwm.

Di bawah ialah contoh nod pokok peranti pengawal PWM. Dokumen rujukan adalah seperti berikut:

./Dokumentasi/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml.

Pemacu PWM Linux

5.Kaedah nyahpepijat

Gunakan antara muka sysfs untuk menyahpepijat pemacu PWM secara berfungsi Contoh arahan penyahpepijatan utama adalah seperti berikut.

(1) Lihat nod pengawal PWM

ls /sys/class/pwm/pwmchip0

(2) Hidupkan isyarat saluran PWM yang ditentukan

echo n > /sys/class/pwm/pwmchip0/export

//n ialah nombor saluran

(3) Tetapkan tempoh isyarat PWM

echo pvalue > /sys/class/pwm/pwmchip0/pwm0/tempoh

//pvalue ialah nilai period

(4)Tetapkan kitaran tugas isyarat PWM

echo dvalue > /sys/class/pwm/pwmchip0/pwm0/duty_cycle

// dvalue ialah nilai lebar tahap berkesan

(5) Dayakan isyarat saluran PWM tertentu

gema 1 > /sys/class/pwm/pwmchip0/pwm0/enable

(6) Lumpuhkan isyarat saluran PWM tertentu

gema 0 > /sys/class/pwm/pwmchip0/pwm0/enable

Atas ialah kandungan terperinci Pemacu PWM Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lxlinux.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam