控制發光二極體

2022-09-13 04:42:13 字數 1146 閱讀 3267

驅動控制led燈步驟:

一.建立led驅動的裝置檔案:

使用cdev_init函式初始化cdev;

指定裝置號;

使用cdev_add函式將字元裝置新增到核心中的字元裝置陣列中;

使用class_create巨集建立struct_class;

使用device_create函式建立裝置檔案。

二.解除安裝led驅動的裝置檔案:

需要依次呼叫device-destory、class-destory、和unregistor-chrder-region(dev__t from,.unsigned count)。

三.設定暫存器與初始化led驅動:

led有兩個引腳gpb0和gpb1;

控制led需要通過3個暫存器來完成;

每乙個暫存器可以使用4個位元組;

使用gpmcon暫存器的低16位將led的兩個埠的屬性設為output;

使用gpmdat暫存器的低4位控制led的亮滅;

使用gpmpud暫存器的低8位分別開啟led燈的上拉電路。

四.控制led(及所謂的**編寫——linuxc語言):兩種方法,1、通過字串控制led;

2、通過i/o命令控制led。

舉例一種實現方法,如下:

混雜裝置驅動中需要實現的是填充file_operations結構,然後設定miscdevices的各個字段值,然後註冊到核心即可。詳細流程如下:

編寫ioctl介面函式

填充file_operations結構,主要是將ioctl函式註冊進去

填充miscdevice結構,主要是次裝置號、fops和裝置名稱。

編寫要提供給module_init巨集使用的初始化**,設定led埠為輸出,註冊到核心

編寫要提供給module_exit巨集使用的登出**,主要是登出掉初始化中註冊到核心的miscdevice裝置

led驅動雖然並不複雜,只是控制了4個led,但led驅動已經包括了linux驅動所必要的部分。乙個完整的linux驅動主要是由內部處理和與硬體互動兩部分組成。其中內部處理主要是指linux驅動的裝載、解除安裝、與裝置檔案相關的動作處理以及業務邏輯等。與硬體互動通過iowrite32、ioread32等函式與硬體中的暫存器進行資料互動。linux在不同平台的移植也是處理這兩部分。

11:00:59 2016-06-06

控制發光二極體的亮滅速度。

include define uchar unsigned char define uint unsigned int define ulong unsigned long sbit p10 p1 0 sbit p11 p1 1 sbit p12 p1 2 sbit p13 p1 3 sbit p1...

紅外發光二極體

紅外燈發光體是由紅外發光二極體 led 矩陣組合而成。紅外發光二極體是由紅外輻射效率高的材料製成的 pn結,再外加正向偏壓向 pn結注入電流,從而激發 出紅外光。光譜功率分布為中心波長 830nm 950nm 半峰頻寬約 40nm 左右,它是窄帶分布,是普通 ccd黑白攝像機可感受的光譜範圍。其最大...

發光二極體原理

發光二極體是由 族化合物,如gaas 砷化鎵 gap 磷化鎵 gaasp 磷砷化鎵 等半導體製成的,其核心是pn結。因此它具有一般p n結的i n特性,即正嚮導通,反向 截止 擊穿特性。此外,在一定條件下,它還具有發光特性。在正向電壓下,電子由n區注入p區,空穴由p區注入n區。進入對方區域的少數載流...