0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LED裸機驅(qū)動電路圖設(shè)計及編寫匯編代碼

454398 ? 來源:博客園 ? 作者:Suzkfly ? 2020-09-27 16:35 ? 次閱讀

1. 確定硬件連接

打開OK6410底板電路圖,找到LED,可以發(fā)現(xiàn)NLEDx為0時LED點亮。

找到LED的控制引腳,發(fā)現(xiàn)LED控制引腳通過連接器連到了核心板:

打開核心板電路圖,找到對應(yīng)的連接器中相同位置下的引腳,發(fā)現(xiàn)核心板上的命名與底板相同。

注意:設(shè)計者為了方便會將核心板與底板連接處的端口命名為相同的名字,但判斷兩者的連接位置與端口名其實是沒有關(guān)系的。從底板上可以看出4個LED所在的連接器引腳編號分別為47,49,46和39,因此在核心板上應(yīng)該找連接器上這幾個編號的引腳,核心板連接器上47,49,46和39號引腳才是與底板LED相連的引腳,只不過設(shè)計者為了方便,將核心板上這幾個引腳也命名為NLED1~4。

繼續(xù)在核心板上尋找,能找到NLEDx控制的引腳為GPM0~3

2. 確定GPM相關(guān)寄存器的地址和要寫入的值

打開6410的芯片手冊,找到GPM相關(guān)寄存器

可以發(fā)現(xiàn)有3個寄存器與GPM相關(guān),三個寄存器的地址分別為0x7F008820、0x7F008824、0x7F008828,其中GPMCON用于配置引腳功能

我們要控制LED需要把GPM0~3都配置成輸出模式,因此GPMCON的位[15:0]應(yīng)為0x1111。GPMDAT用于控制引腳輸出電平

如果要控制LED全亮,則GPMDAT位[3:0]應(yīng)為0x0,全滅則為0xF。GPMPUD用于使能引腳的上下拉,一般會將LED控制引腳配置為上拉模式(注意區(qū)分信號的輸入輸出和電流的流入流出,GPMCON配置輸出指的是信號從6410輸出到外部,當輸出信號為0的時候電流會流入6410芯片)。因此GPMPUD的位[7:0]應(yīng)為0xAA。

3. 編寫匯編代碼

編寫led.s

 1 .section .text
 2 .global _start
 3 _start:
 4     LDR R0, =0x7F008820        @GPMCON,也可以認為是GPM寄存器基地值
 5 
 6     LDR R1, [R0]            @取出GPMCON的值
 7     LDR R2, =0xFFFF
 8     BIC R1, R1, R2
 9     LDR R2, =0x1111
10     ORR R1, R1, R2
11     STR R1, [R0]            @配置GPM0~3為輸出模式
12 
13     LDR R1, [R0, #4]        @取出GPMDAT的值
14     ORR R1, R1, #0xF    
15     STR R1, [R0, #4]        @GPMDAT低4位置1,所有LED關(guān)閉
16 
17     LDR R1, [R0, #8]        @取出GPMPUD的值
18     BIC R1, R1, #0xFF
19     ORR R1, R1, #0xAA
20     STR R1, [R0, #8]        @GPM0~3使能上拉
21 loop:
22     LDR R1, [R0, #4]
23     BIC R1, R1, #0xF
24     ORR R1, R1, #0xE
25     STR R1, [R0, #4]        @點亮第一個LED
26     BL delay
27     
28     LDR R1, [R0, #4]
29     BIC R1, R1, #0xF
30     ORR R1, R1, #0xD
31     STR R1, [R0, #4]        @點亮第二個LED
32     BL delay
33 
34     LDR R1, [R0, #4]
35     BIC R1, R1, #0xF
36     ORR R1, R1, #0xB
37     STR R1, [R0, #4]        @點亮第三個LED
38     BL delay
39 
40     LDR R1, [R0, #4]
41     BIC R1, R1, #0xF
42     ORR R1, R1, #0x7
43     STR R1, [R0, #4]        @點亮第四個LED
44     BL delay
45     B loop
46 delay:
47     LDR R2, =0x1000000
48 delay_loop:
49     SUB R2, R2, #1
50     CMP R2, #0
51     BNE delay_loop
52     MOV PC, LR
53 
54     .end

輸入命令:

arm-none-linux-gnueabi-gcc -c led.s -o led.o

arm-none-linux-gnueabi-ld -Ttext 0 led.o -o led.elf

arm-none-linux-gnueabi-objcopy -O binary led.elf led.bin

此時生成了可執(zhí)行文件led.bin

4. 下載文件

連接minicom,重啟后進入U-boot,輸入dnw 50008000

在虛擬機中輸入:sudo dnw led.bin

下載成功后在開發(fā)板中輸入:go 50008000

此時可以看到4個LED呈流水燈效果。

注意:我是利用U-boot下載程序,此時U-boot已經(jīng)運行起來了,而U-boot已經(jīng)做了很多初始化工作了,如設(shè)置堆棧指針、關(guān)閉看門狗、指定外設(shè)基地址等,如果想要將程序燒寫進Nandflash的0地址,則這些初始化工作必須自己做。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22907

    瀏覽量

    650155
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119212
  • 連接器
    +關(guān)注

    關(guān)注

    98

    文章

    13845

    瀏覽量

    135106
收藏 人收藏

    評論

    相關(guān)推薦

    基于51單片機兩路紅黃綠交通燈電路圖及程序

    :? ? ? 單片機愛好者、電子類專業(yè)學(xué)生、電子diy愛好者。本資源能學(xué)到什么:? ? ? ? ?可以通過查看電路學(xué)習(xí)電路設(shè)計原理,查看代碼學(xué)習(xí)代碼
    發(fā)表于 06-24 17:32 ?1次下載

    基于51單片機四路紅黃綠交通燈電路圖及程序

    :? ? ? 單片機愛好者、電子類專業(yè)學(xué)生、電子diy愛好者。本資源能學(xué)到什么:? ? ? ? ?可以通過查看電路學(xué)習(xí)電路設(shè)計原理,查看代碼學(xué)習(xí)代碼
    發(fā)表于 06-24 17:31 ?2次下載

    基于51單片機電子稱電路圖及程序

    :? ? ? 單片機愛好者、電子類專業(yè)學(xué)生、電子diy愛好者。本資源能學(xué)到什么:? ? ? ? ?可以通過查看電路學(xué)習(xí)電路設(shè)計原理,查看代碼學(xué)習(xí)代碼
    發(fā)表于 06-21 14:33 ?0次下載

    基于51單片機步進電機正反轉(zhuǎn)調(diào)速控制電路圖及程序

    :? ? ? 單片機愛好者、電子類專業(yè)學(xué)生、電子diy愛好者。本資源能學(xué)到什么:? ? ? ? ?可以通過查看電路學(xué)習(xí)電路設(shè)計原理,查看代碼學(xué)習(xí)代碼
    發(fā)表于 06-20 16:17 ?0次下載

    基于51單片機分立器件超聲波測距電路圖及程序元件清單

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機分立器件超聲波測距電路圖及程序設(shè)計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單
    發(fā)表于 06-20 16:17 ?0次下載

    基于51單片機直流電機驅(qū)動測速電路圖及程序及元件清單

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機直流電機驅(qū)動測速電路圖及程序設(shè)計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清
    發(fā)表于 06-20 16:16 ?0次下載

    基于51單片機8路搶答器電路圖proteus仿真及程序

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機8路搶答器電路圖proteus仿真及程序設(shè)計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開
    發(fā)表于 06-19 14:15 ?1次下載

    基于51單片機16路搶答器電路圖及程序元件清單

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機16路搶答器電路圖及程序設(shè)計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單(excel表格
    發(fā)表于 06-19 11:38 ?0次下載

    基于51單片機數(shù)碼管數(shù)字鐘電路圖及程序

    :? ? ? 單片機愛好者、電子類專業(yè)學(xué)生、電子diy愛好者。本資源能學(xué)到什么:? ? ? ? ?可以通過查看電路學(xué)習(xí)電路設(shè)計原理,查看代碼學(xué)習(xí)代碼
    發(fā)表于 06-18 10:14 ?0次下載

    基于51單片機0-20V電壓表4094驅(qū)動數(shù)碼管顯示電路圖及程序

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機0-20V電壓表4094驅(qū)動數(shù)碼管顯示電路圖及程序設(shè)計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(ke
    發(fā)表于 06-17 14:22 ?0次下載

    LED驅(qū)動電路圖分享

    LED驅(qū)動電路是一種用于驅(qū)動LED發(fā)光的電子電路LED
    的頭像 發(fā)表于 02-18 16:55 ?3248次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>電路圖</b>分享

    典型LED驅(qū)動電路圖分享

    LED驅(qū)動電路是一種電源電路,用于將輸入的電源電壓轉(zhuǎn)換為適合LED的直流電壓,以驅(qū)動
    的頭像 發(fā)表于 02-07 18:29 ?8310次閱讀
    典型<b class='flag-5'>LED</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>電路圖</b>分享

    簡單實用的3種led恒流驅(qū)動電路圖

    簡單實用的3種led恒流驅(qū)動電路圖
    的頭像 發(fā)表于 01-24 17:51 ?1.2w次閱讀
    簡單實用的3種<b class='flag-5'>led</b>恒流<b class='flag-5'>驅(qū)動</b><b class='flag-5'>電路圖</b>

    LED電源驅(qū)動電路圖詳解

    電子發(fā)燒友網(wǎng)站提供《LED電源驅(qū)動電路圖詳解.doc》資料免費下載
    發(fā)表于 11-15 14:25 ?17次下載
    <b class='flag-5'>LED</b>電源<b class='flag-5'>驅(qū)動</b><b class='flag-5'>電路圖</b>詳解

    天花板嵌入式led電路圖

    天花板嵌入式led電路圖? 天花板嵌入式LED燈是一種現(xiàn)代家居裝飾中常見的一種照明燈具。它不僅可以起到照明作用,還可以增加空間的美感和整體的裝飾效果。本文將詳細介紹天花板嵌入式LED
    的頭像 發(fā)表于 10-16 16:29 ?2678次閱讀
    天花板嵌入式<b class='flag-5'>led</b>燈<b class='flag-5'>電路圖</b>