国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1056|回復(fù): 0
打印 上一主題 下一主題

使用迅為IMX6ULL開發(fā)板第一個(gè)匯編實(shí)驗(yàn)(一)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-6-17 13:41:47 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
通過(guò)第五章我們對(duì) ARM 匯編語(yǔ)法有了初步的認(rèn)識(shí),在本章我們開始使用會(huì)念編寫我們的第一個(gè)匯編實(shí)
驗(yàn),在開發(fā)版的額眾多外設(shè)里面,原理最簡(jiǎn)單,最適合初學(xué)者入門的就是 gpio 的驅(qū)動(dòng),在我們的開發(fā)板上
板載了一個(gè) led 發(fā)光二極管,他的實(shí)現(xiàn)原理就是通過(guò) gpio 來(lái)控制 led 的亮滅(控制 gpio 輸出高低電平)。
9 91 .1  i.MX6ULL  GPIO 分析 分析
i.MX6 ULL 終結(jié)者開發(fā)板使用的 cpu I.MX6ULL,該 cpu 的參考手冊(cè)我們放到了光盤目錄的“i.MX6UL 終結(jié)
者光盤資料\03_開發(fā)板硬件資料\02_芯片資料\1I.MX6ULL 芯片資料.zip ”壓縮包里面,如下圖所示:
打開該手冊(cè)的 32 章節(jié)“Chapter 32 IOMUX Controller (IOMUXC)”,我們看到 32 章節(jié)的目錄如下圖所示:
圖中的IOMUXC_SW_MUC_CTL_PAD_GPIO1_IO00”就是 GPIO 的命名。其命名格式是
IOMUXC_SW_MUC_CTL_PAD_XX_XX”,其中的 XX_XX 就是 GPIO 的命名。例如:JTAG_MODGPIO1_IO00
UART4_TX_DATA 等。I.MX6ULL GPIO 命名是根據(jù) IO 所擁有的功能來(lái)命名的,比如我們看到 GPIO1_IO00
就可以知道這個(gè)是 GPIO 功能,看到 UART4_TX_DATA 就知道這個(gè)是串口 4 的發(fā)送功能。在參考手冊(cè)的 32
節(jié)列出了 i.MX6 ULL 的所有 IO 引腳,我們可以看到具有 GPIO 功能的引腳只有“GPIO1_IO00~GPIO1_IO09
10 GPIO,實(shí)際上 i.MX6 ULL IO 口都是具有復(fù)用功能的(一個(gè) IO 口可以配置成好幾種功能,如果不
做配置,會(huì)有一種默認(rèn)的功能)。下面我們看看 i.MX6 ULL IO 引腳復(fù)用功能。
我們以IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00”這個(gè) IO 為例,打開手冊(cè)的 32.6.71568 頁(yè))如下圖所示
上圖可以看到該 IO 對(duì)應(yīng)的配置寄存器“SW_MUX_CTL_PAD_GPIO1_IO00”,寄存器地址是 0X20E005C
寄存器為 32 位,其中的 bit0-bit3MUX_MODE)這四位是設(shè)置 IO 引腳復(fù)用功能的。從表中我們可以看到
GPIO1_IO00 9 種復(fù)用功能,分別對(duì)應(yīng) ALT0-ALT8,其中 ALT5 就是作為 GPIO1_IO00,如下圖所示:

從上圖中我們可以看到 GPIO1_IO00 這個(gè)引腳還可以配置成 ENET2_REF_CLK2I2C2_SDA 等功能,這就是 IO
的復(fù)用功能。
下面我們?cè)賮?lái)看下IOMUXC_SW_MUX_CTL_PAD_UART4_TX_DATA”這個(gè) IO 引腳。這個(gè)引腳的描述在 32.6.29
章節(jié)(1590 頁(yè)),如下圖所示:
從上圖可以看到該引腳可以復(fù)用成 7 種不同的模式。其中 ALT5(0101)表示可以復(fù)用為 GPIO1_IO28。
所以我們可以看到 i.MX6 ULL 的 GPIO 不止 GPIO1_IO00-GPIO1_IO09 這 10 個(gè),其它的 IO 也可以復(fù)用為 GPIO。
在第四章節(jié)我們可以看到 i.MX6 ULL 的 GPIO 一共有 5 組:GPIO1、GPIO2、GPIO3、GPIO4、GPIO5,其中 GPIO1
有 32 個(gè) IO(IO0-IO31),GPIO2 有 22 個(gè) IO(IO0-IO21),GPIO3 有 29 個(gè) IO(IO0-IO28),GPIO4 有 29個(gè) IO(IO0-IO28),GPIO5 有 12 個(gè) IO(IO0-IO11),這樣 i.MX6 ULL 一共有 124 個(gè) GPIO。如果我們想要
查看每個(gè) IO 能復(fù)用成什么功能,可以查看第 4 章,如果我們要設(shè)置某個(gè) IO 的功能,需要查看第 32 章。
9 92 .2  IO 引腳配置 引腳配置
IO 引腳的配置我們需要參考第 32 章節(jié),在 9.1 章節(jié)我們看到每個(gè) IO 都有一個(gè)“SW_MUX_CTL_PAD_XX_XX”
的寄存器,例如 SW_MUX_CTL_PAD_GPIO1_IO00。該寄存器在 6.1 章節(jié)我們介紹了,主要是用來(lái)配置 IO 引腳
的模式。然后我們?cè)谠撜鹿?jié)看到還有一個(gè)“SW_PAD_CTL_PAD_XX_XX”的寄存器,例如
“SW_PAD_CTL_PAD_GPIO1_IO00”寄存器,如下圖所示:

從上圖可以看到 SW_PAD_CTL_PAD_GPIO1_IO00 寄存器的地址是 0X20E02E8,他也是一個(gè) 32 位的寄存器,我
們可以看到改寄存器按照位劃分成了幾種功能設(shè)置,如下:
HYS(bit16):用來(lái)使能遲滯比較器,當(dāng) IO 作為輸入功能的時(shí)候有效,用于設(shè)置輸入接收器的施密特觸發(fā)
器是否使能。如果需要對(duì)輸入波形進(jìn)行整形的話可以使能此位。此位為 0 的時(shí)候禁止遲滯比較器,為 1 的
時(shí)候使能遲滯比較器。PUS(bit15-bit14)用來(lái)設(shè)置上下拉電阻的。
PUE(bit13)當(dāng) IO 作為輸入的時(shí)候,這個(gè)位用來(lái)設(shè)置 IO 使用上下拉還是狀態(tài)保持器。狀態(tài)保持器在 IO 作
為輸入的時(shí)候才有用,當(dāng)外部電路斷電以后此 IO 口可以保持住以前的狀態(tài)。
PKE(bit12)用來(lái)使能或者禁止上下拉/狀態(tài)保持器功能。
ODE(bit11)IO 作為輸出的時(shí)候,此位用來(lái)禁止或者使能開路輸出。
SPEED(bit7-bit6)當(dāng) IO 用作輸出的時(shí)候,此位用來(lái)設(shè)置 IO 速度。
DSE(bit5-bit3)當(dāng) IO 用作輸出的時(shí)候用來(lái)設(shè)置 IO 的驅(qū)動(dòng)能力。
SRE(bit0)設(shè)置壓擺率。
9 93 .3  GPIO 配置 配置
在 9.1 和 9.2 章節(jié)我們介紹了這兩個(gè)寄存器“SW_MUX_CTL_PAD_XX_XX”和“SW_PAD_CTL_PAD_XX_XX”
用來(lái)配置 IO 引腳,在本章我們來(lái)學(xué)習(xí)一下 GPIO 功能的配置(GPIO 屬于 IO 引腳中的一種復(fù)用功能)。比如
GPIO1_IO00 這個(gè) IO 可以復(fù)用為 I2C2_SCL、ENET1_REF_CLK1、GPIO1_IO00、WDOG3_WDOG_B 等 9 種復(fù)用功能,
GPIO1_IO00 只是其中的一種,具體配置成哪種復(fù)用功能,需要看下我們的硬件設(shè)計(jì)中這個(gè) IO 是作為哪種功
能來(lái)設(shè)計(jì)的。如果我們把該引腳用來(lái)控制 LED 發(fā)光二極管,那我們的程序就要把這個(gè) IO 配置成 GPIO 模式,
然后我們還需要對(duì) GPIO 的功能進(jìn)行配置,我們可以參考手冊(cè)的第 28 章“General Purpose Input/Output
(GPIO)”。在該章節(jié)我們可以看到 GPIO 的結(jié)構(gòu)如下圖所示所示:
在上圖中我們可以看到兩個(gè)地方用紅色方框標(biāo)注了(1、2),其中 1 處里面有兩個(gè)寄存器,這就是我
們 6.2 章節(jié)介紹的配置 IO 復(fù)用和 IO 功能屬性的寄存器。2 處表示當(dāng) IO 作為 GPIO 使用的時(shí)候,需要配置的
寄存器(共有 8 個(gè)),分別是:GPIO.DR、GPIO.GDIR、GPIO.PSR、GPIO.ICR1、GPIO.ICR2、GPIO.EDGE_SEL、
GPIO.IMR、GPIO.ISR,前面 6.2 章節(jié)我們介紹了 i.MX6 ULL 一共有 5 組 GPIO,每組 GPIO 分別有這 8 個(gè)寄存
器,下面我們分別看下這些寄存器:
首先是 GPIOx_DR 寄存器,如下圖所示:
此寄存器是數(shù)據(jù)寄存器,32 位,每一位對(duì)應(yīng)一個(gè) GPIO,當(dāng) GPIO 配置成輸出以后,向?qū)?yīng)的位寫 1,GPIO
就會(huì)輸出高電平,寫 0,GPIO 就會(huì)輸出低電平。如果 GPIO 設(shè)置成輸入,那讀取這個(gè)寄存器對(duì)應(yīng)的位,就可
以獲取到對(duì)應(yīng) GPIO 的狀態(tài)(0 或 1)。
然后是 GPIOx_GDIR 寄存器,如下圖所示:
該寄存器也是 32 位的,每一位對(duì)應(yīng)一個(gè) GPIO,該寄存器是用來(lái)設(shè)置 GPIO 是輸入還是輸出的。(對(duì)應(yīng)
的位設(shè)置成 0,對(duì)應(yīng)的 GPIO 設(shè)置成輸入模式;對(duì)應(yīng)的位設(shè)置成 1,對(duì)應(yīng)的 GPIO 就配置成輸出模式了)。
然后是 GPIOx_PSR 寄存器,如圖 6.3.4 所示:
該寄存器也是 32 位的,每一位對(duì)應(yīng)一個(gè) GPIO,該寄存器是用來(lái)讀取對(duì)應(yīng) GPIO 的狀態(tài)(高低電平)。
然后是 GPIOx_ICR1 寄存器,如下圖所示:
該寄存器是中斷控制寄存器,每組 GPIO 最多有 32 個(gè) GPIO,該寄存器用來(lái)配置低 16 個(gè) GPIO,此寄存
器是 32 位的,每?jī)晌槐硎疽粋(gè) GPIO,這兩位用來(lái)配置中斷的觸發(fā)方式:
00 低電平出發(fā)
01 高電平觸發(fā)
10 上升沿觸發(fā)
11 下降沿觸發(fā)
以 GPIO1_IO3 為例,如果設(shè)置成高電平觸發(fā),GPIO1.ICR1=1<<6。
然后是 GPIOx_ICR2 寄存器,如下圖所示:
該寄存器也是中斷控制寄存器,每組 GPIO 最多有 32 個(gè) GPIO,該寄存器用來(lái)配置高 16 個(gè) GPIO,此寄
存器是 32 位的,每?jī)晌槐硎疽粋(gè) GPIO,這兩位用來(lái)配置中斷的觸發(fā)方式:
00 低電平出發(fā)
01 高電平觸發(fā)
10 上升沿觸發(fā)
11 下降沿觸發(fā)
以 GPIO1_IO7 為例,如果設(shè)置成高電平觸發(fā),GPIO1.ICR1=1<<2。
然后是 GPIOx_IMR 寄存器,如下圖所示:
該寄存器是中斷屏蔽寄存器,每一位對(duì)應(yīng)一個(gè) GPIO,如果使能某個(gè) GPIO 的中斷,那么設(shè)置這個(gè)寄存器
對(duì)應(yīng)的位為 1 即可。如果禁止某個(gè) GPIO 的中斷,那么設(shè)置這個(gè)寄存器的對(duì)應(yīng)位為 0。
然后是 GPIOx_ISR 寄存器,如下圖所示:

該寄存器是中斷狀態(tài)寄存器,共有 32 位,每位對(duì)應(yīng)一個(gè) gpio,只要某個(gè) GPIO 的中斷產(chǎn)生,那么對(duì)應(yīng)
的位就會(huì)被置 1,我們可以通過(guò)讀取該寄存器來(lái)判斷 GPIO 的中斷是否產(chǎn)生了。當(dāng)我們處理完中斷后,必須
要清除對(duì)應(yīng)的中斷標(biāo)志位(像該寄存器相應(yīng)的位寫 1,就是清除中斷標(biāo)志位)。
然后是 GPIOx_EDGE_SEL,如下圖所示:

該寄存器用來(lái)設(shè)置邊沿中斷,這個(gè)寄存器會(huì)覆蓋 ICR1 和 ICR2 的設(shè)置,同樣一個(gè) GPIO 對(duì)應(yīng)一位。相應(yīng)
的位被置 1,那么就相當(dāng)于設(shè)置了對(duì)應(yīng)的 GPIO 是上升沿和下降沿(雙邊沿)觸發(fā)。
至此關(guān)于 GPIO 的所有寄存器我們就介紹完了。
其他部分關(guān)注:使用迅為IMX6ULL開發(fā)板第一個(gè)匯編實(shí)驗(yàn)(二)更多內(nèi)容關(guān)注公眾號(hào):迅為電子

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成品人app下载官网 成品人app软件下载 | 欧美不卡视频在线观看 | 天美麻豆蜜桃91制片厂 | 精品国产一区二区三区久久久狼 | 91天堂国产在线 在线播放 | 香蕉啪啪 | 成人欧美精品大91在线 | 亚洲欧美在线视频免费 | 欧美日本在线视频 | 理论片亚洲 | 国产精品入口麻豆高清 | 成人午夜无人区一区二区 | 男人的午夜天堂 | 欧美日b片 | 日本黄页网站免费大全 | 蓝月版奥特曼战士版在线 | 男人天堂v | 亚洲国产成人精品女人久久久 | 五月sese| 精品久久一区二区三区 | 一级特黄女人生活片 | 久久久亚洲天堂 | 欧美亚洲一区二区三区四 | 天天摸天天操免费播放小视频 | 国产婷婷色 | 高清精品一区二区三区一区 | 国产精品综合网 | 欧美成人高清手机在线视频 | 色爽视频| 国产福利二区 | 欧美高清一区二区三区 | 在线免费欧美 | 亚洲欧美日韩高清在线看 | 老子影院午夜久久亚洲 | 天天舔天天干天天操 | 逼水直流| 日本大片成人免费播放 | 三级精品 | 国产在线h | 骚婷婷 | 久久精品免费大片国产大片 |