天天看點

ARM_s5pv210_arm_3

ARM_s5pv210_arm_3

序列槽

UART

通用串行異步收發器

串行通信:利用一條資料線将資料一位移位的順序傳送,特點通信線路簡單,成本低,使用長距離傳送。

并行通信:利用多條資料線将資料的各位同時傳送,特點是傳輸速度快,适用短距離傳送。

異步:在一個字元的傳輸時間範圍内保持同步即可。

同步:在資料傳輸過程中,需要一根時鐘線同步,IIC總線,SPI總線。

資料的收發器

發送方 接收方

序列槽通信協定:

起始位:資料開始傳輸的标志,邏輯 0

資料位:主要傳輸的有效資料,5-8bit(5,6,7,8),表示一個字元

奇偶校驗位:在資料位後面加上一位表示校驗位

(1)奇校驗:加上校驗位後保證1的個數為奇數

(2)偶校驗:加上校驗位後保證1的個數為偶數

發送方(奇校驗) 接收方(采用奇校驗校驗)

11100011 0 111000110算校驗位等于0 正确

110000110算校驗位等于1 錯誤

110000010算校驗位等于0 ?(相等) 錯誤

如果接受方按照雙方約定校驗方式計算出的校驗位如果與接收到的校驗位相比較,若相等,接受正确(不一定)

若不相等,肯定接受錯誤

奇偶校驗,隻能校驗出1bit發生錯誤

停止位:表示一個字元資料結束的标志,可以是1bit或者是2bit

空閑位:處于邏輯1,表示目前線路無資料傳送。

序列槽通信協定:

8o1

起始位:0

資料位:8

奇偶校驗位:奇校驗

停止位:1bit

空閑位:

95H 10010101

ARM_s5pv210_arm_3

序列槽通信采用全雙工通信,同一時刻,既可以接收資料,也可以發送資料,由兩根線完成。

接線方式:

ARM_s5pv210_arm_3

2:RXD——接收管腳

3:TXD——發送管腳

5:接地(用作參考電平)

ARM_s5pv210_arm_3

電平轉換:

EIA電平(COM):

邏輯1:-3v~-15v

邏輯0:+3v~+15v

TTL電平(T—PAD):

邏輯1:+2v~+5v

邏輯0:0v~0.8v

發送TTL轉EIA

接收EIA轉TTL

波特率:非常重要的參數,表示資料傳輸的速率。表示每秒鐘傳輸的二進制位的個數。

此處開發闆使用GPA0_0接收,GPA0_1發送

s5pv210處理器中對序列槽收發器:

1.s5pv210 處理器提供了4個獨立的通用串行異步收發器(UART)

2.資料傳輸使用輪詢方式,中斷和DMA方式。

3.采用系統時鐘最大的傳輸速率3Mbps,最常用的是115.2Kbps(115200波特率)

4.每個UART有兩個FIFO(接收FIFO和發送FIFO)

ch0(256bytes)

ch1(64bytes)

ch2~ch3(16bytes)

5.ch0,ch1,ch2支援自動流控。

6.ch0,ch1,ch2,ch3支援紅外發送接收。

7.停止位:1個或者2個

8.支援資料位5位,6位,7位,8位有效寬度

9.支援奇偶校驗。

ARM_s5pv210_arm_3

1.發送器

uart0,ch0(開發闆上的com1)

(1)TXD0:發送管腳,複用GPIO管腳中的GPA0_1

(2)發送緩沖寄存器:用于存放需要發送的資料

大小:非FIFO模式:1個位元組。

FIFO模式:256個位元組(每個UART不同)

(3)發送移位器:發送緩沖寄存器中的資料并不是直接傳送到輸出管腳TXD0上,還必須發送到發送移位寄存器中(Trensmit shifter),然後再由發送移位器通過移位操作,将資料一位一位的發送到TXD0管腳上。

2.接收器

uart0,ch0

(1)RXD0;發送管腳,複用GPIO管腳中的GPA0_0

(2)接收緩沖寄存器:用于存放需要發送的資料

大小:非FIFO模式:1個位元組。

FIFO模式:256個位元組

(3)接收移位器:接收緩沖寄存器中的資料并不是直接放到接收緩沖寄存器中,而是先一位一位的存放到接收移位器中,當接收滿一個位元組後再發送到接受緩沖器中。

3.波特率産生器:

發送移位器和接收移位器對資料的發送和接收都是按照波特率産生器産生的波特率的速度進行資料發送和接收的。

ARM_s5pv210_arm_3

時鐘源:

内部系統時鐘源:PCLK

外部系統時鐘源:SCLK_UART

ARM_s5pv210_arm_3

如果要使水準s5pv210處理器中uart0工作,實際上就是操作對應寄存器(SFRS)

寄存器(SFRS):

UARTn->comx

ULCONn 設定資料格式寄存器

UCONn 序列槽控制寄存器

UTXHn 發送緩沖寄存器

URXHn 接收緩沖寄存器

UTRSTATn 狀态寄存器

UFCONn

UMCONn

UBRDIVn 設定波特率寄存器1

UDIVSLOTn 設定波特率寄存器2

序列槽協定:

起始位:

資料位:

奇偶校驗位:

停止位:

空閑位:

ULCON0寄存器=3 OxE2900000

ARM_s5pv210_arm_3

UCON0 控制寄存器 = 5 0xE2900004

bit[5:0]

ARM_s5pv210_arm_3
ARM_s5pv210_arm_3

bit[10]

ARM_s5pv210_arm_3
ARM_s5pv210_arm_3

1.資料接收模式(輪詢)

2.資料發送模式(輪詢)

3.是否發送暫停位

4.回環模式(正常)

5.時鐘源選擇(PCLK=66.6MHZ)

UTXH0 0xE290_0020

ARM_s5pv210_arm_3

URXH0 0xE290_0024

ARM_s5pv210_arm_3
ARM_s5pv210_arm_3

資料發送和接收都是采用輪詢方式

UTRSTAT0

ARM_s5pv210_arm_3

Receive buffer data ready:

bit[0]:

bit[0]=0,說明接受緩沖寄存器URXH0中還沒有收到資料

bit[0]=1,說明就收緩沖寄存器URXH0中已經有有效資料

如果要讀取接收緩沖寄存器URXH0時,應該判斷狀态寄存器UTRSTAT0的bit的bit[0],隻有bit[0]為1時,才能讀取URXH0寄存器,否則,等待。

Transmit buffer empty

bit[1]:

bit[1]=0,不能向發送緩沖寄存器UTXH0寫資料

bit[1]=1,可以向發送緩沖寄存器UTXH0寫資料

如果要發送資料,首先判斷狀态寄存器UTRSTAT0的bit[1],隻有bit[1]=1時,才能向發送緩沖寄存器UTXH0寫資料,否則,等待。

資料收發模式:輪詢方式,輪詢狀态寄存器的UTRSTAT0的bit[1:0]

發送bit[1]=1,才能寫UTXH0

接收bit[0]=1 , 才能讀URXH0

都是在該bit為1時,才能操作。

波特率:

波特率計算:

ARM_s5pv210_arm_3
ARM_s5pv210_arm_3

PCLK = 66.5MHZ

bps=115200

DIV_VAL = (66500000/(115200*16))-1=35.07855902777777777

DIV_VAL = UBRDIVn + (num of 1’s in UDIVSLOTn)/16

得到:

UBRDIV0=35

(num of 1’s in UDIVSLOTn)/16 = 0.07855902777777777

(num of 1’s in UDIVSLOTn) = 1.256944444444444444444444

對該數取整(舍去小數部分),即UDIVSLOT0寄存器的值的1的個數為1,查表

ARM_s5pv210_arm_3

(上表寫錯了,0x0080應該是0000_0000_1000_0000b)

得到UDIVSLOT0 = 0x0080;

ULCON0 = 3 設定資料格式寄存器

UCON0 = 5 序列槽控制寄存器

UTXH0 發送緩沖寄存器

URXH0 接收緩沖寄存器

UTRSTAT0 狀态寄存器

UFCON0

UMCON0

UBRDIV0 = 35 設定波特率寄存器1 PCLK=66.5MHZ

UDIVSLOT0 = 0x0080 設定波特率寄存器2 bps=115200

資料發送

TPAD發送

PC接收,顯示在螢幕

1.配置管腳

(1)GPA0_0 GPA0_1進行配置

GPA0CON

GPA0PUD

2.配置序列槽

ULCON0 = 3

UCON0 = 5

UFCON0 = 0

UMCON0 = 0

UBRDIV0 = 35

UDIVSLOT0 = 0x0080