91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

LED裸機(jī)驅(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輸出到外部,當(dāng)輸出信號為0的時候電流會流入6410芯片)。因此GPMPUD的位[7:0]應(yīng)為0xAA。

3. 編寫匯編代碼

編寫led.s

 1 .section .text
 2 .global _start
 3 _start:
 4     LDR R0, =0x7F008820        @GPMCON,也可以認(rèn)為是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,重啟后進(jìn)入U-boot,輸入dnw 50008000

在虛擬機(jī)中輸入:sudo dnw led.bin

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

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

注意:我是利用U-boot下載程序,此時U-boot已經(jīng)運(yùn)行起來了,而U-boot已經(jīng)做了很多初始化工作了,如設(shè)置堆棧指針、關(guān)閉看門狗、指定外設(shè)基地址等,如果想要將程序燒寫進(jìn)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)注

    244

    文章

    24634

    瀏覽量

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

    關(guān)注

    31

    文章

    5611

    瀏覽量

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

    關(guān)注

    104

    文章

    16176

    瀏覽量

    147319
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    匯編給CH32寫了一個本機(jī)代碼FORTH實現(xiàn)

    匯編器,可以在線編寫匯編代碼用于編寫ISR或需要性能的場景(目前沒實現(xiàn)所有RV32EC指令,后面會實現(xiàn)完整RV32EC指令集) 專門優(yōu)化了
    發(fā)表于 03-19 10:47

    海信LED42T29GP電路圖資料

    海信LED42T29GP電路圖2
    發(fā)表于 03-12 14:52 ?0次下載

    海信LED42T29GP電路圖資料

    海信LED42T29GP電路圖1
    發(fā)表于 03-12 14:44 ?0次下載

    編寫簡單高效單片機(jī)匯編程序

    的行數(shù)多并不一定意味著效率低。 關(guān)鍵在于寫代碼時避免冗余,靈活運(yùn)用模塊化設(shè)計和單片機(jī)資源。 最終程序既要高效運(yùn)轉(zhuǎn),又不失結(jié)構(gòu)清晰。 匯編語言的難點在于編寫簡短而高效的代碼,需要理
    發(fā)表于 11-24 07:00

    LED驅(qū)動電路失效分析及解決方案

    近年來,隨著LED照明市場的快速擴(kuò)張,越來越多的企業(yè)加入LED研發(fā)制造行列。然而行業(yè)繁榮的背后,卻隱藏著一個令人擔(dān)憂的現(xiàn)象:由于從業(yè)企業(yè)技術(shù)實力參差不齊,LED驅(qū)動
    的頭像 發(fā)表于 09-16 16:14 ?1157次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>電路</b>失效分析及解決方案

    電路圖:求馬蘭士功放DA -J7MKII電路圖?

    跪求馬蘭士功放DA -J7MKII電路圖
    發(fā)表于 08-13 13:00

    如何看懂電子電路圖

    電子發(fā)燒友網(wǎng)站提供《如何看懂電子電路圖.pptx》資料免費(fèi)下載
    發(fā)表于 07-29 16:34 ?348次下載

    LED驅(qū)動電路設(shè)計

    內(nèi)容提要本書以LED光源及其驅(qū)動技術(shù)為主線,全面系統(tǒng)地介紹了LED的特性、LED驅(qū)動電路及其相關(guān)
    發(fā)表于 07-18 15:26

    250種IC功放的電路圖

    250種IC功放的電路圖,部分資料內(nèi)容截?。? 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 05-20 15:19

    門老師教你快速看懂電子電路圖

    本文從最基本的電容電阻開講,包含模電數(shù)電,以及部分電氣知識點,深入淺出。 資料介紹: 全文共分7課,以老師授課和師生交流的形式系統(tǒng)地介紹了電子電路識圖方面的基本知識和技能,包括電路圖的基本概念和要素
    發(fā)表于 05-16 15:17

    GC9A01-TFT屏幕驅(qū)動(整理有stm32/51單片機(jī)/arduino等驅(qū)動代碼

    不久前我們收到用戶反饋問題中,多次反饋各種不同型號的屏幕驅(qū)動不起來,從0開始編寫代碼花費(fèi)大量時間,也有不少初次學(xué)習(xí)驅(qū)動屏幕代碼
    的頭像 發(fā)表于 04-25 11:29 ?1848次閱讀
    GC9A01-TFT屏幕<b class='flag-5'>驅(qū)動</b>(整理有stm32/51單片機(jī)/arduino等<b class='flag-5'>驅(qū)動</b><b class='flag-5'>代碼</b>)

    多年私藏的電源電路圖錦集

    1、3~25V 電壓可調(diào)穩(wěn)壓電路圖 2、10A3~15V 穩(wěn)壓可調(diào)電源電路圖 3、用 MC34063 做 3.6V 電轉(zhuǎn) 9V 電路圖 純分享貼,有需要可以直接下載附件獲取文檔! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支
    發(fā)表于 04-24 16:58

    《電子懶人的基礎(chǔ)硬件電路圖講解》

    包含了簡單的,基礎(chǔ)的單元電路圖。積累這些基礎(chǔ)的電路圖,對分析一個復(fù)雜的電路很有幫助。因為一個復(fù)雜的電路圖可以按照功能來劃分成不同的模塊,再對模塊進(jìn)行分解成不同的單元
    發(fā)表于 04-24 16:40

    迅為RK3568開發(fā)板helloworld 驅(qū)動實驗-驅(qū)動編寫

    第一個驅(qū)動程序—helloworld。 3.1 驅(qū)動編寫 本小節(jié)來編寫一個最簡單的驅(qū)動——helloworld
    發(fā)表于 04-01 15:20

    如何看懂電路圖——超級完整版

    電子設(shè)備中有各種各樣的。能夠說明它們工作原理的是電原理,簡稱電路圖。 電路圖有兩種,一種是說明模擬電子電路工作原理的。它用各種圖形符號
    發(fā)表于 04-01 15:19