日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

u-boot分析(八)----串口初始化

發(fā)布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 u-boot分析(八)----串口初始化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

u-boot分析(八)

  上篇博文我們按照210的啟動流程,分析到了內(nèi)存初始化,今天我們繼續(xù)按照u-boot的啟動流程對串口的初始化進行分析。

今天我們會用到的文檔:

1.??????? 2440芯片手冊:http://download.csdn.net/detail/wrjvszq/8358949

2.??????? 6410芯片手冊:http://download.csdn.net/detail/wrjvszq/8358965

3.??????? 210芯片手冊:S5PV210_UM_REV1.1(我的不知道為什么傳不上去大家去百度搜吧)

?

串口的初始化比較簡單,我們今天會通過以下幾點,對串口的初始化進行介紹:

1.????? 串口通信協(xié)議分析

2.????? 編程分析

?

l? 串口通信協(xié)議分析

相信搞過單片機的對串口并不陌生,我下面僅僅是復(fù)習(xí)一下串口通信協(xié)議。

1.?????? RS232接口

我們常見的串口是九幀的串口如下圖

注:上面為公頭,下面為母頭

其接口定義如下:

1.??????? DCD?? 載波檢測

2.??????? RXD?? 接收數(shù)據(jù)

3.??????? TXD?? 發(fā)送數(shù)據(jù)

4.??????? DTR?? 數(shù)據(jù)終端準(zhǔn)備

5.??????? GND? 信號地

6.??????? DSR?? 數(shù)據(jù)設(shè)備準(zhǔn)備好

7.??????? RTS?? 請求發(fā)送

8.??????? CTS?? 清除發(fā)送

9.??????? RI??? 振鈴指示

注:紅色標(biāo)注的三個管腳最為重要

2.?????? 異步串口通信協(xié)議

下圖是其工作模式:

其各個位的意義如下:

l? 起始位:先發(fā)出一個邏輯”0”的信號,表示傳輸字符的開始。

l? 數(shù)據(jù)位:有效數(shù)據(jù)。

l? 奇偶校驗位:來校驗資料傳送的正確性。

l? 停止位:它是一幀數(shù)據(jù)的傳輸結(jié)束。

l? 空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線路上沒有資料傳送。

l? 波特率:表示每秒鐘傳送的二進制位數(shù)。

3.?????? 數(shù)據(jù)發(fā)送接收過程

l? 發(fā)送過程:

把數(shù)據(jù)發(fā)送到fifo中,fifo把數(shù)據(jù)發(fā)送到移位寄存器,然后在時鐘脈沖的作用下,往串口線上發(fā)送一位bit數(shù)據(jù)。

l? 接收過程:

接收移位寄存器接收到數(shù)據(jù)后,將數(shù)據(jù)放到fifo中,接受fifo事先設(shè)置好觸發(fā)門限,當(dāng)fifo中數(shù)據(jù)超過這個門限時,就觸發(fā)一個中斷,然后調(diào)用驅(qū)動中的中斷服務(wù)函數(shù),把數(shù)據(jù)寫到flip_buf中。

l? 編程分析

1.?????? 初始化流程:

按照以往的經(jīng)驗去手冊找其的初始化流程,但是沒有找到,可以通過在網(wǎng)上查找資料,或者對照u-boot我們可以總結(jié)出通用的串口初始化流程:

1)??????? 設(shè)置引腳工作模式

2)??????? 設(shè)置數(shù)據(jù)格式

3)??????? 設(shè)置工作模式(DMA,輪詢,中斷)

4)??????? 設(shè)置波特率

2.?????? 代碼分析

通過上面的流程我們就不難理解u-boot的代碼,大家可以自己分析:

1 /* 2 * uart_asm_init: Initialize UART in asm mode, 115200bps fixed. 3 * void uart_asm_init(void) 4 */ 5 uart_asm_init: 6 7 /* set GPIO(GPA) to enable UART */ 8 @ GPIO setting for UART 9 ldr r0, =ELFIN_GPIO_BASE 10 ldr r1, =0x22222222 11 str r1, [r0, #GPA0CON_OFFSET] 12 13 ldr r1, =0x2222 14 str r1, [r0, #GPA1CON_OFFSET] 15 16 // HP V210 use. SMDK not use. 17 #if defined(CONFIG_VOGUES) 18 ldr r1, =0x100 19 str r1, [r0, #GPC0CON_OFFSET] 20 21 ldr r1, =0x4 22 str r1, [r0, #GPC0DAT_OFFSET] 23 #endif 24 25 ldr r0, =ELFIN_UART_CONSOLE_BASE @0xEC000000 26 mov r1, #0x0 27 str r1, [r0, #UFCON_OFFSET] 28 str r1, [r0, #UMCON_OFFSET] 29 30 mov r1, #0x3 31 str r1, [r0, #ULCON_OFFSET] 32 33 ldr r1, =0x3c5 34 str r1, [r0, #UCON_OFFSET] 35 36 ldr r1, =UART_UBRDIV_VAL 37 str r1, [r0, #UBRDIV_OFFSET] 38 39 ldr r1, =UART_UDIVSLOT_VAL 40 str r1, [r0, #UDIVSLOT_OFFSET] 41 42 ldr r1, =0x4f4f4f4f 43 str r1, [r0, #UTXH_OFFSET] @'O' 44 45 mov pc, lr

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/wrjvszq/p/4237498.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的u-boot分析(八)----串口初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。