查看: 1776|回復: 0
打印 上一主題 下一主題

【教程8】瘋殼·ARM功能手機-GPIO實(shí)驗教程

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2022-8-12 14:44:05 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: ARM , 功能手機 , GPIO , 實(shí)驗教程 , 寄存器
ARM功能手機
——瘋殼·開(kāi)發(fā)板系列
GPIO實(shí)驗教程   




   
    圖1

    第一節LED硬件電路

        板子中有一個(gè)可控LED,接在DA14580的P24引腳,LED串聯(lián)1K的限流電阻,如下圖所示:

   
    圖2


    第二節 GPIO寄存器

    2.1 GPIO引腳介紹
        DA14580的I/O引腳功能可以通過(guò)軟件配置,分為4組,分別為Port0、Port1、Port2、Port3,其中Port2只在QFN40與QFN48封裝的芯片中,Port3只在QFN48封裝的芯片中。
    Port0有8個(gè)引腳,Port1有6個(gè)引腳(其中包括DEBUG引腳SW_CLK與SWDIO),Port2有10個(gè)引腳,Port3有8個(gè)引腳;
    每個(gè)引腳都可以選擇上拉或者下拉25KOhm的電阻;
    每個(gè)引腳上拉電壓在VBAT3V(降壓模式)與VBAT1V(升壓模式)兩者可選;
    4路模數轉換的引腳固定分配為Port0中的0:3引腳;
    當系統進(jìn)入睡眠模式時(shí),引腳保持最后的狀態(tài)。
    2.2寄存器介紹
    2.2.1 P0數據寄存器

   
    圖3
    15:8位:保留不使用;
    7:0位:寫(xiě)該寄存器則設置P0輸出寄存器的值,讀該寄存器則返回P0口的值。
    2.2.2 P0設置數據寄存器

   
    圖4
    15:8位:保留不使用;
    7:0位:寫(xiě)’1’到對應位則對應的引腳置’1’,寫(xiě)’0’無(wú)效,讀該寄存器則返回0。
    2.2.3 P0復位數據寄存器

   
    圖5
    15:8位:保留不使用;
    7:0位:寫(xiě)’1’到對應位則對應的引腳置’0’,寫(xiě)’0’無(wú)效,讀該寄存器則返回0。
    2.2.4 P00模式寄存器


   
    圖6
    15:10位:保留不使用;
    9:8位:設置引腳的上拉、下拉電阻的模式,00為輸入,無(wú)電阻;01為輸入,上拉電阻;10為輸入,下拉電阻;11為輸出,無(wú)電阻;在ADC模式中該位的設置無(wú)效。
    7:5位:保留不使用;
    4:0位:設置引腳功能,0~25分別對應不同的功能,具體看上圖,注:當一個(gè)輸入功能設置為多個(gè)引腳時(shí),引腳序號越低優(yōu)先級越高,即優(yōu)先選用序號低的引腳設置為該功能。P0的優(yōu)先級比P1的高。
    2.2.5 P1~P3的寄存器配置
    參照P0寄存器的配置,需要注意的是P14與P15兩個(gè)引腳模式的默認值是1,即默認上拉電阻。
    注:P14與P15為SWD調試接口的時(shí)鐘與數據接口,在使用Jlink調試過(guò)程中不要使用這兩個(gè)引腳。
    2.3 寄存器配置講解
    #define P0_DATA_REG                (* ( volatile uint16*)0x50003000)
    #define P0_SET_DATA_REG            (* ( volatile uint16*)0x50003002)
    #define P0_RESET_DATA_REG          (* ( volatile uint16*)0x50003004)
    #define P00_MODE_REG              (* ( volatile uint16*)0x50003006)
    #define P01_MODE_REG              (* ( volatile uint16*)0x50003008)
    #define P02_MODE_REG              (* ( volatile uint16*)0x5000300A)
    #define P03_MODE_REG              (* ( volatile uint16*)0x5000300C)
    #define P04_MODE_REG              (* ( volatile uint16*)0x5000300E)
    #define P05_MODE_REG              (* ( volatile uint16*)0x50003010)
    #define P06_MODE_REG              (* ( volatile uint16*)0x50003012)
    #define P07_MODE_REG              (* ( volatile uint16*)0x50003014)
    如果對P0整體操作,可以使用P0_DATA_REG寄存器,若使P0[7:0] = 0xaa,因為以上宏定義是定義的地址,則寄存器操作為P0_DATA_REG=0xaa;
    如果要讀取P0的狀態(tài)值,則通過(guò)讀取P0_DATA_REG寄存器,P0_STATUS = P0_DATA_REG,若要讀取某一位的狀態(tài)值,則通過(guò)與操作之后返回邏輯值即可。
    作為輸出時(shí)P0_DATA_REG適合對整體P0口操作,而對于某一位進(jìn)行操作則需要經(jīng)過(guò)一些邏輯操作保持其它位的值不變,不是很方便。而P0_SET_DATA_REG和P0_RESET_DATA_REG這兩個(gè)寄存器對位操作就十分方便。對某一位置’0’或置’1’只需對應位賦1,其它位賦0即可,因為該寄存器忽視寫(xiě)0操作。若使P00 = 1,P01 = 0則P0_SET_DATA_REG =0x01;  P0_RESET _DATA_REG=0x02;
    P0[x]_MODE_REG是P0口某一位的操作模式的設置寄存器,例如配置P00為輸入口,不上拉電阻,P01為I2C_SDA,P02為輸出口,則
    P00_ MODE _DATA_REG=0x00;
    P01_ MODE _DATA_REG=0x0a;
    P02_ MODE _DATA_REG=0x30;



    第三節 GPIO實(shí)驗

    實(shí)驗需要使用的模塊有:手機開(kāi)發(fā)板底板,Jlink調試工具,杜邦線(xiàn)、3.7V鋰電池或Mocro USB線(xiàn)。
    使用JLINK通過(guò)杜邦線(xiàn)連接手機藍牙位于手機主控底板,連接方式如下:
    (1)JLINK一端只需要使用杜邦線(xiàn)連接JLINK的SWC、SWD、GND三個(gè)引腳,如下圖所示:

   
    圖7
    (2)手機藍牙一端需要使用杜邦線(xiàn)連接上方右側的J3三個(gè)引腳,與JLINK的連接引腳一一對應,分別為SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下圖所示:

   
    圖8
    將JLINK插上電腦的USB接口,連接好之后給手機主控底板供電,詳細的介紹可以參考《如何上電》教程,路徑為:..\WT_Mobile\0.從這里開(kāi)始\0.開(kāi)機測試。
    打開(kāi)GPIO實(shí)驗的Keil工程blinky.uvproj,位于目錄:
    ...\WT_Mobile\1.初級教程\DA14580\1.GPIO實(shí)驗\projects\target_apps\peripheral_examples\blinky\Keil_5。

   
    圖9
    打開(kāi)工程文件之后,編譯,點(diǎn)擊DEBUG,然后點(diǎn)擊全速運行,則可以看到開(kāi)發(fā)板正面的藍色LED燈開(kāi)始閃爍,如下圖所示:



   
    圖10



    文件下載請點(diǎn)擊: GPIO實(shí)驗教程.pdf (710.42 KB)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页