国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

迅為-4418開發(fā)板-驅(qū)動(dòng)-PWM輸出實(shí)驗(yàn)

發(fā)布時(shí)間:2020-10-22 11:00    發(fā)布者:落風(fēng)
關(guān)鍵詞: 迅為 , 開發(fā)板
本文檔介紹了在 iTOP-4418 開發(fā)板上用 PWM 控制蜂鳴器輸出的測(cè)試歷程,基于 QtE 系統(tǒng)。4418MCU 共提供了 5 路 PWM 輸出,其中一路未引出,所以共有 4 路可用的 PWM 輸出。
注意:本文檔中提供的例程,沒有注冊(cè)設(shè)備和驅(qū)動(dòng),只是在驅(qū)動(dòng)入口和出口函數(shù)中進(jìn)行了配置。如果用戶需要生成設(shè)備節(jié)點(diǎn),則需要自行添加剩余部分,這部分可以參考 GPIO 操作的文檔。
1 配置 IO
打開底板電路圖,搜索“beep”,可以看到 beep 的網(wǎng)絡(luò)名為“MCU_ISO7816_CLK”,如下圖所示。

在核心板原理圖,搜索該關(guān)鍵詞“MCU_ISO7816_CLK”,可見其對(duì)應(yīng) PWM2,如下圖所示。

所以,接下來我們便對(duì) PWM2 進(jìn)行操作。在下面的操作之前,我們需要配置內(nèi)核,取消內(nèi)核中 buzzer 的驅(qū)動(dòng),解除該驅(qū)動(dòng)對(duì)蜂鳴器的占用,其目錄如下圖所示。

將該選項(xiàng)改為未選中狀態(tài),如下圖所示。

接下來,編譯燒寫該內(nèi)核鏡像(boot.img)到開發(fā)板。再進(jìn)行下面的操作即可。
2 編寫驅(qū)動(dòng)程序
在 linux 內(nèi)核中有一個(gè)規(guī)律,Linux 內(nèi)核開發(fā)者把通用的東西都總結(jié)出來,個(gè)性化的東西就留出接口,和 GPIO 驅(qū)動(dòng)類似,PWM 驅(qū)動(dòng)在內(nèi)核中也提供了對(duì)應(yīng)的接口函數(shù),內(nèi)核提供的接口函數(shù)聲明在 include/linux/pwm.h 中。
//申請(qǐng)一個(gè) PWM 資源
struct pwm_device *pwm_request(int pwm_id, const char *label);
//釋放一個(gè) PWM 資源
void pwm_free(struct pwm_device *pwm);
//配置 PWM
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);
//使能 PWM,duty_ns 為高電平所用時(shí)間,period_ns 整個(gè)周期為所用時(shí)間,單位為納秒。
int pwm_enable(struct pwm_device *pwm);
//不使能 PWM
void pwm_disable(struct pwm_device *pwm);
根據(jù)以上這些,我們便可以編寫一個(gè)簡(jiǎn)單的 pwm 輸出程序,來控制蜂鳴器的頻率。創(chuàng)建
名稱為 4418x_pwm.c 的文件,程序代碼如下所示。
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*pwm for this buzzer*/
struct pwm_device *pwm = NULL;
static int __init buzzer_init(void)
{
int ret;
printk(" check buzzer init.\n");
pwm = pwm_request(2, "buzzer");
if ( pwm == NULL ) {
printk("buzzer open error.\n");
}
//printk(KERN_EMERG "pwm_request %d ",pwm);
ret=pwm_config(pwm,100000,200000);//設(shè)置了 1000Hz 頻率的聲音
printk("pwm_config %d ",ret);
printk("pwm_config %d ",ret);
ret=pwm_enable(pwm);
printk("pwm_enable %d ",ret);
printk(KERN_EMERG "done2. \n") ;
return 0;
}
static void __exit buzzer_exit(void)
{
pwm_config(pwm,0,0); //關(guān)閉蜂鳴器輸出
pwm_disable(pwm); // 關(guān)閉 pwm
pwm_free(pwm); // 釋放 pwm 資源
}
module_init(buzzer_init);
module_exit(buzzer_exit);
MODULE_DESCRIPTION("pwm_buzzer driver");
MODULE_LICENSE("GPL");
2.2 編寫 Makefile
接下來進(jìn)行編寫 Makefile 文件。
export ARCH=arm
obj-m += 4418x_pwm.o
KDIR := /home/topeet/4418/4G/20170914/android/kernel
PWD = $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o modules.order *.ko *mod.c Module.symvers
腳本中,export ARCH=arm 表示設(shè)置目標(biāo) CPU 類別為 arm,也就是編譯的依賴內(nèi)核和驅(qū)動(dòng)模塊目標(biāo) CPU 為 ARM
obj-m += 4418x_pwm.o 表示編譯的源文件為 4418x_pwm.c, 如果源文件名有變化,則需要修改成對(duì)應(yīng)的文件名。
KDIR 參數(shù)指向?qū)?yīng)的內(nèi)核源碼目錄。作者的內(nèi)核源碼是在/home/topeet/4418/4G/20170914/android/kernel 目錄下,用戶要根據(jù)自己的具體情況來修改。
2.3 編譯運(yùn)行
首先設(shè)置環(huán)境變量,使其在編譯時(shí)使用源碼中的編譯器。在源碼目錄中使用”cdkernel”進(jìn)入 kernel 目錄。然后使用命令“make menuconfig”打開內(nèi)核缺省配置界面,如下圖所示。

進(jìn)入圖中高亮的“General setup”,如下圖所示。

可以看到圖中高亮的文本,描述了當(dāng)前源碼使用的編譯器為“arm-eabi-”,我們回到源碼文件夾,使用命令“find ./ -name arm-eabi-*”,可以得到源碼中編譯器所在路徑,如下圖所示。

這樣,源碼編譯器的絕對(duì)路徑為源碼所在路徑加上上圖中紅框的路徑,在本文中為“/home/topeet/4418/4G/20170914/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/”,因?yàn)楣P者是用 root 登錄的,所以打開文件“/root/.bashrc”在里面添加這樣一條內(nèi)容,如下圖所示。

接下來,我們便可以進(jìn)行編譯了。
將 Makefile 與 C 程序放在 Ubuntu 系統(tǒng)的同一目錄。如下圖所示。

在當(dāng)前目錄輸入“make”開始編譯,生成內(nèi)核模塊文件“ 4418x_pwm.ko”,如下圖所示。

將該內(nèi)核模塊文件拷貝到開發(fā)板,接下來在超級(jí)終端使用命令“insmod4418x_pwm.ko”加載該模塊,如下圖所示。

模塊加載成功,同時(shí)蜂鳴器響起高頻聲音。然后使用命令“rmmod 4418x_pwm”卸載該驅(qū)動(dòng),如下圖所示。

此時(shí),蜂鳴器停止播放高頻聲音,PWM 蜂鳴器測(cè)試?yán)痰酱私Y(jié)束。




本文地址:http://www.4huy16.com/thread-606446-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 常見深度學(xué)習(xí)模型介紹及應(yīng)用培訓(xùn)教程
  • 電動(dòng)兩輪車設(shè)計(jì)生態(tài)系統(tǒng)
  • Microchip第22屆中國技術(shù)精英年會(huì)上海首站開幕
  • Microchip第22屆中國技術(shù)精英年會(huì)——采訪篇
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表