基於S3C2440晶元的蜂鳴器驅動開發

2021-06-23 07:08:06 字數 2660 閱讀 5201

1、首先說一下,我使用的開發板是tiny210的開發板,蜂鳴器的電路原理圖和控制引腳圖如下:

2、s3c2440的控制暫存器和資料暫存器

(1)控制暫存器

(2)資料暫存器

static struct cdev buzzer_dev ;//定義乙個裝置驅動結構體

static int buzzer_major = 0 ; //定義主裝置號

dev_t dev_num ; //定義乙個裝置號變數

static int *map = null ; //定義乙個map指標,在下面記錄轉換的位址

module_license("dual bsd/gpl"); //模組遵從的協議gpl

void buzzer_start(void) //啟動蜂鳴器

void buzzer_stop(void) //關閉蜂鳴器

/* 開啟操作 */

int buzzer_open(struct inode *node, struct file *fp)

/* 關閉操作 */

int buzzer_release(struct inode *node, struct file *fp)

/* 讀寫操作 */

ssize_t buzzer_read(struct file *fp, char __user* buf, size_t size, loff_t *offp)

ssize_t buzzer_write(struct file *fp, const char __user* buf, size_t size, loff_t *offp)

/* io埠控制 */

int buzzer_ioctl(struct inode *node, struct file *fp, unsigned int cmd, unsigned long arg)

return 0;

}/*定義並初始化裝置檔案操作結構體*/

struct file_operations buzzer_ops=;

static int __init buzzer_init(void) //初始化函式

else

if(ret < 0)

buzzer_dev.owner = this_module; //初始化裝置主

buzzer_dev.ops = &buzzer_ops; //初始化裝置檔案操作結構體

cdev_add(&buzzer_dev, dev_num, 1); //向核心註冊裝置字元驅動,引數本別為:裝置驅動結構體,裝置號,裝置數量

return 0;

}static void __exit buzzer_exit(void) //裝置解除安裝函式

module_init(buzzer_init); //裝置驅動模組從這裡載入

module_exit(buzzer_exit); //解除安裝裝置驅動

2)makefile

ifeq ($(kernelrelease),)

kerneldir ?=/home/cf/arm/linux-2.6.35.7

pwd := $(shell pwd)

modules:

$(make) -c $(kerneldir) m=$(pwd) modules

modules_install:

$(make) -c $(kerneldir) m=$(pwd) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.phony: modules modules_install clean

else

obj-m :=buzzer.o

endif

3) test.c

#include#include#include#include#include#define buzzer_stop 0

#define buzzer_start 1

int main()

while(1)

close(dev_fd); //關閉裝置驅動

return 0;

}

基於S3C2440的bootloader移植詳解

首先 在彙編中初始化堆疊,中斷向量表,mmu,時鐘,串列埠等,然後跳到c語言的main函式。這部分 小於4k,放在block0。這個main函式用來將第二段 拷備到dram中並執行。不說這麼多廢話了,說多了無益,讓我們一起來揭開bootloader的神秘的面紗吧!先說下我移植的bootloader的...

談談BGA晶元S3C2440的焊接

剛開始接觸bga的晶元,大家可能覺得頭大,第一是要布四層以上,出了問題不好查詢,再就是過孔與線寬都較小,容易出現問題,其實大可不必這樣擔心,現在的製板技術是一點問題沒有的,精度比你想象的要高的多。最近使用2440做了個專案,布了個四層板,製板後一次就成功了,關鍵是審查的時間比較長,參看了別人的電路圖...

基於S3C2440的UART傳輸小結

這裡簡單地介紹一下通過暫存器來控制s3c2440的uart傳輸。檢視s3c2440的晶元手冊可以發現uart有著傳送和接收的快取區,在快取區有資料後其便乙個位元組乙個位元組地將資料傳輸到對應埠處。這裡介紹其中使用到的幾個暫存器。ulconx 用於設定資料的資料位 校驗位 停止位之類的資訊。uconx...