• 沒有找到結果。

串列傳輸介面

N/A
N/A
Protected

Academic year: 2022

Share "串列傳輸介面"

Copied!
26
0
0

加載中.... (立即查看全文)

全文

(1)

第9章

串列傳輸介面

(2)

2

串列埠的硬體特性

† SPCE061A 有兩個串列介面,

z 一個是具有同步時脈的 SIO,

z 另一個是無同步時脈的通用非同步串列介面UART。

† SIO串列設備共用時脈與資料匯流排接腳,其傳輸 訊號包括讀/寫、位址與8位元資料,不同設備間 可以靠著裝置事先定義的位址來識別。

† UART的資料同步是靠起始位元的脈波來完成,當 資料傳送完畢,其後須有停止位元,用來與下一筆 資料的起始位元隔離。SIO與UART接腳皆與

IOB埠接腳共用

(3)

串列埠接腳

(4)

4

SIO 的讀寫操作時序

(5)

非同步串列傳輸格式

(6)

6

串列埠控制的暫存器

$7024H 讀/寫

P_UART_BaudScalarLow

$7022H 讀/寫

P_UART_Command2

$7023H 讀/寫

P_UART_Data

$7024H 讀/寫

P_UART_BaudScalarLow

$7020H P_SIO_Stop 寫

$7021H P_UART_Command1 寫

$701AH 讀/寫

P_SIO_Data

$701FH 讀/寫

P_SIO_Start

$701DH 讀/寫

P_SIO_Addr_High

$701CH 讀/寫

P_SIO_Addr_Mid

$701BH 讀/寫

P_SIO_Addr_Low

$701EH 讀/寫

P_SIO_Ctrl

I/O位址

操作

暫存器名稱

(7)

UART相關暫存器

† P_UART_Command1 (寫) ($7021H) 規劃中斷方式、同位元

† P_UART_Command2 (讀/寫) ($7022H) 狀態

† P_UART_Data(讀/寫)($7023H)

† P_UART_BaudScalarLow(讀/

寫)($7024H) 速率

P_UART_BaudScalarHigh (讀/

(8)

8

P_SIO_Ctrl 暫存器

致能讀/寫框的傳輸功能 (預設值) X

X X

X 0

X X

關閉讀/寫框的傳輸功能 X

X X

X 1

X X

設定資料框傳輸方向為讀取(預設值) X

X X

X X

0 X

設定資料框傳輸方向為寫入 X

X X

X X

1 X

IOB0與IOB1作為通用的 I/O 埠 (預設值) X

X X

X X

X 0

IOB0與IOB1作為SCK與SDA用 X

X X

X X

X 1

資料傳輸速率設為CPUCLK/32 X

X 1

1 X

X X

資料傳輸速率設為CPUCLK/8 X

X 0

1 X

X X

資料傳輸速率設為CPUCLK/4 X

X 1

0 X

X X

資料傳輸速率為CPUCLK/16 (預設值) X

X 0

0 X

X X

串列設備位址為24位元(A0~A23) 1

1 X

X X

X X

串列設備位址為8位元(A0~A7) 0

1 X

X X

X X

無位址設定 1

0 X

X X

X X

串列設備位址為16 位元(A0~A15) (預設值) 0

0 X

X X

X X

Addr_Select Clock_Sel

R/W_EN SIO_Config R/W

功能說明 b0

b1 B3 b2

b4 B5

b7 b6

(9)

P_SIO_Data 暫存器

D0 D1

D2 D3

D4 D5

D6 D7

b0 b1

b2 b3

b4 b5

b6

b7

(10)

10

P_SIO_ Addr 暫存器群

A0 A1

A2 A3

A4 A5

A6 A7

b0 b1

b2 b3

b4 b5

b6 b7

A8 A9

A10 A11

A12 A13

A14 A15

b0 b1

b2 b3

b4 b5

b6 b7

P_SIO_ Addr_Low

P_SIO_Addr_ Mid

P_SIO_Addr_High

A16 A17

A18 A19

A20 A21

A22 A23

b0 b1

b2 b3

b4 b5

b6 b7

(11)

P_SIO_Start /P_SIO_Stop

- -

- -

- -

- Busy

b0 b1

b2 b3

b4 b5

b6 b7

P_SIO_Stop P_SIO_Start

向 P_SIO_Stop暫存器寫入任一數值,可以停止資料傳輸

(12)

12

P_UART_Command1暫存器

關閉奇偶同位檢查功能

0

啟用奇偶同位檢查功能

1

奇同位校檢功能

0

偶同位校檢功能

1

內部重置位元(停用)

0

內部重置位元(啟用)

1

禁止 TxRDY 產生 UART IRQ 中斷

0

允許 TxRDY 產生 UART IRQ 中斷

1

禁止 RxRDY 產生 UART IRQ 中斷

0

允許 RxRDY 產生 UART IRQ 中斷

1

- -

P_Check Parity

-

I_Reset TxIntEn

RxIntEn

功能 b0

b1 b2

b3 b4

b5 b6

b7

(13)

P_UART_Command2暫存器

1:允通發送接腳 0:禁止發送接腳 1:允通接收接腳

0:禁止接收接腳

- -

- -

- -

TxPinEn RxPinEn

b0 b1

b2 b3

b4 b5

b6

b7

(14)

14

UART 錯誤原因及解決方法

改善傳輸條件 傳輸條件差,可能有雜訊干擾

PE (同位元錯誤)

1.提高接收資料的速度 2.降低資料傳輸速度 接收端RX接收資料的速度低於發

送端TX發送資料的速度,導 致RX端資料溢出

OE (溢出錯誤)

1.使用一致的資料格式

2.設置一致的串列傳輸速率 發送接腳 TX 和接收接腳 RX 的

資料幀的格式或串列傳輸速 率不一致

FE (框架錯誤)

解決方法 原因

錯誤類型

(15)

P_UART_Data 暫存器

D0 D1

D2 D3

D4 D5

D6 D7

b0 b1

b2 b3

b4 b5

b6

b7

(16)

16

P_UART_BaudScalar 暫存器群

† UART 串列傳輸速率的計算公式如下:

† Fosc=49.152 / 40.960 / 32.768 MHz時,

傳輸速率Baud= ( Fosc / 4 ) / Scale

† Fosc=24.576 / 20.480 MHz時,

傳輸速率Baud= ( Fosc / 2 ) / Scale

(17)

24.576 / 49.152MHz 常用速率值

57690 213

D5H 00H

57600

51200 240

F0H 00H

51200

48000 256

00H 01H

48000

38400 320

40H 01H

38400

19200 640

80H 02H

19200

9600 1280

00H 05H

9600

4800 2560

00H 0AH

4800

2400 5120

00H 14H

2400

1500 8192

FFH 1FH

1500 (最小值)

實際傳輸速率

(bps) Scale (十進位)

低位元組

($7024H)

高位元組

($7025H)

串列傳輸速率

(bps)

(18)

18

20.48 / 40.96MHz常用速率值

115056 89

59H 115200 (最大 00H

值)

102400 100

64H 00H

102400

57528 178

B2H 00H

57600

51200 200

C8H 00H

51200

48075 213

D5H 00H

48000

40000 256

00H 01H

40000

38352 267

0BH 01H

38400

19212 533

15H 02H

19200

9597 1067

2BH 04H

9600

4801 2133

55H 08H

4800

2400 4267

ABH 10H

2400

1500 6827

ABH 1AH

1500 (最小值)

實際串列傳輸速 率(bps)

Scale (十進位)

低位元組

($7024H)

高位元組

($7025H)

串列傳輸速率

(bps)

(19)

32.768 MHz 常用速率值

57690 142

8EH 00H

57600

51200 160

A0H 00H

51200

47906 171

ABH 00H

48000

38460 213

D5H 00H

38400

19185 427

ABH 01H

19200

9604 853

55H 03H

9600

4799 1707

ABH 06H

4800

2400 3413

55H 0DH

2400

1500 5461

55H 15H

1500 (最小值)

實際串列傳輸速 率(bps)

Scale (十進位)

低位元組

($7024H)

高位元組

($7025H)

串列傳輸速率

(bps)

(20)

20

SPCE061A 與 PC 連接圖

(21)

SPR4096電路圖

(22)

22

UART相關副程式1

void UART_Init() {

char ch;

// 注意: 特殊接腳時仍須設定GPIO暫存器, 否則可能因被強迫pull-high/low而不動作

*P_IOB_Dir=0x0400; // IOB10=output(TX), IOB7=input(RX)

*P_IOB_Attrib=0x0480; // IOB10=not invert, IOB7=float

*P_UART_Command1=0x20; // UART reset, 無同位元

*P_UART_Command1=0x00;

//*P_UART_BaudScalarHigh=0x00; // Baud=115200bps //*P_UART_BaudScalarLow=0x6B;

*P_UART_BaudScalarHigh=0x05; // Baud=9600bps

*P_UART_BaudScalarLow=0x00;

*P_UART_Command2=0x00C0; // 致能RX/TX ch = *P_UART_Data; // 清除緩衝區

}

(23)

UART相關副程式2

char UART_GetByte() {

while( ! (*P_UART_Command2 &

0x0080)) { //等待接收完畢

*P_Watchdog_Clear=C_WDTCL R;

}

return *P_UART_Data;

(24)

24

UART相關副程式3

void UART_SendByte(char ch) {

while( !( *P_UART_Command2 &

0x0040)) { //等待前一次發射完畢

*P_Watchdog_Clear=C_WDTCL R;

}

(25)

uart.h

† void UART_Init();

† char UART_GetByte();

† void UART_GetString(char *);

† void UART_Put_Dec(unsigned int );

† void UART_SendByte(char);

† void UART_SendString(char *);

† void

UART_SendString_no_linefeed(ch

(26)

26

範例

† 利用副程式,兩數相加

† UART 控制LED花樣變化

參考文獻

相關文件

ƒ 提供 Connection Oriented (連結導向) 並達成End-to- End (兩端通訊端點對端點) Process-to-Process (程序對 程序)、Reliable Data Delivery

真實案例 1:哈樂斯娛樂事業與其 真實案例 1:哈樂斯娛樂事業與其 他公司:保護珍貴資料 (續).

private void Page_Load(object sender, System.EventArgs e) {{. string dataSource

private void Page_Load(object sender, System.EventArgs e) {. string dataSource

zSELECT 欄位名稱1, 欄位名稱2, … FROM 資料表名稱 WHERE 條件式 ORDER BY 欄 位名稱 (字串需以單引號 '

… 點選 LinkButton 控制 項的 (DataBindings) 屬性,在自訂繫結

微陣列玻片資料庫 (The Microarray Database,以下簡稱 TMD) 為本研究嘗 試建置的一套提供存取、分析微陣列玻片 (Microarray)

為了讓行動客戶端可以順利地取得所需的資料項,index bucket 必須能夠引 導行動客戶端一步一步的拿到所需的資料項,因此在廣播結構中的