最新日韩精品中文字幕_妇女敕BBB搡BBBBBB搡_亚洲乱码日产精品BD_亚洲中文字幕成人无码_特级特色特黄大片视频图片

世界熱頭條丨Linux之PWM驅(qū)動(dòng)
2023-05-24 08:19:52    面包芯語

1.概述


(資料圖片)

本文主要講述了Linux的PWM驅(qū)動(dòng)框架、實(shí)現(xiàn)方法、驅(qū)動(dòng)添加方法和調(diào)試方法。

示例Linux內(nèi)核版本:6.2.8。

2.原理

PWM是Pulse-Width Modulation的簡稱,中文譯作脈沖寬度調(diào)制。作為一種調(diào)制技術(shù),PWM的原理是通過調(diào)整周期性波形的高電平時(shí)間寬度,從而改變有效信號的占空比,實(shí)現(xiàn)對設(shè)備的供電控制。PWM技術(shù)的常見應(yīng)用領(lǐng)域包括屏幕背光亮度調(diào)節(jié)、電機(jī)轉(zhuǎn)速控制和風(fēng)扇轉(zhuǎn)速控制等。

Linux內(nèi)核支持PWM驅(qū)動(dòng)框架,該驅(qū)動(dòng)框架采用結(jié)構(gòu)體數(shù)據(jù)類型對PWM控制器和PWM信號進(jìn)行了抽象,提供了PWM驅(qū)動(dòng)框架核心代碼和sysfs接口代碼。PWM驅(qū)動(dòng)開發(fā)者可以方便地利用該驅(qū)動(dòng)框架,添加特定PWM控制器的驅(qū)動(dòng)程序,并使用sysfs接口進(jìn)行功能調(diào)試。

3.驅(qū)動(dòng)框架及實(shí)現(xiàn)方法

3.1驅(qū)動(dòng)框架源碼

PWM驅(qū)動(dòng)框架的主要源碼:

./include/linux/pwm.h //PWM驅(qū)動(dòng)框架頭文件

./drivers/pwm/core.c//PWM驅(qū)動(dòng)框架核心代碼

./drivers/pwm/sysfs.c//PWM驅(qū)動(dòng)框架sysfs接口代碼

3.2驅(qū)動(dòng)框架數(shù)據(jù)結(jié)構(gòu)

(1)struct pwm_chip結(jié)構(gòu)體,表示PWM控制器。

驅(qū)動(dòng)開發(fā)者可以根據(jù)需要設(shè)計(jì)專用的PWM控制器結(jié)構(gòu)體,以struct pwm_chip結(jié)構(gòu)體作為一個(gè)成員變量,下面是一個(gè)示例,在./drivers/pwm/pwm-ab8500.c驅(qū)動(dòng)中定義。

(2)struct pwm_ops結(jié)構(gòu)體,包括PWM控制器的操作函數(shù)。其中應(yīng)該由驅(qū)動(dòng)開發(fā)者實(shí)現(xiàn)的2個(gè)基礎(chǔ)函數(shù)為apply函數(shù)和get_state函數(shù);apply函數(shù)用于配置PWM控制器,包括配置PWM信號的使能狀態(tài)、周期、占空比、極性等;get_state函數(shù)用于在注冊PWM控制器時(shí)獲取指定PWM通道信號的初始狀態(tài),包括使能狀態(tài)、周期、占空比、極性等。

(3)struct pwm_device結(jié)構(gòu)體,表示PWM控制器輸出的PWM信號。

3.3驅(qū)動(dòng)框架核心函數(shù)

(1)pwmchip_add函數(shù)。用于注冊一個(gè)新的PWM控制器設(shè)備。在./drivers/pwm/core.c中定義。

(2)pwmchip_remove函數(shù)。用于移除一個(gè)PWM控制器設(shè)備。在./drivers/pwm/core.c中定義。

3.4驅(qū)動(dòng)典型實(shí)現(xiàn)方法

(1)概要

PWM驅(qū)動(dòng)源文件位于./drivers/pwm路徑下,需要驅(qū)動(dòng)開發(fā)者添加相應(yīng)的源文件即可,源文件設(shè)計(jì)可參考其他廠家的驅(qū)動(dòng)代碼。參考原有代碼的命名風(fēng)格,可以將新添加的驅(qū)動(dòng)源文件命名為pwm-xx.c,將probe和remove函數(shù)分別命名為xx_pwm_probe和xx_pwm_remove,將PWM控制器結(jié)構(gòu)體定義為struct xx_pwm_chip。./drivers/pwm路徑下文件如下。

(2)apply函數(shù)和get_state函數(shù)定義

根據(jù)PWM控制器手冊,由驅(qū)動(dòng)開發(fā)者定義apply函數(shù)和get_state函數(shù)。

(3)xx_pwm_probe函數(shù)定義

xx_pwm_probe函數(shù)的實(shí)現(xiàn)方法為:首先對PWM控制器結(jié)構(gòu)體struct xx_pwm_chip變量進(jìn)行初始化,然后調(diào)用PWM驅(qū)動(dòng)框架核心函數(shù)pwmchip_add注冊一個(gè)新的PWM控制器設(shè)備。

(4)xx_pwm_remove函數(shù)定義

xx_pwm_remove函數(shù)的實(shí)現(xiàn)方法為:調(diào)用PWM驅(qū)動(dòng)框架核心函數(shù)pwmchip_remove移除一個(gè)PWM控制器設(shè)備。

4.驅(qū)動(dòng)添加方法

4.1添加驅(qū)動(dòng)源文件

按3.4節(jié)所述方法,編寫驅(qū)動(dòng)源文件pwm-xx.c,添加到./drivers/pwm路徑下。

4.2添加編譯支持

(1)修改./drivers/pwm路徑下的Kconfig文件,添加所添加的PWM驅(qū)動(dòng)配置選項(xiàng)。

(2)修改./drivers/pwm路徑下的Makefile文件,添加pwm-xx.c的編譯選項(xiàng)。

(3)在memuconfig界面,使能所添加的PWM驅(qū)動(dòng)。配置界面如下所示。

4.3添加PWM控制器設(shè)備樹節(jié)點(diǎn)

在設(shè)備樹添加PWM控制器設(shè)備樹節(jié)點(diǎn)。該節(jié)點(diǎn)的基本屬性包括兼容性、寄存器和#pwm-cells數(shù)量,按需添加中斷、時(shí)鐘、復(fù)位等屬性。

PWM控制器設(shè)備樹設(shè)計(jì)方法可參考./Documentation/devicetree/bindings/pwm。

下面是PWM控制器設(shè)備樹節(jié)點(diǎn)的示例。參考文檔如下:

./Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml。

5.調(diào)試方法

使用sysfs接口對PWM驅(qū)動(dòng)進(jìn)行功能調(diào)試,主要調(diào)試命令示例如下。

(1)查看PWM控制器節(jié)點(diǎn)

ls /sys/class/pwm/pwmchip0

(2)打開指定PWM通道信號

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

//n為通道編號

(3)設(shè)置PWM信號周期

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

//pvalue為周期值

(4)設(shè)置PWM信號占空比

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

//dvalue為有效電平寬度值

(5)使能某個(gè)PWM通道信號

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

(6)禁止某個(gè)PWM通道信號

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

------------END------------

關(guān)注公眾號回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。

關(guān)鍵詞:

下一篇: 最后一頁
上一篇: 世界觀點(diǎn):深圳醫(yī)保統(tǒng)籌6月底清零?系誤解

世界熱頭條丨Linux之PWM驅(qū)動(dòng)

世界觀點(diǎn):深圳醫(yī)保統(tǒng)籌6月底清零?系誤解

西部建設(shè)(002302):5月23日北向資金減持61.33萬股|世界快看點(diǎn)

兩岸記者豫冀行聯(lián)合采訪活動(dòng)河北段啟程

Punchbowl記者

【環(huán)球快播報(bào)】攀鋼為什么和鞍鋼合并_攀鋼和鞍鋼合并原因簡述

烏克蘭國防部情報(bào)局局長布達(dá)諾夫在接受日本NHK電視臺采訪時(shí)表示,反攻將很快開始,反攻所需最基本的武器儲(chǔ)備已經(jīng)到位|聚焦

杭州第四批供地收官 濱江集團(tuán)超52億連落“三子”

環(huán)球關(guān)注:中國女排即將出征世界女排聯(lián)賽

來自天空體育的壞消息兩連擊(part2)法蘭克福...

華為鴻蒙系統(tǒng)國內(nèi)市場占比超8%坐穩(wěn)第三 手機(jī)操作系統(tǒng)行業(yè)格局再添變數(shù)

環(huán)球熱消息:山東將每年認(rèn)定50個(gè)左右省新舊動(dòng)能轉(zhuǎn)換公共實(shí)訓(xùn)項(xiàng)目

單車少年深夜“狂飆”,給藍(lán)朋友引路滅火 天天新視野

【焦點(diǎn)熱聞】保持愛你插曲歌詞_保持愛你插曲

歷史院某課堂講授內(nèi)容不當(dāng)?蘭州大學(xué)回應(yīng)_天天觀速訊

天天最資訊丨世界觀|極端暴力在這里竟如此“隨意”

全球綠色能源理事會(huì)授予包頭市“世界綠色硅都”稱號

一般拔智齒的費(fèi)用是多少 拔智齒能用醫(yī)保報(bào)銷嗎

教師資格證報(bào)名費(fèi)多少錢_教師資格證報(bào)名費(fèi)-熱點(diǎn)聚焦

當(dāng)黃老師濾鏡退去,我們?nèi)绾螑側(cè)藧偧海?/p>

韓國5月預(yù)期通貨膨脹率為3.5%,連續(xù)三個(gè)月下降

當(dāng)前資訊!國民神車為什么賣不動(dòng)了

關(guān)注:天原股份新設(shè)鋰電新材子公司 注冊資本1億元

全國麥?zhǔn)者M(jìn)度達(dá)4.8% 1650萬臺農(nóng)機(jī)備戰(zhàn)“三夏”

《喜羊羊與灰太狼》懶洋洋為什么總是不穿鞋?

【環(huán)球新視野】羅 牛 山:5月22日融資買入306.28萬元,融資融券余額4.4億元

黃浦江兩岸十大最佳攝影點(diǎn)和最美觀景點(diǎn)投票評選結(jié)果出爐,快來看看吧→

全球快看點(diǎn)丨楚江新材(002171)5月22日主力資金凈賣出886.11萬元

【全球新要聞】自去年開始德國加大罐頭金槍魚進(jìn)口量

10分鐘被騙430萬?我們都可能是AI作惡的受害者|焦點(diǎn)報(bào)道

【環(huán)球快播報(bào)】07版cad公差怎么標(biāo)注 cad公差怎么標(biāo)注

江蘇國泰: 2022年度分紅派息實(shí)施公告|全球觀速訊

日本電視臺臺長評論杰尼斯性加害案件 “會(huì)播出必要時(shí)公之于眾的消息”

嘲諷當(dāng)今聯(lián)盟太軟!媒體人:還記得科比與甜瓜在西決的卡位嗎?

“武漢?中國光谷”產(chǎn)教聯(lián)合體成立

日播時(shí)尚:重組標(biāo)的三元前驅(qū)體尚未正式投產(chǎn)