




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、A20ScriptGPIOA20ScriptA20ScriptGPIOA20ScriptGPIOCopyright2013Allwinner-1 s.A20ScriptGPIOCopyright2013Allwinner-2 s.ChangescomparedtoA20ScriptGPIOCopyright2013Allwinner-2 s.Changescomparedtoprevious目66667777777789992.2.1. 2.2.2Script2.2.3. 4.1. 4.2. 4.3. .4. 5.GPIO5.1.LinuxGPIO5.1.1.5.1.2.5.1.3. 5.1.
2、4.5.1.5.5.1.6. 5.1.7. 5.1.8. 5.1.9. 5.1.10. 5.1.11.5.1.12.5.1.13. 5.1.14. 5.1.15. 目66667777777789992.2.1. 2.2.2Script2.2.3. 4.1. 4.2. 4.3. .4. 5.GPIO5.1.LinuxGPIO5.1.1.5.1.2.5.1.3. 5.1.4.5.1.5.5.1.6. 5.1.7. 5.1.8. 5.1.9. 5.1.10. 5.1.11.5.1.12.5.1.13. 5.1.14. 5.1.15. 5.1.16. 5.1.17.5.1.18. 5.1.19. 5.
3、1.20. A20ScriptGPIOCopyright2013Allwinner-3 s.5.1.21. .1.22. 5.1.23. 5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.3.GPIO5.3.2. 5.3.2.1.5.3.2.2.5.3.2.13.u326.Script5.1.21. .1.22. 5.1.23. 5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.3.GPIO5.3.2. 5.3.2.1.5.3.2.2.5.3.2.13.u326.Script6.1. 6.2. 6.3. 6.3.2. 7.GPIOA20ScriptGPIOCopyright
4、2013Allwinner-4 s.關于 GPIO 的申請和7.3.1. GPIO7.3.1.1. 將PF3并獲取其data將PF3 設為output, 并將data 設為PF3已被設為output, 現將其data 設為設置一組gpio的input/output狀7.3.2. 將PF3配置成2 號功能將PF3配置成2 號功能(SDC0_CMD), pull 設為7.3.2.3PF3PF3mul關于 GPIO 的申請和7.3.1. GPIO7.3.1.1. 將PF3并獲取其data將PF3 設為output, 并將data 設為PF3已被設為output, 現將其data 設為設置一組gpio
5、的input/output狀7.3.2. 將PF3配置成2 號功能將PF3配置成2 號功能(SDC0_CMD), pull 設為7.3.2.3PF3PF3mulsel獲取PF3的mul sel,pull,driverlevel, data設置一組gpio的mul sel,pull,driver level,data7.3.3. gpio申請PA0中斷, 并設為上升沿觸PA0將PA0配置成下降沿觸打開PA0中斷的enable7.3.4.1. card0_boot_para主鍵下的所有gpio信7.3.4.2. sdc_cmdgpio7.3.4.3. AXP GPIO 的配?7.4.1. GPIO
6、7.4.2sys_config8.Android9. config9.2. 9.2.1.9.2.2.9.2.3.9.2.4.9.2.5.9.2.6.10. 11. A20ScriptGPIOCopyright2013Allwinner-5 s.概1.2. .1.3. Linux概1.2. .1.3. Linux。A20ScriptGPIOCopyright2013Allwinner-6 s.模塊介的功能GPIOGPIO操作功能2.2. . 的函數GeneraleInput模塊介的功能GPIOGPIO操作功能2.2. . 的函數GeneraleInputOutput, 即通用輸入/輸出, 也稱總
7、線擴展器2.3. GPIO為內核必備的模塊, 直接編譯到kernel中, 無須sys_config.fex或2.4. 接 口 在 linux-3.3archarmmach-現 中 實 ;gpio 模塊源碼在licheelinux-3.3archarmmach-sun7igpio 目錄下 ;gpio_multi_func.c: 對pin腳的功能pulldriverlevel進行配置的接口gpio_init.c: 模塊初始化gpio.c:gpio中斷操作接口gpio_base.c: gpioA20ScriptGPIOCopyright2013Allwinner-7 s.3. 模塊體系結構描標準GP
8、IO接口, 處理輸入輸出GPIO申請等. 需要linux內核的多功能配置接口, GPIO的功能配置3. 模塊體系結構描標準GPIO接口, 處理輸入輸出GPIO申請等. 需要linux內核的多功能配置接口, GPIO的功能配置pulldriverlevel等gpio接口, gpio外部中斷的配置, 觸發模式等gpio pm接口gpio驅動的待機,喚醒操作A20ScriptGPIOCopyright2013Allwinner-8 s.gpio hardw理 操 作gpio外部中操操gpiogpio 接 接標準gpio口模塊數據結構描gpio_chip成員, 被gpiolib管理, gpioapi的
9、支持:定義的模塊數據結構描gpio_chip成員, 被gpiolib管理, gpioapi的支持:定義的_cfg_t 成員實現了對gpio定義的gpio_pm_t 成員chipgpio 功能配置寄存器的起始虛擬地址. PA: chipgpio配置寄存器的起始虛擬地址PAirq_numchip對應的外部中斷號. lock: 對各 api 的加鎖處理.4.2. 功能配置函數A20ScriptGPIOCopyright2013Allwinner-9 s.typedefu32(*pset_cfg)(structaw_gpio_chip*pchip,u32offset,u32val); typedef
10、u32(*pget_cfg)(struct aw_gpio_chip *pchip, u32 offset);typedefu32(*pset_pull)(structaw_gpio_chip*pchip,u32offset,u32val); typedef u32(*pget_pull)(struct aw_gpio_chip *pchip, u32 offset);typedefu32(*pset_drvlevel)(structaw_gpio_chip*pchip,u32offset,u32val); typedef u32(*pget_drvlevel)(struct aw_gpio_
11、chip *pchip, u32 offset);struct pset_cfg set_cfg; pget_cfg get_cfg; pset_pull set_pull;structaw_gpio_chipstruct gpio_chipstructstruct gpio_estruct gpio_pm_tvoid void iomem/*gpioeinitconfigregbase*/ 4.3. gpio中斷處理函數4.4. 電源管理接口, 目前暫不支持A20ScriptGPIO4.3. gpio中斷處理函數4.4. 電源管理接口, 目前暫不支持A20ScriptGPIOCopyrigh
12、t2013Allwinner-10 s.typedef u32(*psave)(struct aw_gpio_chip *pchip); typedefu32(*presume)(structaw_gpio_chip*pchip);structgpio_pm_ttypedef u32(*pe_set_trig)(struct aw_gpio_chip *pchip, u32 offset, enum _trigtype trig_val);typedef u32(*pe_get_trig)(struct aw_gpio_chip *pchip, u32 offset, enum _trigty
13、pe *pval);typedef _get_enable)(struct aw_gpio_chip *pchip, u32 offset, typedef u32(*pe_set_enable)(struct aw_gpio_chip *pchip, u32 offset, u32 typedef u32(*pe_get_irqpd_sta)(struct aw_gpio_chip *pchip, u32 offset); typedef u32(*pe_clr_irqpd_sta)(struct aw_gpio_chip *pchip, u32 offset); _debounce val
14、);/* for chip, not just port */_debounce *pval);/* for chip, not just port */struct_cfg_te_get_debounce eA20ScriptGPIOCopyright2013AllwinnerA20ScriptGPIOCopyright2013Allwinner-11s.GPIO 接口描標 在 linux-中 實 現 在 gpio_export(unsignedgpio,bool功能參數GPIO 接口描標 在 linux-中 實 現 在 gpio_export(unsignedgpio,bool功能參數返回
15、值: 0表示成功, 否則表示失敗gpio_export_link(structdevice*dev,constchar*name,unsigned: 創建 link 的設備 link 的名稱.參數返回值: 0表示成功, 否則表示失敗gpio_sysfs_set_active_low(unsigned 功能參數gpio active_low 屬性. value: 0active_low.返回值: 0表示成功, 否則表示失敗voidgpio_unexport(unsigned功能: gpio的導出A20ScriptGPIOCopyright2013Allwinner-12 s.參數返回值: 無gp
16、iochip_add(structgpio_chip功能參數 返回值: 0表示成功, 否則表示失敗該函數一般調用, 用于支持標準gpio接口gpiochip_remove(structgpio_chip功能參數 參數返回值: 無gpiochip_add(structgpio_chip功能參數 返回值: 0表示成功, 否則表示失敗該函數一般調用, 用于支持標準gpio接口gpiochip_remove(structgpio_chip功能參數 返回值: 0表示成功, 否則表示失敗structgpio_chip*gpiochip_find(void(*match)(structgpio_chip*c
17、hip,void功能: 由gpio 號查找對應gpio_chip結構.參數match函數的第二個參數提供的匹配函數返回值: gpio_chip句柄NULL表示失敗gpio_request(unsignedgpio,constchar功能: gpio. gpio權參數.gpio名稱, 返回值: 0表示成功, 否則表示失敗voidgpio_free(unsigned功能參數.返回值: 無A20ScriptGPIOCopyright2013Allwinner-13 s.gpio_request_one(unsignedgpio,unsignedlongflags,constchar功能: gpio,
18、 input/output狀態參數.輸入輸出狀態. GPIOF_IN 表示輸入, gpio_request_one(unsignedgpio,unsignedlongflags,constchar功能: gpio, input/output狀態參數.輸入輸出狀態. GPIOF_IN 表示輸入, 表示輸出高電平. 在linux-3.3includelinuxgpio.h中定義gpio名稱, 返回值: 0表示成功, 否則表示失敗gpio_request_array(conststructgpio*array,size_t功能: 申請一組 gpio, 并設置 input/output狀態. gpio
19、_request_one 操作.gpio 的每一項執行參數gpio數組array的項數返回值: 0表示成功, 否則表示失敗A20ScriptGPIOCopyright2013Allwinner-14 s.structgpio- astructuredescribingaGPIOwiththe GPIOflags: GPIOconfigurationasspecifiedbylabel: aliteraldescriptionstring ofthisstructgpiounsignedlong flags; const char *label;/*maketheseflagvaluesavai
20、lableregardlessofGPIOkconfigoptions*/ #define GPIOF_DIR_OUT (0 0)#define(1#defineGPIOF_INIT_LOW(01) #defineGPIOF_INIT_HIGH(1mul_sel1, output時,處理: 將該 pin 的 data 位設為高或低.u32sw_gpio_getall_range(structgpio_config*pcfg,u32功能: gpiomulselpulldriverlevel參數配置參數數組, 輸出返回值: 0, 失敗返回錯誤行號注: pcfgdata成員, pcfg-mul_se
21、l0/1, input/output時才會處理pin data 值A20ScriptGPIOCopyright2013Allwinner-18 s.structgpio_config/* gpio global index, must be unique */ /*multiselval:0-input,1-output.*/*pullval:0-pullup/downdisable,1-pullup.*/ /* driver level val: 0 - level 0, 1 - level 1. */* data val: 0 - low, 1 - high, only vaild whe
22、n mul_sel is input/output */voidsw_gpio_dump_config(structgpio_config*pcfg,u32功能: gpiomulselpulldriverlevel參數配置參數數組, 輸出返回值: 無pcfgu32功能voidsw_gpio_dump_config(structgpio_config*pcfg,u32功能: gpiomulselpulldriverlevel參數配置參數數組, 輸出返回值: 無pcfgu32功能gpiosuspend的處理. 暫未實現.返回值: 成功返回 0, 失敗返回錯誤行號.u32功能gpioresume的處
23、理. 暫未實現.返回值: 成功返回 0, 失敗返回錯誤行號.5.3. GPIO0 表示沒有.用 設置單個gpio中斷的enable狀態1表示enable0個gpio中斷的irqpending. 若pending獲取單個gpio中斷的pending狀態1表示產生中斷設置單個 gpio chip debounce, 一般不用.gpiochipdebounce信息, 一般不_setall_range: 設置一組gpio的pulldriverleveltrigtype等信息, 置完后, request_irq申請該中斷_getall_range: gpiopulldriverleveltrigtype
24、 等信息 gpiopulldriver leveltrigtype等信息A20ScriptGPIOCopyright2013Allwinner-19 s.調試用sw_gpio_irq_request: 申請gpio中斷調用_setall_range 將配成中斷功能. gpio中斷, 5.3.2.1. u32sw_gpio_irq_request(u32gpio,enum_trigtype_handlehandle,void調試用sw_gpio_irq_request: 申請gpio中斷調用_setall_range 將配成中斷功能. gpio中斷, 5.3.2.1. u32sw_gpio_ir
25、q_request(u32gpio,enum_trigtype_handlehandle,void功能參數觸發類型. PA0中斷回調函數. gpio 中斷觸發時回調. handle的參數. 必須為全局, 或者在堆中不能為棧中的局部變量返回值: 成功返回句柄, 注會進行如下處理5.3.2.2. 功能參數gpio中斷. sw_gpio_irq_request對應 A20ScriptGPIOCopyright2013Allwinner-20 s.權. 調用gpio的功能(mul sel), pull, driver level, trig type, gpio enable位 linux內核申請中斷
26、. request_irq, IRQF_SHARED標記enum TRIG_EDGE_返回值: 0, 失敗返回錯誤行號注會進行如下處理5.3.2.3. u32 _setall_range(struct_all*pcfg,u32功能: gpiopulldriverleveltrigtype 等信息. request_irq 申請該中斷設置完后參數gpio配置結構體返回值: 0, 失敗返回錯誤行號注會進行如下處理5.3.2.3. u32 _setall_range(struct_all*pcfg,u32功能: gpiopulldriverleveltrigtype 等信息. request_irq
27、 申請該中斷設置完后參數gpio配置結構體pcfg的元素個數返回值: 0, 失敗返回出錯行號5.3.2.4. u32 _getall_range(struct_all*pcfg,u32功能: gpio中斷配置參數返回值: 參數gpio 配置數組. 0, 失敗返回出錯行號5.3.2.5. A20ScriptGPIOCopyright2013Allwinner-21 s.struct_all/*theglobalgpioindex*/ /* gpio pull val */*gpio driverlevel/* in set function: used to enable/disable the
28、 e, 1: enable, 0: disableinget function: return the enabledus,1: enabled, u32irq_pd; /*insetfunction:1 meanstoclrirq pendus, 0no in get function: return the actual irq pend stauts, eg, meansirqenum_trigtypetrig_type;/*trigtypeofthegpio gpio中斷. 調用gpio中斷句柄. sw_gpio_irq_request返回的句柄gpio權. 調用功能: gpio中斷配
29、置參數返回值: 無gpio 配置數組. 參數5.3.2.6. u32 _set_trigtype(u32gpio,enum_trigtype功能: gpio的中斷觸發類型返回值: 參數.觸發類型0, 失敗返回出錯行號5.3.2.7. u32 _get_trigtype(u32gpio,enum_trigtype功能功能: gpio中斷配置參數返回值: 無gpio 配置數組. 參數5.3.2.6. u32 _set_trigtype(u32gpio,enum_trigtype功能: gpio的中斷觸發類型返回值: 參數.觸發類型0, 失敗返回出錯行號5.3.2.7. u32 _get_trigt
30、ype(u32gpio,enum_trigtype功能參數.0, 失敗返回出錯行號.返回值: 5.3.2.8. u32 : _set_debounce(u32gpio,struct_debounce chip的debounce, 一般不用.參數返回值: 0, 失敗返回出錯行號5.3.2.9. u32 _get_debounce(u32gpio,struct_debounce功能參數gpiochip的一般不用.0, 失敗返回出錯行號.返回值: A20ScriptGPIOCopyright2013Allwinner-22 s.struct_debounceclk_sel; /* pioerrupt
31、clockselect,0-LOSC,1-HOSC*/ clk_pre_scl; /* debounce clk pre-scale n, the select,*clock source ispre-y 5.3.2.10. u32 功能參數gpioirqpending. 若pending位未置則不處理.返回值: 0, 失敗返回出錯行號5.3.2.11. u32 功能: gpiopending狀態1表示中斷產生0表示沒有參數5.3.2.10. u32 功能參數gpioirqpending. 若pending位未置則不處理.返回值: 0, 失敗返回出錯行號5.3.2.11. u32 功能: gp
32、iopending狀態1表示中斷產生0表示沒有參數.返回值1gpio中斷已產生0表示未產生或獲取失敗5.3.2.12. u32_get_enable(u32gpio,u32: : 參數.0, penableenable狀態1enable,0disable; 失敗返回出錯行號5.3.2.13. u32u32_set_enable(u32gpio,u32: 參數.enable狀態0disable1返回值: 0,; 失敗返回出錯行號A20ScriptGPIOCopyright2013Allwinner-23 s.Script 接口使用描script_item_u *item)功能: 子鍵名保存獲取到
33、的子鍵值Script 接口使用描script_item_u *item)功能: 子鍵名保存獲取到的子鍵值, 可能, string 或gpio, 因此用參數 返回值: 成功返回子鍵類型, A20ScriptGPIOCopyright2013Allwinner-24 s.definetypesofscriptinvaliditemegeritemSCIRPT_ITEM_VALUE_TYPE_STR: itemSCIRPT_ITEM_VALUE_TYPE_PIO: gpio item typedef definedatastructurescriptegervalueegertype str:str
34、ingerforstingtype gpio:gpioconfigpiotypetypedefunionstruct 注: str類型script_item_ustr的內存不需要調用者分配script 申.注: str類型script_item_ustr的內存不需要調用者分配script 申. A20ScriptGPIOCopyright2013Allwinner-25 s./* 獲取card_linetype=script_get_item(card0_boot_para,card_line,&val); != type)k(type/* 獲取machinetype=script_get_i
35、tem(card0_boot_para,machine,&val); if(SCIRPT_ITEM_VALUE_TYPE_STR != type)k(type/* 獲取sdc_clktype=script_get_item(card0_boot_para,sdc_clk,&val); if(SCIRPT_ITEM_VALUE_TYPE_PIO != type)k(typek(value is: gpio %d, mul_sel %d, pull %d, drv_level %d, data %dn, val.gpio.data, = port:PF1 = port:PF3 = port:PF4
36、=6.2. 功能: gpio信息參數gpio數組指針返回值: gpio個數6.2. 功能: gpio信息參數gpio數組指針返回值: gpio個數6.3. script_dump_mainkey(char功能: 打印主鍵所有子鍵信息參數main_key: 主鍵名A20ScriptGPIOCopyright2013Allwinner-26 t = 0;/* 獲取gpiolist cnt=script_get_pio_list(card0_boot_para,&list); if(0 = cnt)k(getcard0_boot_paragpiolistfailed!n); k(cntisd!ncn
37、t/* 6= port:PF3 =返回值: 0, 失敗返回負數假設 sys_config.fex 中card0_boot_para 配置信息如下返回值: 0, 失敗返回負數假設 sys_config.fex 中card0_boot_para 配置信息如下A20ScriptGPIOCopyright2013Allwinner-27 s.(gpio:119,mul:2, pull1, drv -data-(gpio: 120, mul: 2, pull 1,drv -data-(gpio: 121, mul: 2, pull 1, drv -data-(gpio: 122,mul:2,pull1,
38、drv-data-(gpio: 123, mul: 2, pull 1,drv -data-(gpio: 124, mul: 2, pull 1,drv -data-= port:PF3 =GPIO 接口使用描(1) 若只處理輸入或輸出的情形, GPIO接口sw_gpio_setcfg, sw_gpio_setall_range , , gpio gpio_direction_output 等). GPIO 接口使用描(1) 若只處理輸入或輸出的情形, GPIO接口sw_gpio_setcfg, sw_gpio_setall_range , , gpio gpio_direction_outp
39、ut 等). 不用, , 不用pulldriverlevel, 則用多功能配置接口比如將PC(3)設置為input, 且要求pullupdriverlevel為口cfg的data忽略(3) gpiogpio中斷接口A20ScriptGPIOCopyright2013Allwinner-28 s.structgpio_configcfg= sw_gpio_setpull(GPIOC(3), 1);sw_gpio_setdrvlevel(GPIOC(3), GPIO_DRVLVL_DEFAULT, sw_gpio_setcfg(GPIOA(2), 7.2. GPIO(1) gpio時, gpio標
40、記為已占用, 不關心被誰占用, 也不會配置硬件Gpio已被占用時, 再次申請會失敗. 只有后, 解除了占用標記, 才能被再次申請7.2. GPIO(1) gpio時, gpio標記為已占用, 不關心被誰占用, 也不會配置硬件Gpio已被占用時, 再次申請會失敗. 只有后, 解除了占用標記, 才能被再次申請(2) gpiogpio_request,gpio_request_one因此, 造成重復申請導致錯誤需改為(3) 對于模塊gpio, gpio, 例如Sys_config.fexPH14PH15twi0用twi模塊初始化中, twi0被使用后, A20ScriptGPIOCopyright2
41、013Allwinner-29 s.t, i = 0; val,*list=NULL;= port:PH14 /* 申請gpio, 并配置 ret2=gpio_request_one(gpio,flags,NULL); k(gpio_request_one /* 使用完,gpio*/ if(0 = ret2)/* 申請gpio ret=gpio_request(gpio,NULL); if(0 != ret) /* 錯誤, 造成了重復申請 ret2=gpio_request_one(gpio,flags,NULL); k(gpio_request_one /* 使用完,gpio*/ if(0
42、= ret)twi模塊卸載函數中 一般情況下使用前要先申請, ;apigpio_request_one,twi模塊卸載函數中 一般情況下使用前要先申請, ;apigpio_request_one,gpio_request. 比如包含了申請操作A20ScriptGPIOCopyright2013Allwinner-30 s.gpio_index=GPIOE(5); request_sta = -1;/* 申請gpio request_sta=gpio_request(gpio_index,pe_5); if(0 != request_sta)gpio if(0 = request_sta) *l
43、ist=模塊初始化函數申請的gpio t=script_get_pio_list(twi0_para,&list); for(i = 0; i t; i+)/* twi0type=script_get_item(twi0_para,twi_used,&val); != type) /*twi0, gpio*/ if(1 = val.val) t=script_get_pio_list(twi0_para,&list); for(i = 0; i t; i+)if(0!=gpio_request(listi.gpio.gpio,NULL) k(request gpio failed!);(5)
44、對于多功能配置接口和中斷接口問gpio, 不進行申; 否則申請gpio是否已被申請若是, 則直接訪(5) 對于多功能配置接口和中斷接口問gpio, 不進行申; 否則申請gpio是否已被申請若是, 則直接訪A20ScriptGPIOCopyright2013Allwinner-31 s.request_sta = 0; structgpiogpio_arry=GPIOA(0),GPIOF_OUT_INIT_HIGH,GPIOB(3),GPIOF_IN,GPIOC(5), GPIOF_OUT_INIT_LOW, GPIOH(2),GPIOF_IN,/* gpioif(0 != request_st
45、a)k(requestgpiogpio */ gpio_index=GPIOC(1); request_sta = 0;/* 申請gpio, outputdataif(0!=gpio if(0 = request_sta) 開Ygpio 申請gpgp結若不關心gpio , .檢測功能, PE5已被其他模塊申請開Ygpio 申請gpgp結若不關心gpio , .檢測功能, PE5已被其他模塊申請 , 前進行申請.A20ScriptGPIOCopyright2013Allwinner-32 s.u32upio_index=GPIOE(5); us = 0;struct gpio_config_e_
46、all cfg_e=GPIOB(3),GPIO_PULL_DEFAULT,1, true, 0,/* 申請gpio, 防us=gpio_request(upio_index,u32upio_index=struct gpio_config_e_all cfg_e=GPIOB(3),GPIO_PULL_DEFAULT,1, true, 0,/* 直, 不需申請if(0!=sw_gpio_setcfg(upio_index,3) k(setgpiofunctionif(0!=sw_gpio_setpull(upio_index,1) k(set gpio pull failedn);if(0!=s
47、w_gpio_setdrvlevel(upio_index,1) k(set gpio driver level failedn);if(0 != sw_gpio_ek(set gpioggp上述代碼中, 若PE5已被別的模塊申請, 則gpio_request就會失敗并返回,7.3. PF3上述代碼中, 若PE5已被別的模塊申請, 則gpio_request就會失敗并返回,7.3. PF3設data PF3設output, 并data 設為A20ScriptGPIOCopyright2013Allwinner-33 s.u32upio_index=GPIOF(3); us = -EINVAL;
48、u32upio_index=GPIOF(3); data = -1;/* 申請gpio prk(requestgpiofailedn); return -EINVAL;/* inputk(set to input failedn);/* 獲取data值 data = gpio */ return data;if(0!= prfailedn); return;if(0!=sw_gpio_setcfg(upio_index,3) k(setgpiofunctionif(0 = req_s, 設置一組 gpio input/output 狀, 設置一組 gpio input/output 狀. A2
49、0ScriptGPIOCopyright2013Allwinner-34 s.u32upio_index=/* 申請gpio, 防 prk(requestgpiofailedn); /* 功能配置 structgpiogpio_arry =GPIOA(0),GPIOF_OUT_INIT_HIGH,GPIOB(3),GPIOF_IN,GPIOC(5), GPIOF_OUT_INIT_LOW, GPIOH(2),GPIOF_IN,/* gpioinput/outputif(0 != sk(gpio_request_array failed, sus 0 x%xn, sgpio_free_array
50、(gpio_arry, ARRAY_SIZE(gpio_arry); gpio/* PF3data /* 申請gpio us=gpio_request_one(upio_index,GPIOF_OUT_INIT_HIGH,NULL); if(0 != sk(gpio_request_one failed, sus 0 x%xn, sgpio_free(upio_index); /*PF3配置2 號功能(SDC0_CMD), pull 設1PF3 配PF3配置2 號功能(SDC0_CMD), pull 設1PF3 配A20ScriptGPIOCopyright2013Allwinner-35 s
51、.u32upio_index=/* 申請gpio, 防 prk(requestgpiofailedn); /* 功能配置 if(0!=sw_gpio_setcfg(upio_index,2) k(setgpiofunction/* 設置pull值 if(0!=sw_gpio_setpull(upio_index,1) k(set pull failedn);/* 設置driverlevelif(0!=sw_gpio_setdrvlevel(upio_index,2) k(set drv level failedn);gpio u32upio_index=/* 申請gpio, 防 prk(req
52、uestgpiofailedn); /* 功能配置 if(0!=sw_gpio_setcfg(upio_index,2) k(setgpiofunction/* 設置pull值 if(0!=sw_gpio_setpull(upio_index,1) k(set pull failedn);gpioif(0!=sw_gpio_setcfg(upio_index,2) k(setgpiofunctiongpioPF3mulselPF3mulselpulldriverleveldataPF3mulselPF3mulselpulldriverleveldataA20ScriptGPIOCopyrigh
53、t2013Allwinner-36 s.structgpio_configgpio_cfg=/*useGPIO_PULL_DEFAULT/GPIO_DRVLVL_DEFAULTifyoucare u32upio_index=structgpio_configgpio_cfg=/* 申請gpio, 防 prk(requestgpiofailedn); /* 獲取mulsel,pull,driverlevel,data值*/ if(0!=sw_gpio_getall_range(&gpio_cfg,1) k(sw_gpio_getall_range failedn);k(get PF3 mulse
54、l %d, pull %d, driverlevel %d, data %dn, gpio_cfg.mul_sel,gpio_cfg.pull,gpio_cfg.drv_level,gpio_cfg.data);gpiou32upio_index=GPIOF(3); /* 申請gpio, 防 prk(requestgpiofailedn); /* 獲取mulsel mul_sel=gpio */ 7.3.3.1PA0中斷, 并設為上升沿7.3.3.1PA0中斷, 并設為上升沿觸 A20ScriptGPIOCopyright2013Allwinner-37 s.gpio_irq_handle_d
55、emo-gpioirqhandlepara: paras setby*u32upio_index=GPIOA(0); u32handle = 0;/* 申請PA0中斷, handle = sw_gpio_irq_request(utemp, TRIG_EDGE_ if(0= prfailedn); return;PA0 中斷 */ GPIOE(10), 3, GPIO_PULL_DEFAULT, GPIOA(13),2,1,2,-1,2, 1,0,1,1,/* 申請gpio, 防for(i=0;iARRAY_SIZE(gpio_cfg),if(0!=gpio_request(gpio_cfgi
56、.gpio,NULL) goto end;/* mulselpulldriverleveldataif(0!=sw_gpio_setall_range(gpio_cfg,ARRAY_SIZE(gpio_cfg) k(sw_gpio_setall_range failedn);注: PA0 中見上例PA0 配置成下降沿觸PA0注: PA0 中見上例PA0 配置成下降沿觸PA0enableA20ScriptGPIOCopyright2013Allwinner-38 s.u32upio_index=GPIOA(0); /* 申請gpio if(0 != req_sk(requestgpio/* 設置
57、PA0enable1u32upio_index=GPIOA(0); /* 申請gpio if(0 != req_sk(requestgpio/* 設置PA0if(0 != sw_gpio_ek(set trig type failedn);gpio if(0 = req_s*Returns0 ifs,otherwise u32upio_index=*(u32k(%s: upio_index0 x%08xn, ,/* 0表示成功, */ return 0;假設 sys_config.fex card0_boot_para 配置如下card0_boot_para 假設 sys_config.fex
58、 card0_boot_para 配置如下card0_boot_para 主鍵下的A20ScriptGPIOCopyright2013Allwinner-39 t, script_item_u*list=/* gpiolistcnt=script_get_pio_list(card0_boot_para,&list); if(0 = cnt) k(getcard0_boot_paragpiolistfailedn); /* gpiofor(i=0;i cnt;if(0!=gpio_request(listi.gpio.gpio,NULL) goto end;/* gpiolistif(0!=s
59、w_gpio_setall_range(&list0.gpio,cnt) k(sw_gpio_setall_range failedn);= port:PF3 =if(0 != sw_gpio_e_set_enable(upio_index,1) k(set enable sus failedn);gpio if(0 = req_ssdc_cmd 子鍵gpio 信AXP GPIO 的配, gpio接口. 換言之, sdc_cmd 子鍵gpio 信AXP GPIO 的配, gpio接口. 換言之, axp pin因此不能通過上面方法來配置 axp pin. 正確的做法為:(1) sys_conf
60、ig.fexaxppin(2) gpio接口進行配置比如配置 sys_config.fex lcd0_para 主鍵A20ScriptGPIOCopyright2013Allwinner-40 s./* gpiolist=/* gpiolisttype=script_get_item(card0_boot_para,sdc_cmd,&item); if(SCIRPT_ITEM_VALUE_TYPE_PIO != type) k(script_get_itemreturntypeerrn); /* gpious=gpio_request(item.gpio.gpio,NULL); if(0 !=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030糖尿病藥物行業市場深度發展趨勢與前景展望戰略研究報告
- 2025-2030牛肉干行業風險投資態勢及投融資策略指引報告
- 2025-2030雜糧產品入市調查研究報告
- 信息技術教師專業發展提升方案
- 小學道德與法治學生自主管理計劃
- 健康管理中心臨床危急值監測流程
- 基于BOPPPS模式的高中化學可視化教學設計與實踐研究
- 斯魯利單抗聯合索凡替尼和IP方案二線治療小細胞肺癌的臨床觀察
- 電力公司員工電氣檢修培訓
- 應用改良和傳統的牙槽骨CBCT測量方法對比評價拔牙后位點保存術的臨床效果
- 中國加速康復外科臨床實踐指南2021
- 山東省大教育聯盟學校2024-2025學年高三下學期開學檢測化學試題(原卷版+解析版)
- 2025教科版六年級科學下冊全冊教案【含反思】
- DB43T-稻-再-油生產技術規程
- 中國慢性冠脈綜合征患者診斷及管理指南2024版解讀
- 課件:《科學社會主義概論(第二版)》第五章
- DB36∕T 1720-2022 牧草裹包青貯技術規程
- 基于BIM技術的建筑工程安全管理應用與探討
- 基于深度學習的電力系統故障恢復與優化方法研究
- 大數據與人工智能營銷知到智慧樹章節測試課后答案2024年秋南昌大學
- 第20課 清朝君主專制的強化(導學案)(原卷版)
評論
0/150
提交評論