SC880XGPin _ GPIO介绍(含8805Android).ppt_第1页
SC880XGPin _ GPIO介绍(含8805Android).ppt_第2页
SC880XGPin _ GPIO介绍(含8805Android).ppt_第3页
SC880XGPin _ GPIO介绍(含8805Android).ppt_第4页
SC880XGPin _ GPIO介绍(含8805Android).ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. 1,SC880XG Pin 然后调用sprd_mfp_config(,Android Gpio 配置,可以参考arch/arm/mach-sc8800s/common.c 这里对配置的宏做些简单介绍 MFP_CFG_X(pin, af, drv, func_updown, sleep_updown, io) 该宏配置一个pin的所有属性,这个应该是你最经常使用的,参数说明: pin, 为你要配置的pin脚名字。 af,为alternative function的缩写, 值为AF03,对应的是一个pin的四个功能。 如果是配置gpio,因为是固定的AF3,可以直接传入GPIO作为functi

2、on 参数。 drv,pin的驱动能力, 分为四级DS0DS3 func_updown为正常运行模式下的弱上拉下拉,值为: F_PULL_NONE,F_PULL_DOWN, F_PULL_UP, F_PULL_BOTH的其中之一。 sleep_undown为sleep mode时的弱上拉下拉,值为:S_PULL_NONE,S_PULL_DOWN, S_PULL_UP, S_PULL_BOTH的其中之一。 io,sleep mode时的输入输出。为输入IO_IE输出IO_OE高阻IO_Z几个状态。 MFP_CFG(pin, af) 配置一个pin的功能,需要参考芯片手册来确定你需要的功能 MFP

3、_CFG_DRV(pin, af, drv) 该宏可以配置pin的驱动能力。 MFP_CFG_IOE(pin, af, io) 该宏可以配置pin在sleep模式时的输入输出, 另外,在8800g平台中,ANANLOG die也有一些管脚,如果要配置analog die的管脚,需要用 MFP_ANA_CFG_X(pin, af, drv, func_updown, sleep_updown, io) 参数和MFP_CFG_X相同。置于一个管脚属于analog die还是digital die,请参考8800g device specification。,Android Gpio 配置,怎么配置

4、gpio如上所述,找到gpio所对应的pin,然后对该pin进行配置。 GPIO API使用的是LINUX的gpio lib里定义API,请参考linux/gpio.h,这个头文件也是你使用gpiolib API所必须包含的头文件。对常用API进行简单说明: int gpio_request(unsigned gpio, const char *label) 该API是你使用一个GPIO所必须的第一步, gpio是gpio number,gpio number为新片spec上定义的gpio number, label为该gpio的说明,例如backlight。 void gpio_free(u

5、nsigned gpio) 使用完gpio后释放该gpio。 int gpio_direction_input(unsigned gpio) 配置gpio为输入。 int gpio_direction_output(unsigned gpio, int value) 配置gpio为输出,value为输出的电平,1为高,0为低 int gpio_get_value(unsigned gpio) 判断GPIO输入的电平高低,两点需要注意: 1,只对输入GPIO,不能对输出GPIO的电平进行判断。 2,返回的非零值为高电平,0为低电平。 void gpio_set_value(unsigned gp

6、io, int value) 设置输出GPIO的电平高低, 1为高,0为低。不能对输入GPIO进行设置。其它高级用法请参考driver/gpio/gpiolib.c. 如 mount上debugfs,可以cat gpio查看使用的gpio情况。 #mount t debugfs /d #cat /d/gpio/,Android Gpio 配置,在用户空间设置GPIO电平 在kernel里配置完gpio后,可以通过如下步骤在sysfs接口里设置gpio电平: 调用gpio_export,有两个参数,一个是gpio number, 一个是是否改变输入输出,一般设为false。 进入/sys/cla

7、ss/gpio/gpio(gpio_number), 例如gpio42, 在该目录下,可以看到有value选项,这时你可以echo 1 value设置为高,echo 0 value设置为低 GPIO中断在使用gpio中断时,首先要包含#include ,,然后大致经过下列步骤: 调用sprd_mfp_config配置pin为gpio gpio_request申请该gpio gpio_direction_input配置为输入 sprd_alloc_gpio_irq为一个gpio分配中断,输入的参数是gpio number,返回的是分配的IRQ号,如果小于0,分配失败。 调用request_irq

8、来申请中断。,Android Gpio 配置,注意:可以通过request_threaded_irq申请一个线程化的中断,irq_handler会在 thread的上下文中执行,这样就不必使用tasklet, workqueue等来实现中断的下半部。由于irq_handler是在thread里执行的。你甚至可以使用sleep等操作 请参考arch/arm/mach-sc8800s/vibrate.c-headset_gpio_int_test的实现代码,Android Gpio 配置,8805 gpio 配置参考 Lcd 参考文件common.c static unsigned long dc

9、am_func_cfg _initdata = MFP_CFG_X(CCIRMCLK, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z),/ AF0缺省功能 MFP_CFG_X(CCIRCK, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z),/DS1 驱动能力 MFP_CFG_X(CCIRHS, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRVS, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CC

10、IRD0, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRD1, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRD2, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRD3, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRD4, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG

11、_X(CCIRD5, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRD6, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRD7, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(CCIRRST, AF3, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z) ),/ AF3 gpio功能 MFP_CFG_X(CCIRPD1, AF0, DS1, F_PULL_NONE, S_PULL

12、_NONE, IO_Z), MFP_CFG_X(CCIRPD0, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), ;,Android Gpio 配置,Key配置 参考文件common.c 4行5列配置,static unsigned long keypad_func_cfg = MFP_CFG_X(KEYOUT0, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_OE), /IO_OE 输出 MFP_CFG_X(KEYOUT1, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_OE), MFP_C

13、FG_X(KEYOUT2, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_OE), MFP_CFG_X(KEYOUT3, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_OE), MFP_CFG_X(KEYOUT4, AF0, DS1, F_PULL_NONE, S_PULL_NONE, IO_OE), MFP_CFG_X(KEYIN0, AF0, DS1, F_PULL_UP, S_PULL_UP, IO_IE), /IO_OE 输入 MFP_CFG_X(KEYIN1, AF0, DS1, F_PULL_UP, S_PULL_UP

14、, IO_IE), MFP_CFG_X(KEYIN2, AF0, DS1, F_PULL_UP, S_PULL_UP, IO_IE), MFP_CFG_X(KEYIN3, AF0, DS1, F_PULL_UP, S_PULL_UP, IO_IE), MFP_CFG_X(KEYIN4, AF0, DS1, F_PULL_UP, S_PULL_UP, IO_IE), ;,I2C配置 参考文件common.c,static unsigned long i2c_func_cfg _initdata = MFP_CFG_X(GPIO143, AF1, DS3, F_PULL_UP, S_PULL_NO

15、NE, IO_Z), /AF1 为I2C功能 MFP_CFG_X(GPIO144, AF1, DS3, F_PULL_UP, S_PULL_NONE, IO_Z), MFP_CFG_X(LCD_D16, AF1, DS3, F_PULL_UP, S_PULL_NONE, IO_Z), MFP_CFG_X(LCD_D17, AF1, DS3, F_PULL_UP, S_PULL_NONE, IO_Z), MFP_CFG_X(SIMCLK1, AF1, DS1, F_PULL_UP, S_PULL_UP, IO_NONE), MFP_CFG_X(SIMDA1, AF1, DS1, F_PULL_U

16、P, S_PULL_UP, IO_NONE), ;,static void sprd_config_i2c_pins(void) _raw_bits_and(BIT_6),SPRD_MISC_BASE+0 x0490); / _raw_bits_or(BIT_7,SPRD_MISC_BASE+0 x0490); sprd_mfp_config(i2c_func_cfg, ARRAY_SIZE(i2c_func_cfg); ,Android Gpio 配置,串口0 CTS RTS 配置串口2 使用 参考serial_sp.c static void serialsc8800_pin_config

17、(void) unsigned long serial_func_cfg = MFP_CFG_X(U0CTS, AF1, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(U0RTS, AF1, DS1, F_PULL_NONE, S_PULL_NONE, IO_Z), ; sprd_mfp_config(serial_func_cfg, ARRAY_SIZE(serial_func_cfg); _raw_bits_or(122),SPRD_GREG_BASE+0 x8); _raw_bits_or(16),SPRD_GREG_BASE+0 x28

18、); 串口0 CTS RTS 流控 使用 参考board-openphone.c MFP_CFG_X(U0CTS , AF0, DS1, F_PULL_DOWN, S_PULL_UP, IO_IE), / BT_CTS SPRD_3RDPARTY_GPIO_BT_CTS, BT CTS , MFP_CFG_X(U0RTS , AF0, DS1, F_PULL_DOWN, S_PULL_UP, IO_OE), / BT_RTS SPRD_3RDPARTY_GPIO_BT_RTS, BT RTS ,Android Gpio 配置,SPI 配置 参考board-openphone.c static

19、unsigned long spi_func_cfg = MFP_CFG_X(SPI_CLK , AF0, DS1, F_PULL_UP, S_PULL_UP, IO_NONE), MFP_CFG_X(SPI_DI , AF0, DS1, F_PULL_UP, S_PULL_UP, IO_NONE), MFP_CFG_X(SPI_DO , AF0, DS1, F_PULL_UP, S_PULL_UP, IO_NONE), #if 1 /* configure cs pin to normal gpio */ MFP_CFG_X(SPI_CSN0 , AF3, DS1, F_PULL_UP, S

20、_PULL_UP, IO_OE), MFP_CFG_X(SPI_CSN1 , AF3, DS1, F_PULL_UP, S_PULL_UP, IO_OE), #else /* configure cs pin to spi csx */ MFP_CFG_X(SPI_CSN0 , AF0, DS1, F_PULL_UP, S_PULL_UP, IO_NONE), MFP_CFG_X(SPI_CSN1 , AF0, DS1, F_PULL_UP, S_PULL_UP, IO_NONE), #endif ;,SDIO 配置 参考common.c static unsigned long sdio_func_cfg _initdata = MFP_CFG_X(SD0_CLK, AF0, DS3, F_PULL_NONE, S_PULL_NONE, IO_Z), MFP_CFG_X(SD_CMD, AF0, DS3, F_PULL_UP, S_PULL_NONE, IO_Z), MFP_CFG_X(SD_D0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论