<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > dm6441的gpio驅動(dòng)

dm6441的gpio驅動(dòng)

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
這是我進(jìn)入嵌入式行業(yè)進(jìn)公司做的第一個(gè)驅動(dòng),

平臺:Tidm6441linu2.6.18

本文引用地址:http://dyxdggzs.com/article/201611/321880.htm

GPIO是嵌入式系統最簡(jiǎn)單、最常用的資源了,比如點(diǎn)亮LED,控制蜂鳴器,輸出高低電平,檢測按鍵,等等。
由于硬件資源的原因,DM6441并不是GPIO管腳就是純粹的GPIO腳,GPIO管腳和其他一些標準接口復用相同的引腳,
比如SPI和GPIO復用,I2C和GPIO復用等,到底是使用GPIO還是其他接口,在初始化的時(shí)候,都需要對PINMUX0和PINMUX1
兩個(gè)寄存器進(jìn)行設置(見(jiàn)DM6441的芯片p72),而軟件設置則在Montavista linux-2.6.18_pro500/arch/arm/mach-davinci
目錄下mux_cfg.c和對應的include/asm/arch-davinci/mux.h里。由數據手冊知道gpio5,6,7默認是gpio功能。

對mux_cfg.c的分析

對MUX_CFG()的參數解釋
第一個(gè)是描述(和數據手冊p72上要對應),第二個(gè)是pinmux0還是1,第三個(gè)是寄存器偏移。最后一個(gè)和調試有關(guān)的,
倒數第二個(gè)就是你需要給pinmux寄存器相應位設置的值,倒數第三個(gè)就是pinmux相應位全為1的值(掩碼值),
倒數第四個(gè)就是pinmux相應位偏移值。如果你要改變引腳的模式,把對應引腳設置成0,再把其他功能設為1。
(這是我的理解,參考下面的I2C和GPIO43_44設置)。
#include
#include

#include

#include
#include

#ifdef CONFIG_DAVINCI_MUX

struct pin_config __initdata_or_module davinci_dm644x_pins[] = {

MUX_CFG("HDIREN",0,16,1,1,1)
MUX_CFG("ATAEN",0,17,1,1,1)

MUX_CFG("MSTK",1,9,1,0,0)

MUX_CFG("I2C",1,7,1,1,0)

MUX_CFG("MCBSP",1,10,1,1,0)

MUX_CFG("PWM0",1,4,1,1,0)

MUX_CFG("PWM1",1,5,1,1,0)

MUX_CFG("PWM2",1,6,1,1,0)

MUX_CFG("VLINQEN",0,15,1,1,0)
MUX_CFG("VLINQWD",0,12,3,3,0)//pinmux上面是2位在表示所以0x11=33位就是111=7

MUX_CFG("EMACEN",0,31,1,1,1)

MUX_CFG("GPIO3V",0,31,1,0,1)

MUX_CFG("GPIO0",0,24,1,0,1)
MUX_CFG("GPIO3",0,25,1,0,0)
MUX_CFG("GPIO43_44",1,7,1,0,0)
MUX_CFG("GPIO46_47",0,22,1,0,1)

MUX_CFG("RGB666",0,22,1,1,1)

MUX_CFG("LOEEN",0,24,1,1,1)
MUX_CFG("LFLDEN",0,25,1,1,0)
};

內核里提供的接口在linux-2.6.18_pro500/arch/arm/mach-davinci目錄下的gpio.c,這個(gè)是寄存器級的驅動(dòng)。對這個(gè)文件的相關(guān)操作
見(jiàn)http://blog.csdn.net/langxing0508/archive/2008/12/25/3604043.aspx達芬奇DM644X平臺(ARM9, Linux-2.6.10)BSP之gpio.c淺析
說(shuō)得不錯,這里表示感謝。

下面是我的gpio驅動(dòng)程序

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#include

#include
#include
#include
#include
//#include
#define DEVICE_NAME "dm644x_gpios"
#define GPIO_MAJOR 199


#define ZX_GPIO55
#define ZX_GPIO66
#define ZX_GPIO77

static int davinci_dm644x_gpio_open(struct inode *inode, struct file *file)
{
printk("open gpio,here is driver/n");
const char *tag = NULL;
int gpio5_value;
int gpio6_value;
int gpio7_value;

//gpio_request(ZX_GPIO6, tag);
//gpio_set_value(ZX_GPIO6, 0);
//__gpio_set(ZX_GPIO6, 0);
//printk("%s/n", tag);
gpio_direction_output(ZX_GPIO5, 0);
gpio_direction_output(ZX_GPIO6, 0);
gpio_direction_output(ZX_GPIO7, 0);
gpio5_value = gpio_get_value(ZX_GPIO5);
gpio6_value = gpio_get_value(ZX_GPIO6);
gpio7_value = gpio_get_value(ZX_GPIO7);

printk("gpio5_value = %d, gpio6_value =%d , gpio7_value = %d/n", gpio5_value, gpio6_value, gpio7_value);
return 0;
}

static int gpio_release(struct inode *inode,struct file *filp)
{
return 0;
}


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: dm6441gpio驅

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>