色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 裸機程序開發之UART

裸機程序開發之UART 時間:2018-09-26      來源:未知

Uart原理

發送數據時,CPU將并行數據寫入UART,UART按照一定的格式在一根電線上串行發出;接收數據時,UART檢測另一根電線上的信號,串行收集然后放在緩沖區中,CPU即可讀取UART獲得這些數據。UART之間以全雙工方式傳輸數據,精確的連線方法只有3根電線:TxD用于發送數據,RxD用于接收數據,Gnd用于給雙發提供參考電平,連線如下:

UART使用標準的TTL/CMOS邏輯電平(0~5v、0~3.3v、0~2.5v或0~1.8v)來表示數據,高電平表示1,低電平表示0。為了增強數據的抗干擾能力、提高傳輸長度,通常將TTL/CMOD邏輯電平轉換為RS-232邏輯電平,3~12v表示0,-3~-12v表示1

TxD、RxD數據線以位為小單位傳輸數據,而幀由具有完整意義的、不可分割的若干位組成,它包含開始位、數據位、校驗位(需要的話)和停止位。發送數據之前,UART之間要約定好數據的傳輸速率(即每位所占據的時間,其倒數稱為波特率)、數據的傳輸格式(即有多少個數據位、是否使用校驗位、是奇校驗還是偶校驗、有多少個停止位)。

數據傳輸流程如下:

(1)平時數據線處于空閑狀態(1狀態)

(2)當要發送數據時,UART改變TxD數據線的狀態(變為0狀態)并維持1位的時間,這樣接收方檢測到開始位后,在等待1.5位的時間就開始一位一位地檢測數據線的狀態得到所傳輸的數據。

(3)UART一幀中可以有5、6、7或8位的數據,發送方一位一位地改變數據線的狀態將他們發送出去,首先發送低位。

(4)如果使用校驗功能,UART在發送完數據后,還要發送1位校驗位。有兩種校驗方法:奇校驗、偶校驗——數據位連同校驗位中,1的數據等于奇數或偶數。

(5)后,發送停止位,數據線恢復到空閑狀態(1狀態)。停止位的長度有3種:1位、1.5位、2位。

下圖演示了UART使用7個數據位、偶校驗、2個停止位的格式傳輸字符‘A’(二進制值為0b1000001)時,TTL/COM邏輯電平和RS-232邏輯電平對應的波形

TTL/COM邏輯電平

RS-232邏輯電平

用途;

Uart連接PC和開發板,輸出調試信息

實現功能:

用uart2實現與主機PC的通訊,實現數據的發送接收

用到的是GPA1_0和GPA1_1

參數設置: 波特率: 115200 數據位: 8 校驗位: 無 停止位: 1

硬件如何驅動:

1.GPIO GPA1_0 GPA1_1的相關GPIO設置成UART

GPA1CON[0] = 0X2 GPA1_0設置為UART_2_RXD

GPA1CON[1] = 0X2 GPA1_1 設置為UART_2_TXD

2.uart時鐘設置

Exynos4412 UART的時鐘源有八種選擇: XXTI 、XusbXTI 、SCLK_HDMI24M 、SCLK_USBPHY0 、 SCLK_HDMIPHY 、SCLKMPLL_USER_T 、SCLKEPLL 、SCLKVPLL ,由 CLK_SRC_PERIL0 寄存器控制。

選擇好時鐘源后,還可以通過 DIVUART0 ~4設置分頻系數 設置分頻系數 ,由 CLK_DIV_PERIL0 寄存器控制。 從分頻器得到的時鐘被稱為SCLK UART 。 SCLK UART 經過上圖中的“ UCLK Generator”后,得到UCLK ,它的頻率就是UART 的波特率。“ Generator UCLK Generator ”通過這 2個寄存器來設置: UBRDIVn 、UFRACVALn (在下面描述)。

設置波特率 UBRDEVn 、UFRACVALn

SCLK_UART 是100MHZ

我么這里是UART2,所以關于波特率涉及到的寄存器是UBRDEV2和UFRACVAL2

關于波特率和這兩個寄存器之間的計算關系,datasheet寫的很明白:

根據給定的波特率、所選擇時鐘源頻率,可以通過以下公式計算 UBRDIVn 寄存器 (n 為 0~4,對應 5個 UART 通道 )的值。

UBRDIVn = (int)( UART clock / ( buad rate x 16) ) – 1

上式計算出來的 UBRDIVn 寄存器值不一定是整數, UBRDIVn 寄存器取其整數部分,小部分由 UFRACVALn 寄存器設置, UFRACVALn 寄存器的引入,使產生波特率更加精確。

我們這里 UART clock為100MHz,要求波特率為115200 bps,則:

100000000/(115200 x 16) – 1 = 54.25 – 1 = 53.25

UBRDIVn = 整數部分 = 53

UFRACVALn/16 = 小數部分 = 0.25

UFRACVALn = 4

所以設置寄存器 UBRDIV2 = 53 ,UFRACVAL2 = 4

3.設置uart相關參數

ULCON2[8] 紅外線模式還是普通模式 ,我們選擇普通模式 0

ULCON2[1:0] 數據位數 這里我們設置為8bit ,0x3

ULCON2[2] 停止位位數, 我們設置為1bit,0x0

ULCON2[5::3] 校驗位 我們設置為無 0x0

綜上,ULCON2 = 0b11 = 0x03

4.設置uart 收發模式 UCONn

UCON2 [1:0] = 01, 接收 poll模式

UCON2[3:2] = 01, 發送 poll模式

5.關閉發送接收FIFO

UFCON2 [0] = 0 關閉發送接收FIFO

6.沒想到(//TODO?????)

#if 0

// disable AFC

UMCON[4] = 0b0

// RTS active

UMCON[0] = 0b1

7.實現發送數據

發送數據

將要發送的8bit數據放入UTXHn寄存器低8位

UTXH2 = txdata

檢測數據是否發出完成

檢測是否發送完畢,檢測寄存器UTRSTAT2的bit 1是否置1,置1表示發送完成。

發送代碼:

// write fifo

UTXH[0:7] = data;

// wait finish

while (!(UTRSTAT[1] == 0b1));

8.接收數據

將寄存器URXHn的低8位數據取出來。

但是要等到receive buffer data ready,也即是有數據可讀。查看是否有數據可讀可以查看寄存器UTRSTAT2的bit 0,置1表示有數據可讀。

接收代碼:

// wait for data

while (!(UTRSTAT[0] == 0b1));

// read fifo

data = URXH[0:7];

上一篇:什么是"文件表項"

下一篇:Arduino初探

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 久久6免费高清热精品| 亚洲成人精品在线| 亚洲免费电影在线观看| 欧美理论在线观看| 中文字幕不卡在线视频极品| 一区二区中文字幕| 2019中文字幕在线免费观看| 国产成人精品一区| 亚洲精品成人网| 最近2019年好看中文字幕视频| 日韩在线视频国产| 精品亚洲一区二区三区四区五区 | 中文日韩电影网站| 国产精品美女午夜av| 亚洲视频日韩精品| 亚洲欧美在线看| 国内精品久久影院| 亚洲免费视频网站| 夜色77av精品影院| 亚洲xxxxx| 91影视免费在线观看| 国模极品一区二区三区| 国产日韩在线免费| 中文国产亚洲喷潮| 亚洲国产中文字幕在线观看| 欧美国产日韩在线| 亚洲自拍偷拍网址| 欧美精品videosex极品1| 精品久久久国产精品999| 欧美成人国产va精品日本一级| 精品少妇一区二区30p| 亚洲理论在线a中文字幕| 91av视频在线| 日本中文字幕久久看| 色综合色综合久久综合频道88| 亚洲欧美日韩高清| 亚洲国产精品热久久| 亚洲一区二区三区香蕉| 成人性生交xxxxx网站| 一区二区成人av| 亚洲最大福利视频网|