1. Trang chủ
  2. » Thể loại khác

Chapter8 TruyenDuLieu GT V2q

98 126 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 98
Dung lượng 2,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chapter8 TruyenDuLieu GT V2q tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực...

Trang 1

CHƯƠNG 8: TRUYỀN DỮ LIỆU

Nội dung của chương này sẽ trình bày về truyền dữ liệu theo hai kiểu: nối tiếp và song song Trong đó, truyền dữ liệu nối tiếp theo hai kiểu đồng bộ và bất đồng bộ phổ biến trong các thiết kế ứng dụng dùng vi điều khiển Đối với PIC18F, nó có một cổng để hỗ trợ truyền

dữ liệu song song

Mục tiêu chính của chương này cho người tham khảo:

 Hiểu rõ về cơ chế truyền dữ liệu nối tiếp

 Hiểu rõ về cơ chế truyền dữ liệu song song ở PORTD của VĐK 18F4550

 Nắm vững chuẩn RS232 trong truyền dữ liệu nối tiếp

 Biết ứng dụng chọn linh kiện chuyên phù hợp dùng trong thiết kế

 Có khả năng thiết kế phần cứng và lập trình ứng dụng theo yêu cầu trong truyền dữ liệu nối tiếp giữa VĐK với VĐK, giữa VĐK với máy tính

Trong chương này sẽ trình bày vấn đề giao tiếp để truyền dữ liệu giữa hai VĐK với nhau, hoặc giữa VĐK với máy tính hay một thiết bị nào đó có các cổng giao tiếp như USART, SPI, SPP, I2C, USB Các kiểu truyền dữ liệu có thể là truyền nối tiếp hay song song và đồng

bộ hay không đồng bộ

Ngày nay, trên máy vi tính có rất nhiều cổng USB, nhưng khoảng cách truyền dữ liệu

qua cổng USB ngắn hơn truyền qua cổng COM (kiểu giao tiếp USART) và hơn nữa nhiều

thiết bị kết nối với máy tính không có cổng USB vật lý Vì vậy, để truyền được dữ liệu giữa cổng USB đến cổng COM, người ta thực hiện một sự chuyển đổi giữa USB sang COM và ngược lại, được gọi là COM ảo

Ngoài ra, còn có các kiểu truyền dữ liệu bằng bus CAN hoặc LIN Đây là hai kiểu giao tiếp truyền dữ liệu nâng cao sẽ không được trình bày chương này

Bảng 8.1: so sánh các kiểu giao tiếp phổ biến trên máy tính

Số thiết bị kết nối (tối đa)

Khoảng cách truyền (tối đa, ft)

Tốc độ truyền (tối đa, bps)

Sử dụng điển hình

RS-232

(TIA-232)

Nối tiếp bất đồng bộ

nhanh hơn với

hệ thống mạch phần cứng)

Modem, truyền dữ liệu

cơ bản RS-485

(TIA-485)

Nối tiếp bất đồng bộ 32 (nâng lên 256 với phần

cứng cụ thể)

điều khiển và thu nhận dữ liệu

mạng máy tính IEEE-1394b

(FireWire 800)

Trang 2

Cổng máy in

song song

bộ

trong VĐK

đồng bộ 127 16 (lên tới 98 ft với 5 hub)

Truyền nối tiếp

Hình 8.1: mô hình truyền dữ liệu nối tiếp và song song

Trong truyền nối tiếp, byte dữ liệu phải được chuyển đổi thành các bit nối tiếp bằng cách

sử dụng một thanh ghi để ghi dịch dữ liệu vào song song – ra nối tiếp Sau đó nó mới được truyền trên đường dữ liệu đơn Như vậy, phía đầu nhận dữ liệu phải có một thanh ghi để ghi dịch dữ liệu vào nối tiếp – ra song song để nhận dữ liệu và “đóng gói” chúng thành 1 byte Truyền dữ liệu nối tiếp dùng hai phương pháp là đồng bộ và bất đồng bộ Phương pháp

đồng bộ truyền một khối dữ liệu (các ký tự) cùng một thời điểm, trong khi phương pháp bất

đồng bộ truyền một byte đơn tại một thời điểm Các hãng sản xuất linh kiện điện tử đã chế tạo ra các vi mạch chuyên dùng để hỗ trợ truyền bất đồng bộ là UART và đồng bộ/bất đồng

bộ là USART PIC18 được xây dựng trên USART

Trang 3

Hình 8.2: mô hình các kiểu truyền dữ liệu nối tiếp

Trong truyền dữ liệu, nếu dữ liệu có thể được gửi đi và nhận thì sử dụng truyền song

công (duplex) Kiểu song công có thể là bán song công (half duplex) hay toàn công (full

duplex), tuỳ thuộc vào dữ liệu gửi và nhận có đồng thời hay không Hình 8.2 mô tả kiểu truyền

nối tiếp đơn công (simplex) và song công

8.1.2 Truyền nối tiếp bất đồng bộ

Dữ liệu đến đầu thu chứa đựng các bit 0 và 1, thật khó để phía đầu thu để nhận biết được

dữ liệu này trừ khi giữa đầu phát và đầu thu thống nhất một tập hợp các quy luật mà nó được gọi là giao thức Giao thức là cách thức mà dữ liệu được đóng gói, có bao nhiêu bit liên tục cho một ký tự và khi nào bắt đầu và dừng

Các bit start và stop (bit bắt đầu và dừng)

Truyền dữ liệu nối tiếp bất đồng bộ được sử dụng phổ biến cho việc truyền định hướng

ký tự Mỗi ký tự được đặt giữa bit start và stop, đây được gọi là thiết lập khung dữ liệu Trong khung dữ liệu, bit start luôn luôn là 1 bit nhưng bit stop có thể là 1 hoặc 2 bit Bit start luôn

luôn là 0 (mức thấp) và bit stop là 1 (mức cao) Hình 8.3 mô tả cấu trúc một dữ liệu để gửi đi

và hình 8.4 để ví dụ gửi đi ký tự “A” có mã ASCII là 0b01000001 và chỉ sử dụng 1 bit stop

Stop bit 2

Stop

Start bit

Gửi đi đầu tiên

Gửi đi cuối cùng

Hình 8.3: cấu trúc một khung dữ liệu để gửi đi

Trang 4

Hình 8.4: gửi đi ký tự “A”

Trong hình 8.4, khi không có sự gửi đi dữ liệu, tín hiệu ở mức cao để đánh dấu (mark)

chờ sẵn sàng để bắt đầu gửi dữ liệu “Space” là khoảch cách truyền giữa các ký tự liên tiếp Đối với bảng mã ASCII chuẩn thì các ký tự có độ dài là 7-bit, và ASCII mở rộng có độ dài

ký tự là 8-bit

Trong một vài hệ thống, bit parity (bit kiểm tra chẵn lẻ) của một byte ký tự được đính

kèm trong khung dữ liệu hợp lệ để duy trì sự toàn vẹn của dữ liệu Điều này có nghĩa là đối

với mỗi ký tự (7-bit hoặc 8-bit) chúng ta có một bit parity đơn thêm vào Bit parity có thể là

lẻ hoặc chẵn Trong trường hợp bit parity lẻ thì tổng số các bit 1 trong các bit dữ liệu, bao gồm cả bit parity, sẽ là lẻ và bit parity lẻ bằng 1 Tương tự, bit parity chẵn thì tổng số các bit

1, bao gồm cả bit parity, sẽ là chẵn Ví dụ, mã ASCII của “A” là 0b0100 0001, sẽ có bit parity chẵn bằng 0 Các vi mạch UART cho phép lập trình chọn parity chẵn, lẻ hoặc không có bit kiểm tra parity

Tốc độ truyền dữ liệu

Tốc độ truyền dữ liệu liệu nối tiếp có đơn vị là bps Mở rộng hơn thuật ngữ được sử dụng cho bps là baud Tuy nhiên, tốc độ baud và bps thì không hoàn toàn tương đương Nguyên do là tốc độ baud là thuật ngữ sử dụng trong modem và nó được định nghĩa là số tín hiệu thay đổi trong một giây Trong các modem, đôi khi một sự thay đổi đơn giản của tín hiệu gửi đi một vài bit của dữ liệu Trong quyển sách này sẽ xem bps và baud như nhau

Tốc độ truyền dữ liệu nối tiếp tuỳ thuộc vào khả năng của cổng truyền trên máy tính, có thể là 100 bps, 1200 bps, 2400 bps, 4800 bps, 9600 bps, …, 56 kbps Khả năng truyền dữ liệu nối tiếp bất đồng bộ có thể lên tới 100 kbps

Các chuẩn RS232

Để cho phép sự tương thích giữa các thiết bị truyển dữ liệu mà nó được sản xuất bởi

nhiều nhà sản xuất khác nhau, một chuẩn giao tiếp được gọi là RS232 được thiết lập bởi hiệp

hội công nghiệp điện tử (EIA) vào năm 1960 Vào năm 1963, nó được bổ sung và được gọi là

RS232A RS232B và RS232C được lưu hành vào năm 1965 và 1969 Ngày nay, RS232 là chuẩn giao tiếp xuất/nhập nối tiếp được sử dụng rộng rãi nhất và chuẩn này cũng được sử dụng trên các máy vi tính

Trong chuẩn RS232, bit 1 được biểu diễn bằng điện thế có giá trị từ -3 V đến -25 V,

và bit 0 có giá trị điện thế từ +3 V đến +25 V Vì nguyên do này, để kết nối bất kỳ RS232

nào đến hệ thống vi điều khiển chúng ta phải sử dụng bộ chuyển đổi điện thế như là MAX232

để chuyển đổi các mức logic TTL sang mức điện thế RS232 và ngược lại

Trang 5

Các chân RS232

RS232 có kiểu đầu kết nối là DB-25 và DB-9 có hình dạng như hình 8.5 và 8.6 DB-25

và DB-9 có hai kiểu đầm cắm là loại đầu kết nối đực có ký hiệu là DB-25P và DB-9P, đầu kết nối cái là DB-25S và DB-9S Ý nghĩa từng chân của DB-25 và DB-9 được giải thích trong bảng 8.2 và 8.3 Tuy nhiên, tất cả các chân trên DB-25 và DB-9 không phải lúc nào cũng sử dụng hết mà tuỳ theo kết nối của hệ thống cụ thể

Hình 8.5: hình chiếu bề mặt của DB-25

Hình 8.6: hình chiếu bề mặt và hai kiểu đầu cắm của DB-9

Bảng 8.2: ký hiệu các chân trên DB-25

Thứ

tự

chân

Ký hiệu

2 TxD Transmitted data Chân gửi dữ liệu đi

4 𝑅𝑇𝑆̅̅̅̅̅ Request to send Yêu cầu gửi dữ liệu

5 𝐶𝑇𝑆̅̅̅̅̅ Clear to send Thực hiện xoá để gửi dữ liệu

6 𝐷𝑆𝑅̅̅̅̅̅̅ Data set ready Xác nhận dữ liệu sẵn sàng

8 𝐷𝐶𝐷̅̅̅̅̅̅ Data carrier detect Phát hiện sóng mang dữ liệu

9-10 Reserved for data testing Dự trữ để kiểm tra dữ liệu

12 Secondary data carrier detect Phát hiện sóng mang dữ liệu lần

hai

Trang 6

13 Secondary clear to send Thực hiện xoá lần hai để gửi dữ

liệu

14 Secondary transmitted data Dữ liệu được gửi lần 2

15 Transmit signal element

timing

Phát đi tín hiệu tinh chỉnh thời gian

16 Secondary received data Dữ liệu nhận được lần 2

17 Receive signal element timing Nhận tín hiệu tinh chỉnh thời

gian

19 Secondary request to send Xác nhận yêu cầu lần 2 để gửi

dữ liệu

20 𝐷𝑇𝑅̅̅̅̅̅̅ Data terminal ready Báo thiết bị sẵn sàng

21 Signal quality detector Phát hiện chất lượng tín hiệu

22 RI Ring indicator Chỉ báo có tín hiệu chuông

23 Data signal rate select Chọn tốc độ dữ liệu

24 Transmit signal element

timing

Phát đi tín hiệu tinh chỉnh thời gian

Bảng 8.3: ký hiệu các chân trên DB-9

Thứ tự chân Ký hiệu chân

Phân loại hệ thống truyền dữ liệu

Thuật ngữ hiện nay để phân biệt thiết bị truyền dữ liệu là DTE (Data Terminal

Equipment – thiết bị đầu cuối dữ liệu) và DCE (Data Communication Equipment – thiết bị

truyền dữ liệu) DTE là các đầu cuối và máy tính để gửi và nhận dữ liệu Trong khi đó DCE

được xem là thiết bị truyền, như là các modem mà nó có nhiệm vụ cho việc truyền dữ liệu

Giải thích các tín hiệu bắt tay RS232

Để bảo đảm việc truyền dữ liện nhanh và tin cậy giữa hai thiết bị, sự truyền dữ liệu phải được phối hợp tốt Chẳng hạn như ở máy in, nó không có đủ bộ nhớ để nhận hết dữ liệu, vì vậy phải có cách thức báo cho thiết bị gửi để dừng việc gửi dữ liệu Có nhiều chân của RS232 được sử dụng cho tín hiệu bắt tay Sự mô tả được trình bày bên dưới chỉ để tham khảo và hiểu thêm, vì chúng không được hỗ trợ cho bộ UART của PIC18

Trang 7

(1) DTR

Khi một thiết bị đầu cuối (hoặc cổng COM máy tính) được mở, nó gửi đi tín hiệu DTR

để chỉ báo rằng nó sẵn sàng cho việc truyền dữ liệu Nếu có vấn đề lỗi với cổng COM, tín hiệu này sẽ không được kích hoạt Tín hiệu DTR tích cực mức thấp để báo cho modem rằng máy tính đang sẵn sàng Đây là một chân ra của DTE và là ngõ vào của modem

(2) DSR

Khi DCE (modem) được mở và sau thời tự kiểm tra hoạt động, nó sẽ xác nhận DSR để thông báo rằng nó sẵn sàng cho truyền dữ liệu Đây là một ngõ ra từ modem (DCE) và

là ngõ vào đối với máy tính (DTE) Nó là tín hiệu tích cực mức thấp Nếu có một nguyên

nhân làm modem không thể kết nối được đường dây điện thoại, tín hiệu này sẽ không được tích cực và thông báo cho máy tính (hay thiết bị đầu cuối) rằng nó không chấp nhận hoặc không thể gửi dữ liệu

(3) RTS

Khi DTE (như máy tính) có một byte để gửi, nó xác nhận RTS tới modem rằng nó một

byte để gửi RTS là ngõ ra tích cực mức thấp từ DTE và là ngõ vào đối với modem

(4) CTS

Đáp lại tín hiệu RTS, khi modem có đủ bộ nhớ để lưu trữ dữ liệu để nhận, nó sẽ gửi đi

tín hiệu CTS tới DTE (máy tính) để chỉ báo nó có thể nhận dữ liệu bây giờ CTS là tín

hiệu vào cho DTE, DTE sử dụng để bắt đầu truyền dữ liệu

(5) DCD

Modem xác nhận tín hiệu DCD để báo cho DTE (máy tính) là có một sóng mang hợp lệ

đã được phát hiện và sự giao tiếp đó giữa nó và modem khác được thiết lập DCD là ngõ

ra của modem và là ngõ vào của DTE

(6) RI

RI là ngõ ra của modem (DCE) và ngõ vào của máy tính (DTE) chỉ báo rằng có tín hiệu

chuông gọi đến từ đường dây điện thoại

Từ các diễn giải trên, sự truyền dữ liệu giữa PC và modem có thể được tóm tắt: trong khi các tín hiệu DTR và DSR được sử dụng bởi PC và modem theo trình tự, để thông báo rằng chúng sẵn sàng hoạt động tốt, đó là RTS và CTS mà chúng điều khiển thất sự lưu lượng của dữ liệu Khi PC muốn gửi dữ liệu nó xác nhận RTS và chờ đáp lại từ modem, nếu modem

có bộ nhớ sẵn sàng thì modem sẽ gửi trả lại CTS Nếu modem có bộ nhớ không đủ, modem không kích hoạt CTS, PC sẽ huỷ xác nhận DTR và sẽ cố gắng thực hiện lại

Trang 8

Cổng COM trên máy tính

Các máy tính tương thích IBM dựa vào họ vi xử lý x86 (8086, 286, 386, 486 và tất cả

dòng Pentium) được trang bị hai cổng COM theo chuẩn RS232, gồm một cổng DB-25 và một

DB-9 Các cổng COM này được đánh số thứ tự là COM 1 và COM 2 Hiện nay (năm 2014),

các máy tính để bàn hay xách tay không còn được trang bị sẵn các cổng COM nữa, thay vào

đó là có nhiều cổng USB Chính vì vậy, để vẫn kết nối được máy tính với thiết bị vẫn sử dụng RS232, buộc phải sử dụng một bộ chuyển đổi là COM-to-USB thì mới truyền dữ liệu giữa một phía là cổng USB và đầu kia là COM được Sự chuyển đổi cổng USB trên máy tính

“thành” cổng COM, ta gọi cổng USB này đang hoạt động dưới dạng COM ảo

Đấu nối giữa hai thiết bị bằng RS232

Sự kết nối đơn giản nhất giữa hai DTE được thực hiện theo hình 8.7, chỉ cần sử dụng 3 chân là TxD, RxD và GND

Hình 8.7: đấu nối giữa hai DTE

Hình 8.8 chỉ dẫn cách đấu nối giữa DTE và DCE trong ứng dụng truyền dữ liệu qua mạng điện thoại công cộng

Hình 8.8: đấu nối giữa DTE và DCE của hệ thống kết nối mạng điện thoại công cộng

8.1.3 Kết nối PIC18 tới RS232

PIC 18F4550 có hai chân hỗ trợ giao tiếp USART là chân TX (chân số 25) và chân RX (chân số 26) Hai chân này tương thích với mức logic TTL, vì thế phải sử dụng vi mạch như

MAX232 để chuyển đổi mức logic cho tương thích với chuẩn RS232

Trang 9

Vi mạch MAX232 của hãng Maxim

IC MAX232 có đến hai bộ thu phát RS232, để hiểu kỹ hơn chúng ta có thể xem đặc

trưng kỹ thuật của nó trên trang web của hãng là www.maxim-ic.com

Hình 8.9: bố trí chân ra của MAX232

Hình 8.10: hướng dẫn nối mạch giữa MAX232, PIC18 và DB-9

Lưu ý trên hình 8.10, chân RX trên MAX232 là hai chân R1OUT và R2OUT, chân TX là T1OUT và T2OUT Các tụ trong mạch gồm C1, C2, C3, C4 có giá trị trong khoảng từ 1 µF đến

22 µF và phải gắn đúng cực tính như hình 8.10

Vi mạch MAX233 của hãng Maxim

IC MAX233 cũng hoạt động giống MAX232 nhưng không cần dùng thêm các tụ trong mạch

Trang 10

Hình 8.11: hướng dẫn nối mạch giữa MAX233, PIC18 và DB-9

8.1.4 EUSART của PIC 18F4550

Khối USART của PIC 18F4550 được gọi là USART tăng cường (EUSART) vì nó có

thêm những đặc trưng: phát hiện tự động tốc độ baud và đo giá trị tốc độ baud, đánh thức tự động nhờ vào sự tiếp nhận gián đoạn Sync và truyền ký tự gián đoạn 12-bit Khối USART của PIC 18F4550 có thể hoạt động với 3 chế độ khác nhau:

Bất đồng bộ (song công) với:

- Đánh thức tự động nhờ vào sự tiếp nhận ký tự

- Đo giá trị tốc độ baud tự động

- Truyền ký tự gián đoạn 12-bit

Đồng bộ - chủ (bán song công) có thể chọn cực tính xung clock

Đồng bộ - tớ (bán song công) có thể chọn cực tính xung clock

Khối USART của PIC 18F4550 có các thanh ghi điều khiển hoạt động của nó:

 Thanh ghi trạng thái phát dữ liệu và điều khiển TXSTA

 Thanh ghi trạng thái nhận dữ liệu và điều khiển RCSTA

 Thanh ghi điều khiển tốc độ baud BAUDCON

Để các chân RC6/TX/CK và RC7/RX/DT/SDO của 18F4550 hoạt động là USART phải cấu hình chúng như sau:

Bit SPEN (RCSTA<7>) = 1

 Bit TRISC<7> = 1

 Bit TRISC<6>:

Trang 11

TRISC<6> = 0: chế độ bất đồng bộ và chế độ đồng bộ - chủ

TRISC<6> = 1: chế độ đồng bộ - tớ

8.1.4.1 Các thanh ghi trong khối EUSART của PIC 18F4550

Thanh ghi TXSTA

Đây là thanh ghi trạng thái phát và điều khiển phát dữ liệu đi

Hình 8.12: thanh ghi TXSTA

Bit 7 – CSRC (Clock Source Select): bit chọn nguồn xung clock

Chế độ bất đồng bộ: không quan tâm

Chế độ đồng bộ:

1 = Chế độ chủ (xung clock được phát từ bên trong từ BRG)

0 = Chế độ tớ (xung clock sử dụng từ nguồn bên ngoài)

Bit 6 – TX9: bit cho phép phát 9-bit

1 = Phát 9-bit

0 = Phát 8-bit

Bit 5 – TXEN: bit cho phép phát đi

1 = Cho phép phát đi

0 = Không cho phép phát đi

Bit 4 – SYNC: bit chọn chế độ hoạt động USART

1 = Chế độ đồng bộ

0 = Chế độ bất đồng bộ

Bit 3 – SENDB: gửi bit ký tự gián đoạn

Chế độ bất đồng bộ:

1 = Gửi gián đoạn Sync trên lần phát kế tiếp (được xoá bằng phần cứng lúc kết thúc)

0 = Sự phát gián đoạn Sync được hoàn thành

Chế độ đồng bộ: không quan tâm

Bit 2 – BRGH: bit chọn tốc baud cao

Chế độ bất đồng bộ:

Trang 12

Bit 0 – TX9D: bit thứ chín của dữ liệu phát đi

Bit này có thể là bit địa chỉ/dữ liệu hay bit parity

Thanh ghi RCSTA

RCSTA là thanh ghi trạng thái nhận và điều khiển nhận dữ liệu

Hình 8.13: thanh ghi RCSTA

Bit 7 – SPEN: bit cho phép cổng nối tiếp

1 = Cổng nối tiếp được cho phép hoạt động

0 = Cổng nối tiếp không được cho phép

Bit 6 – RX9: bit cho phép nhận 9-bit

1 = Nhận 9-bit

0 = Nhận 8-bit

Bit 5 – SREN: bit cho phép nhận đơn lẻ

Chế độ bất đồng bộ: không quan tâm

Trang 13

1 = Cho phép nhận liên tục cho đến khi bit cho phép CREN được xoá (CREN chồng

Chế độ đồng bộ 9-bit (RX9 = 0): không quan tâm

Bit 2 – FERR: bit lỗi khung truyền

1 = Báo lỗi khung truyền (được cập nhật bằng cách đọc thanh ghi RCREG và nhận

byte hợp lệ kế tiếp)

0 = Không xảy ra lỗi

Bit 1 – OERR: bit báo lỗi chạy vượt lố

1 = Lỗi vượt lố (có thể được xoá bằng cách xoá bit CREN)

0 = Không xảy ra lỗi

Bit 0 – RX9D: bit thứ chín của dữ liệu nhận

Bit này có thể là bit địa chỉ/dữ liệu hay bit parity và phải được tính toán bởi phần mềm của người sử dụng

Thanh ghi BAUDCON

BAUDCON là thanh ghi để điều khiển tốc độ baud trong truyền dữ liệu nối tiếp

Hình 8.14: thanh ghi BAUDCON

Bit 7 – ABDOVF: bit trạng thái luân chuyển thu nhận tốc độ baud tự động

1 = Sự luân chuyển BRG đã xảy ra trong suốt chế độ phát hiện tốc độ baud tự động

0 = Không có sự luân chuyển BRG xảy ra

Bit 6 – RCIDL: bit chỉ trạng thái nghỉ (idle) hoạt động nhận

1 = Hoạt động nhận nghỉ

Trang 14

1 = Trạng thái nghỉ cho xung clock là ở mức cao

0 = Trạng thái nghỉ cho xung clock là ở mức thấp

Bit 3 – BRG16: bit cho phép thanh ghi tốc độ baud 16-bit

1 = Cho phép đo lường tốc độ baud dựa vào ký tự kế tiếp Yêu cầu tiếp nhận một

vùng Sync (0x55); được xoá bằng phần cứng lúc hoàn thành

0 = Huỷ bỏ đo tốc độ baud hay đã hoàn thành

Chế độ đồng bộ: không sử dụng

8.1.4.2 Bộ phát tốc độ baud (BRG)

BRG là bộ phát có kích cỡ 8-bit hoặc 16-bit, nó hỗ trợ cho cả hai chế độ bất đồng bộ và đồng bộ Mặc định, BRG hoạt động ở chế độ 8-bit, để hoạt động ở 16-bit ta phải đặt bit BAUDCON<3> = 1

Cặp thanh ghi SPBRGH:SPBRG điều khiển chu kỳ cho bộ định thời chạy tự do Ở bất

đồng bộ, hai bit BRGH (TXSTA<2>) và BRG16 (BAUDCON<3>) cũng để điều khiển tốc độ

baud Trong chế độ đồng bộ, bit BRGH được bỏ qua

Trang 15

Bảng 8.4 chỉ dẫn công thức tính tốc độ baud với các chế độ EUSART khác nhau nhưng

chỉ áp dụng trong chế độ chủ (xung clock được phát sử dụng bên trong) Giá trị n trong

bảng 8.4, ứng với tốc độ baud và FOSC cụ thể sẽ tính được n cụ thể và giá trị n này sẽ được nạp vào cặp thanh ghi SPBRGH:SPBRG Lưu ý, giá trị n là số nguyên gần nhất với n được tính toán

Bảng 8.4: các công thức tính tốc độ baud

Các bit cấu hình Chế độ

BRG/EUSART

Công thức tính baud rate SYNC BRG16 BRGH

Chú thích: x là tuỳ ý; n là giá trị được của cặp thanh ghi SPBRGH:SPBRG

Ví dụ 8.1: với FOSC = 16 MHz, 9600 baud, chế độ bất đồng bộ và BRG 8-bit Tính giá trị sẽ được nạp vào cặp thanh ghi SPBRGH:SPBRG

Tính lại tốc độ baud từ giá trị n = 25:

𝐵𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 16∗106

64(25+1) = 9615 Như vậy sai số:

𝐸𝑟𝑟𝑜𝑟 = (𝐵𝑎𝑢𝑑 𝑡í𝑛ℎ 𝑡𝑜á𝑛−𝐵𝑎𝑢𝑑 𝑚𝑜𝑛𝑔 𝑚𝑢ố𝑛)

𝐸𝑟𝑟𝑜𝑟 = (9615−9600)

9600 ∗ 100% = 0.16%

Trang 16

Bảng 8.5: các tốc độ baud ở bất đồng bộ: SYNC=0, BRGH=0, BRG16=0

Bảng 8.6: các tốc độ baud ở bất đồng bộ: SYNC=0, BRGH=1, BRG16=0

Bảng 8.7: các tốc độ baud ở đồng bộ: SYNC=0, BRGH=0, BRG16=1

Trang 17

đầu tiên Bộ phát và thu của EUSART thì độc lập về hoạt động nhưng dùng chung định dạng

dữ liệu và tốc độ baud Bộ BRG tạo ra xung nhịp, có thể là x16 hoặc x64 cho tốc độ dịch chuyển bit tuỳ thuộc vào các bit BRGH và BRG16 Bit parity không được hỗ trợ bằng phần cứng nhưng được thi hành bằng phần mềm và nó được định vị ở bit dữ liệu thứ 9

Bộ phát bất đồng bộ EUSART

Trọng tâm của bộ phát trong hình 8.16 là thanh ghi dịch dữ liệu nối tiếp phát TSR TSR nhận dữ liệu từ thanh ghi đệm phát có thể đọc/ghi là TXREG, TXREG được nạp dữ liệu bằng phần mềm TSR không được nạp dữ liệu cho đến khi có bit stop

Trước khi TXREG truyền dữ liệu tới TSR (xảy ra trong một chu kỳ T CY), TXREG phải

trống (không có dữ liệu) và bit TXIF (PIR1<4>) được đặt Ngắt này có thể được cho phép

Trang 18

hoặc huỷ bằng cách đặt hay xoá bit cho phép thực hiện ngắt là TXIE (PIE1<4>) TXIF sẽ

được đặt mà không cần chú ý đến trạng thái của TXIE, nó không thể được xoá bằng phần mềm

Bit TRMT (TXSTA<1>) sẽ cho biết trạng thái của TSR, bit này chỉ được đọc và nó được

đặt khi thanh ghi TSR rỗng

Hình 8.16: sơ đồ khối bộ phát EUSART

Để thiết lập truyền bất đồng bộ, ta thực hiện từng bước sau:

(1) Khởi tạo SPBRGH:SPBRG với tốc độ baud tương ứng Đặt hay xoá BRGH và BRG16 theo yêu cầu để nhận được tốc độ baud mong muốn

(2) Cho phép truyền nối tiếp bất đồng bộ bằng cách xoá bit SYNC và đặt bit SPEN (3) Nếu các ngắt cần thì cho phép bit TXIE

(4) Nếu muốn truyền 9-bit, đặt bit TX9 Có thể được sử dụng là bit địa chỉ hay dữ liệu (5) Cho phép phát đi bằng cách đặt bit TXEN mà nó cũng sẽ đặt bit TXIF

(6) Nếu truyền 9-bit, bit thứ 9 sẽ được ghi vào bit TX9D

(7) Nạp dữ liệu vào thanh ghi TXREG để bắt đầu phát đi

(8) Nếu có sử dụng ngắt, hãy chắc chắn rằng các bit GIE và PEIE trong thanh ghi INTCON được đặt

Bộ thu bất đồng bộ EUSART

Bộ thu bất đồng bộ có sơ đồ như hình 8.17, dữ liệu nhận được trên chân RX và đưa dữ liệu vào khối phục hồi dữ liệu Khối này thực chất là thanh ghi dịch tốc độ cao hoạt động gấp

16 lần tốc độ baud

Trang 19

Hình 8.17: sơ đồ khối bộ thu EUSART

(4) Nếu muốn nhận 9-bit, đặt bit RX9

(5) Cho phép tiếp nhận bằng cách đặt bit CREN

(6) Bit cờ RCIF sẽ được đặt khi sự thu nhận hoàn tất và ngắt sẽ được kích hoạt nếu bit cho phép RCIE đã được đặt

(7) Đọc thanh ghi RCSTA để nhận được bit thứ 9 (nếu đã cho phép) và định rõ nếu lỗi

bất kỳ đã xảy ra trong suốt nhận dữ liệu

(8) Đọc 8-bit dữ liệu từ RCREG

(9) Nếu lỗi bất kỳ xảy ra, xoá lỗi bằng cách xoá bit cho phép CREN

(10) Nếu sử dụng ngắt, hãy chắc chắn rằng các bit GIE và PEIE trong thanh ghi INTCON được đặt

8.1.4.4 Chế độ đồng bộ chủ EUSART

Chế độ đồng bộ chủ được thiết lập bằng cách đặt bit CSRC (TXSTA<7>) Ở chế độ này,

dữ liệu được truyền theo kiểu bán song công Chế độ đồng bộ được chọn bằng cách đặt bit

SYNC (TXSTA<4>) Ngoài ra, bit SPEN được đặt phù hợp với cấu hình các chân TX và RX

để trở thành các dòng CK (xung clock) và DT (dữ liệu)

Trang 20

Chế độ chủ cho biết rằng bộ xử lý phát xung clock chủ trên dòng CK Cực tính xung

clock được chọn bằng bit SCKP (BAUDCON<4>) Sự đặt SCKP làm trạng nghỉ trên CK ở

mức cao, trong khi xoá nó làm trạng thái nghỉ ở mức thấp Sự lựa chọn này được cung cấp để

hỗ trợ các thiết bị microwire với khối này

Phát đồng bộ chủ

Phần quan trọng trong khối phát EUSART trong hình 8.16 chính là thanh ghi TSR Cũng tương tự như phát bất đồng bộ, TSR để nạp dữ liệu phát đi

Trước khi TXREG truyền dữ liệu tới TSR (xảy ra trong một chu kỳ T CY), TXREG phải

trống (không có dữ liệu) và bit TXIF (PIR1<4>) được đặt Ngắt này có thể được cho phép hoặc huỷ bằng cách đặt hay xoá bit cho phép thực hiện ngắt là TXIE (PIE1<4>) TXIF sẽ

được đặt mà không cần chú ý đến trạng thái của TXIE, nó không thể được xoá bằng phần

mềm mà sẽ tự trở lại trạng thái ban đầu (reset) khi dữ liệu đã được nạp vào TXREG

Trong khi bit TXIF chỉ trạng thái của TXREG thì bit TRMT (TXSTA<1>) cho biết trạng

thái của TSR Bit TRMT này chỉ được đọc và nó được đặt khi thanh ghi TSR rỗng

(3) Nếu các ngắt cần thì cho phép bit TXIE

(4) Nếu muốn truyền 9-bit, đặt bit TX9

(5) Cho phép phát đi bằng cách đặt bit TXEN

(6) Nếu truyền 9-bit, bit thứ 9 sẽ được ghi vào bit TX9D

(7) Nạp dữ liệu vào thanh ghi TXREG để bắt đầu phát đi

(8) Nếu có sử dụng ngắt, hãy chắc chắn rằng các bit GIE và PEIE trong thanh ghi INTCON được đặt

Thu đồng bộ chủ

Trước khi chế độ đồng bộ được chọn, phần thu được cho phép bằng cách hoặc đặt bit SREN hoặc bit CREN Dữ liệu được lấy mẫu trên chân RX theo tác động cạnh xuống của clock Nếu đặt bit SREN, chỉ từ đơn được nhận Nếu đặt bit CREN, sự nhận dữ liệu là liên tục cho đến CREN được xoá Nếu cả hai bit này đều được đặt, khi đó CREN được chọn ưu tiên

Các bước trình tự thiết lập phần thu đồng bộ chủ:

Trang 21

(1) Khởi tạo SPBRGH:SPBRG với tốc độ baud tương ứng Đặt hay xoá BRG16 theo yêu cầu để nhận được tốc độ baud mong muốn

(2) Cho phép truyền nối tiếp bất đồng bộ chủ bằng cách đặt các bit SYNC, SPEN và CSRC

(3) Bảo đảm các bit CREN, SREN được xoá

(4) Nếu muốn thực hiện ngắt, đặt bit RCIE

(5) Nếu nhận 9-bt, phải đặt bit RX9

(6) Nếu yêu cầu nhận từ đơn, đặt bit SREN, đối với nhận liên tục thì đặt CREN (7) Bit cờ ngắt sẽ được đặt khi sự thu hoàn tất và một ngắt sẽ được kích hoạt nếu bit RCIE được đặt

(8) Đọc thanh ghi RCSTA để lấy bit thứ 9 (nếu đã cho phép) và định rõ nếu có bất kỳ

lỗi xảy ra trong suốt quá trình nhận

(9) Đọc dữ liệu 8-bit từ thanh ghi RCREG

(10) Nếu có bất kỳ lỗi xảy ra, xoá lỗi bằng cách xoá bit CREN

(11) Nếu có sử dụng ngắt, chắc chắn rằng các các bit GIE và PEIE trong thanh ghi INTCON được đặt

8.1.4.5 Chế độ đồng bộ tớ EUSART

Chế độ đồng bộ tớ được bằng cách xoá bit CSRC (TXSTA<7>) Chế độ này khác với chế độ đồng bộ chủ do xung clock được lấy từ bên ngoài tại chân CK (thay vì được cung cấp

từ bên trong như chế độ chủ) Điều này cho phép khối EUSART phát và nhận dữ liệu trong

lúc hoạt động ở bất kỳ chế độ công suất thấp

Phát đồng bộ tớ EUSART

Hoạt động của các chế độ đồng bộ chủ và tớ là giống nhau, ngoại trừ trong trường hợp

của chế độ ngủ Nếu hai từ được ghi vào thanh ghi TXREG và khi đó lệnh SLEEP được thi

hành, quá trình sẽ diễn ra như sau:

(1) Từ (word) sẽ truyền ngay lập tức tới thanh ghi TSR và phát đi

(2) Từ thứ hai sẽ giữ lại trong TXREG

(3) Bit cờ TXIF sẽ không được xoá

(4) Khi từ đầu tiên đã được dịch ra khỏi TSR, thanh ghi TXREG sẽ truyền từ thứ hai tới TSR và lúc này bit TXIF sẽ được đặt

(5) Nếu bit cho phép TXIE được đặt, ngắt sẽ đánh thức VĐK từ chế độ ngủ Nếu ngắt toàn cục được cho phép, chương trình sẽ nhảy tới vector ngắt

Trang 22

Các bước trình tự thiết lập phát đồng bộ tớ:

(1) Cho phép truyền nối tiếp đồng bộ tớ bằng cách đặt bit SYNC và SPEN và xoá bit CSRC

(2) Xoá các bit CREN và SREN

(3) Nếu muốn thực hiện ngắt, hãy đặt bit cho phép TXIE

(4) Nếu muốn phát 9-bit, đặt bit TX9

(5) Cho phép phát đi bằng cách đặt bit TXEN

(6) Nếu phát 9-bit thì bit thứ 9 sẽ được ghi vào bit TX9D

(7) Nạp dữ liệu vào thanh ghi TXREG để bắt đầu phát

(8) Nếu sử dụng ngắt, phải bảo đảm các bit GIE và PEIE trong thanh ghi INTCON được đặt

Thu đồng bộ tớ EUSART

Nếu sự thu nhận dữ liệu được cho phép bằng cách đặt bit CREN trước khi đi vào chế độ ngủ hay nghỉ bất kỳ, sau đó một từ có thể được nhận trong lúc ở chế độ công suất thấp Trước khi một từ được nhận, thanh ghi TSR sẽ truyền dữ liệu tới RCREG, nếu bit RCIE được đặt thì ngắt được kích hoạt sẽ đánh thức VĐK ra khỏi chế độ công suất thấp Nếu ngắt toàn cục được cho phép, chương trình sẽ nhảy tới vector ngắt

Các bước trình tự thiết lập thu đồng bộ tớ:

(1) Cho phép truyền nối tiếp đồng bộ tớ bằng cách đặt bit SYNC và SPEN và xoá bit CSRC

(2) Nếu muốn thực hiện ngắt, hãy đặt bit cho phép RCIE

(3) Nếu muốn nhận 9-bit, đặt bit RX9

(4) Cho phép tiếp nhận bằng cách đặt bit CREN

(5) Bit cờ RCIF sẽ được đặt khi sự tiếp nhận hoàn tất Ngắt sẽ được kích hoạt nếu bit RCIE được đặt

(6) Đọc thanh ghi RCSTA để lấy bit thứ 9 (nếu đã cho phép) và định rõ nếu có bất kỳ

lỗi xảy ra trong suốt thời gian nhận

(7) Đọc dữ liệu 8-bit nhận được từ thanh ghi RCREG

(8) Nếu có lỗi bất kỳ xảy ra, xoá lỗi bằng cách xoá bit CREN

(9) Nếu sử dụng ngắt, phải bảo đảm các bit GIE và PEIE trong thanh ghi INTCON được đặt

Trang 23

8.1.5 Lập trình cổng nối tiếp cho PIC18 bằng C

8.1.5.1 Các hàm hỗ trợ USART trong MPLAB C18

MPLAB C18 hỗ trợ sẵn các hàm thực hiện giao tiếp USART theo bảng 8.10 được chứa

trong thư viện usart.h Cách sử dụng chi tiết các hàm này có thể xem trực tiếp trong “Help”

của MPLAB IDE

Bảng 8.10: các hàm giao tiếp ngoại vi USART trong MPLAB C18

BusyUSART Có phải USART đang phát đi?

CloseUSART Bỏ chức năng USART

DataRdyUSART Có phải dữ liệu sẵn sàng trong bộ nhớ đệm nhận USART?

getcUSART Đọc một byte từ USART

getsUSART Đọc một chuỗi từ USART

OpenUSART Cấu hình USART

putcUSART Ghi một byte tới USART

putsUSART Ghi một chuỗi từ bộ nhớ dữ liệu tới USART

putrsUSART Ghi một chuỗi từ bộ nhớ chương trình tới USART

ReadUSART Đọc một byte từ USART

WriteUSART Ghi một byte tới USART

baudUSART Định các các bit cấu hình tốc độ baud cho EUSART

Hàm OpenUSART

Hàm OpenUSART có cú pháp như sau:

Void OpenUSART(unsigned char config, unsigned int spbrg);

Trang 24

Tốc độ truyền:

USART_BRGH_HIGH Tốc độ baud cao

USART_ BRGH _LOW Tốc độ baud thấp

spbrg: đây là giá trị ghi vào thanh ghi BRG để chỉ rõ tốc độ baud Với F OSC là tần số

dao động và tốc độ baud cụ thể ta sẽ tìm được giá trị spbrg tương ứng, các công thức

tính tốc độ baud như sau:

Ví dụ 8.2: định cấu hình USART của PIC 18F4550 hoạt động ở chế độ bất đồng bộ không sử

dụng ngắt phát và nhận, truyền dữ liệu 8-bit đơn, tần số dao động 20 MHz, tốc độ truyền dữ liệu là 19200 baud, sử dụng tốc độ baud cao

Giải pháp:

Định cấu hình USART theo yêu cầu sử dụng hàm OpenUSART như sau:

OpenUSART( USART_TX_INT_OFF &

USART_RX_INT_OFF &

USART_ASYNCH_MODE &

Trang 25

USART_BRGH_HIGH &

8.1.5.2 Lập trình giao tiếp USART bằng MPLAB C18

Ví dụ 8.3: viết chương trình để gửi thông báo “Connected” đến PC qua cổng COM với tốc

độ 9600 baud, 8-bit dữ liệu và 1 bit stop Quá trình gửi dữ liệu từ VĐK chỉ diễn ra khi PC gửi

đến ký tự cho phép gửi là “T”

(a) Vẽ sơ đồ mạch thiết kế hoàn chỉnh

(b) Viết chương trình điều khiển

Giải pháp:

(a) Sơ đồ mạch thiết kế

Hình 8.23: sơ đồ mạch thiết kế ví dụ 8.3

(b) Chương trình điều khiển

Lưu ý mã ASCII của ký tự “T” là 84 (hay 0x54)

unsigned char Command;

OpenUSART( USART_TX_INT_OFF & // configure USART

USART_RX_INT_OFF &

P1

DB9 5 9 8 7 2 1

Y 4 20MHz

5V

R1 10k

C6 1uF

2

12 9 11

10

13 8

14 7 C1+

C2+

T1OUT

C1 0.1uF

C8 1uF C7

1uF

Trang 26

while (!DataRdyUSART()); // Wait the Rx buffer ready

Command = getcUSART(); // Receive value byte from COMPORT

}

Ví dụ 8.4: viết chương trình để nhận các byte dữ liệu từ máy tính qua cổng COM với tốc độ

9600 baud, 8-bit dữ liệu và 1 bit stop Giá trị các byte dữ liệu nhận được sẽ xuất ra 8 LED được kết nối với PORTB Quá trình nhận dữ liệu diễn ra chỉ khi PC gửi dữ liệu tới

Giải pháp:

/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/

#include<P18F4550.h>

Trang 27

#include<usart.h> // Supported by C18.

#include<delays.h> // Supported by C18

message = getcUSART(); // Receive value byte from COMPORT

PORTB = data_8bit; // Output recieved value to PORTB

Trang 28

Hình 8.24: đường dẫn dữ liệu SPP

8.2.1 Cấu hình SPP

Hoạt động của SPP được điều khiển bằng hai thanh ghi SPPCON và SPPCFG SPPCON điều khiển toàn bộ của cổng song song và xác định nếu nó hoạt động với USB hay điều khiển VĐK SPPCFG điều khiển cấu hình thời gian và các ngõ ra của chân

Cho phép SPP

Để cho phép SPP, đặt bit SPPEN = 1 Ngoài ra, các bit TRIS tương ứng các chân SPP phải được cấu hình hợp lý, ít nhất là:

 Các bit TRISD<7:0> phải đặt bằng 1

 Các bit TRISE<2:1> phải xoá bằng 0

Nếu CK1SPP được sử dụng:

 Bit TRISE<0> phải bằng 0

Nếu CSPP được sử dụng:

 Bit TRISB<4> phải bằng 0

Thanh ghi điều khiển SPPCON

Hình 8.25: thanh ghi điều khiển SPPCON

Bit 7-2 – không sử dụng, đọc bằng 0

Bit 1 – SPPOWN: bit quyền sở hữu SPP

1 = Ngoại vi USB điều khiển SPP

0 = VĐK điều khiển trực tiếp SPP

Bit 0 - SPPEN: bit cho phép SPP

1 = SPP được phép

Trang 29

0 = SPP bị vô hiệu

Thanh ghi cấu hình SPPCFG

Hình 8.26: thanh ghi cấu hình SPPCFG

Bit 7-6 – CLKCFG<1:0>: các bit cấu hình xung clock SPP

1x = CLK1 thay đổi nhờ đọc hoặc ghi của một địa chỉ điểm kết lẻ

CLK2 thay đổi nhờ đọc hoặc ghi của một địa chỉ điểm kết chẵn

01 = CLK1 thay đổi nhờ hoạt động ghi; CLK2 thay đổi theo đọc

00 = CLK1 thay đổi chỉ nhờ vào ghi địa chỉ điểm kết; CLK2 thay đổi theo đọc

và ghi

Bit 5 – CSEN: bit cho phép chân chọn chip SPP

1 = RB4 được điều khiển bởi khối SPP và hoạt động như ngõ ra CS của SPP

0 = RB4 hoạt động như cổng I/O số

Bit 4 – CLK1EN: bit cho phép chân CLK1 của SPP

1 = Chân RE0 được điều khiển bởi khối SPP và hoạt động như ngõ ra CLK1 cho SPP

0 = RE0 hoạt động như cổng I/O số

Bit 3-0 – WS<3:0>: các bit trạng thái chờ SPP

1111 = 30 trạng thái chờ thêm vào

1110 = 28 trạng thái chờ thêm vào

0001 = 2 trạng thái chờ thêm vào

0000 = 0 trạng thái chờ thêm vào

Dữ liệu xung clock

SPP có 4 ngõ ra điều khiển: hai ngõ ra xung clock riêng biệt (CK1SPP và CK2SPP), ngõ ra cho phép (OESPP), chọn chip (CSSPP) Cùng kết hợp với nhau, chúng tạo ra vài cấu hình để điều khiển dòng dữ liệu tới các thiết bị khách (slave devices) Khi tất cả các ngõ ra

điều khiển được sử dụng, có ba chọn lựa chính là:

Trang 30

 CLK1 phát xung clock thông tin địa chỉ điểm kết trong khi CLK2 phát xung clock dữ liệu

 CLK1 phát xung clock các hoạt động ghi trong khi CLK2 phát clock để đọc

 CLK1 phát clock dữ liệu địa chỉ lẻ trong khi CLK2 phát clock dữ liệu địa chỉ chẵn

Các trạng thái chờ

SPP được thiết kế có khả năng để thêm các trạng thái chờ cho các hoạt động đọc và ghi Điều này cho phép sự truy xuất các thiết bị song song mà nó đòi hỏi thời gian cộng thêm cho việc truy xuất

Sự cấp phát xung clock trạng thái chờ được dựa vào nguồn clock dữ liệu Nếu SPP được cấu hình để hoạt động là một điểm kết USB, khi đó các trạng chờ nhờ vào clock USB Ngược lại, nếu SPP được cấu hình hoạt động từ VĐK, khi đó các trạng thái chờ được dựa vào tốc độ

Trang 31

Hình 8.29: giản đồ thời gian cho USB ghi địa chỉ và đọc dữ liệu (4 trạng thái chờ)

8.2.2 Thiết lập điều khiển USB

Khi SPP được cấu hình cho hoạt động USB, dữ liệu có thể được cấp xung clock trực tiếp đến và từ thiết bị ngoại vi USB không có sự can thiệp của VĐK Các bước sau được yêu cầu để thiết lập SPP cho điều khiển USB:

(1) Cấu hình SPP như mong muốn, gồm các trạng thái chờ và xung clock

(2) Đặt bit SPPOWN = 1

(3) Đặt địa chỉ bắt đầu ký hiệu nhận diện bộ đệm (BDnADRL:BDnADRH) tời FFFFh

(4) Đặt bit KEN = 1 sao cho ký hiệu nhận diện được giữ đồng nhất bởi SIE

(5) Đặt bit INCDIS = 1 để vô hiệu sự gia tăng địa chỉ bộ đệm tự động

(6) Đặt bit SPPEN = 1 để cho phép khối SPP

Hình 8.30: truyền dữ liệu giữa USB SIE và SPP

8.2.3 Thiết lập điều khiển VĐK

SPP cũng có thể hoạt động như cổng song song cho VĐK Ở chế độ này, thanh ghi SPPEPS cung cấp trạng thái và điều khiển ghi địa chỉ Dữ liệu được ghi và đọc từ thanh ghi SPPDATA Khi SPP được sở hữu riêng bởi VĐK, xung clock SPP được điều khiển bằng

xung lệnh (F OSC /4)

Các bước được yêu cầu để thiết lập SPP cho hoạt động VĐK:

(1) Cấu hình SPP theo mong muốn, bao hàm các trạng thái chờ và clock

(2) Xoá bit SPPOWN

(3) Đặt bit SPPEN = 1

Trang 32

Ngắt SPP

Khi được sở hữa bằng lõi VĐK, điều khiển có thể phát ra ngắt để lưu ý ứng dụng khi

mỗi hoạt động đọc và ghi hoàn tất Bit cờ ngắt là SPPIF (PIR1<7>) và được cho phép bằng bit SSPIE (PIE1<7>) Nó có thể định mức ưu tiên thấp hay cao bằng bit SSPIP (IPR1<7>)

Ghi tới SPP

Trước khi được cấu hình, việc ghi tới SPP được thực hiện bằng cách chi tới các thanh ghi SPPEPS và SPPDATA Nếu SPP được cấu hình để phát xung clock thông tin địa chỉ điểm kết với dữ liệu, sự ghi tới SPPEPS khởi đầu chu kỳ ghi địa chỉ Ngược lại, sự ghi được bắt đầu bằng cách ghi dữ liệu tới SPPDATA Bit SPPBUSY chỉ trạng thái của các chu kỳ ghi địa chỉ và dữ liệu

Hình 8.31: thanh ghi SPPEPS

Bit 7 – RDSPP: bit trạng thái đọc SPP (chỉ đúng khi SPPCON<SSPOWN> = 1, USB)

1 = Giao dịch lần trước là hoạt động đọc từ SPP

0 = Giao dịch lần trước không phải là hoạt động đọc từ SPP

Bit 6 – WRSPP: bit trạng thái ghi SPP (chỉ đúng khi SPPCON<SSPOWN> = 1, USB)

1 = Giao dịch lần trước là hoạt động ghi từ SPP

0 = Giao dịch lần trước không phải là hoạt động ghi từ SPP

Trang 33

Đọc từ SPP

Sự đọc từ SPP bao hàm đọc thanh ghi SPPDATA Sự đọc thanh ghi lần đầu khởi tạo hoạt động đọc Khi sự đọc được hoàn thành, được chỉ báo bằng bit SPPBUSY, SPPDATA sẽ được nạp dữ liệu hiện hành

USB được phát triển xuất phát bởi Compaq, Microsoft, Intel và NEC, và sau đó có Hewlett-Packard, Lucent và Phillips Các công ty này cuối cùng đã thành lập tập đoàn phi lợi nhuận về hợp nhất chuẩn USB để tổ chức phát triển và phát hành các đặc điểm kỹ thuật USB USB là kiểu giao tiếp nối tiếp tốc độ cao và nó cũng cung cấp nguồn tới các thiết bị

được kết nối với nó Bus USB hỗ trợ tới 127 thiết bị (được giới hạn bằng vùng địa chỉ 7-bit,

lưu ý là địa chỉ 0 không sử dụng mà sẽ có mục đích sử dụng đặc biệt khác) được kết nối thông

qua sợi cáp nối tiếp 4-dây với độ dài có thể lên tới 5 m Nhiều thiết bị USB có thể được kết

nối tới cùng bus với các bộ tập trung (hub), bộ tập trung có thể có 4, 8 hoặc 16 cổng Một

thiết bị có thể được gắn tới một bộ tập trung mà bộ tập trung này có thể được gắn tới bộ tập trung khác Số bộ tập trung tối đa nối với nhau được cho phép là 6 Tuỳ thuộc vào đặc điểm

kỹ thuật, khoảng cách xa nhất của một thiết bị từ máy chủ của nó là khoảng 30 m, được thực hiện bằng sử dụng 5 bộ tập trung Đối với khoảng cách xa hơn nữa cho việc truyền dữ liệu thì

có thể sử dụng phương thức khác để truyền như là Ethernet

8.3.1 Các loại cổng USB

Hiện nay, bus USB có các phiên bản: USB 1.1, USB 2.0, USB 3.0, USB 3.1

Trang 34

USB 1.1

Phiên bản đầu tiên là USB 1.0 được phát hành thang 1/1996, sau đó là USB 1.1 (tháng

8/1998) có hai tốc độ dữ liệu: tốc độ thấp là 1.5 Mb/s, tốc độ đầy đủ là 12 Mb/s

USB 2.0 (tháng 4/2000)

USB 2.0 có ba tốc độ dữ liệu: tốc độ thấp là 1.5 Mb/s, tốc độ đầy đủ là 12 Mb/s và tốc

độ cao là 480 Mb/s Dòng điện tối đa cấp cho thiết bị là 100 mA ở 5 V

USB 2.0 là giao tiếp 4-dây sử dụng hai đầu kết nối là Type-A và Type-B có hình dạng thực tế như hình 8.32 và sắp xếp chân trên hai đầu nối theo hình 8.33 Lưu ý, hai chân Data-

và Data+ được nối với cặp sợi dây được xoắn trong sợi cáp USB

Hình 8.32: hình dạng đầu nối Type-A và Type-B

Hình 8.33: bố trí chân của đầu nối Type-A và Type-B

Bảng 8.11: quy ước chỉ định chân trên đầu nối USB Type-A và Type-B

Trang 35

PIN 1 PIN 5

Hình 8.34: hình dạng đầu nối mini-B USB

Bảng 8.12: quy ước chỉ định chân trên đầu nối mini-B USB

USB 3.1

Được phát hành vào tháng 7/2013 và được ECNs (Engineering Change Notices) chứng

nhận vào tháng 8/2014 Tốc độ dữ liệu đạt tới khái niệm siêu tốc độ là 10 Gb/s, sử dụng đầu nối Type-C USB 3.1 tương thích với USB 3.0 và cũng hỗ trợ tốt cho USB 2.0

Các tín hiệu USB là lưỡng pha (bi-phase), các tín hiệu được gửi từ máy tính chủ sử dụng

kỹ thuật mã hoá dữ liệu NRZI (Non-Return to Zero Inverted) Theo kỹ thuật này, mức tín hiệu

được đảo cho mỗi lần thay đổi tới logic 0, mức tín hiệu đối với logic 1 không bị thay đổi Một bit 0 được chèn vào sau mỗi sáu bit 1 liên tục trong dòng dữ liệu để tạo thành dữ liệu động Hình 8.35 mô tả chuỗi NRZI

Hình 8.35: dữ liệu NRZI

Trang 36

Một gói của dữ liệu được phát bởi máy chủ được gửi đi tới mỗi thiết bị được kết nối tới bus Tất cả các thiết bị nhận tín hiệu, nhưng chỉ duy nhất trong số chúng, thiết bị được định

vị, chấp nhận dữ liệu

Các thiết bị USB được nối tới bus phải là các thiết bị có thủ tục đầy đủ, yêu cầu phần mềm điều khiển thủ tục đầy đủ, hoặc chúng phụ thuộc tới lớp thiết bị Các lớp thiết bị cho phép phần mềm điều khiển thiết bị giống nhau để được sử dụng cho nhiều thiết bị có các chức năng tương tự Ví dụ, máy in có lớp thiết bị 0x07, và hầu hết máy in sử dụng các phần mềm điều khiển cho loại này

Các lớp thiết bị phổ biến nhất được liệt kế trong bảng 8.13 Lớp thiết bị giao tiếp người

dùng USB (HID – Human Interface Device) được quan tâm đặc biệt, khi nó được sử dụng

trong các dự án của chương này

Một số thuật ngữ USB thông thường:

Endpoint: điểm kết là hoặc một nguồn ngoài hoặc nguồn nội của dữ liệu Một thiết

bị USB đơn có thể có một số điểm kết, giới hạn số điểm kết là 16 IN và 16 OUT

Transaction: sự giao dịch là một sự truyền dữ liệu trên bus

Pipe: ống dẫn là một kết nối dữ liệu luận lý giữa máy chủ và một điểm kết

Bảng 8.13: các lớp thiết bị USB

0x01 Thiết bị âm thanh USB Card âm thanh

0x02 Thiết bị truyền thông USB Modem, fax

0x03 Thiết bị giao tiếp USB Bàn phím, chuột

0x08 Thiết bị lưu dữ liệu USB Thẻ nhớ, thẻ nhớ flash

0x09 Thiết bị tập trung USB Các bộ tập trung

0x0B Thiết bị đọc thẻ thông minh USB Đầu đọc thẻ

8.3.2 Nhận dạng tốc độ trên bus

Tại đầu cuối thiết bị của bus, một điện trở kéo lên 1.5 kΩ được nối từ đường D+ hoặc D- tới 3.3 V Trên bus tốc độ đầy đủ, điện trở được nối từ đường D+ tới 3.3 V, và bus tốc độ thấp điện trở được nối từ đường D- tới 3.3 V Khi không có thiết bị nào được gắn vào, máy chủ sẽ xem cả hai đường ở mức thấp Tốc độ của thiết bị sẽ được xác định bằng việc giám sát đường nào được kéo lên mức cao

8.3.3 Các trạng thái USB

Một số trạng thái bus USB là:

Trang 37

Idle: bus ở trạng thái không hoạt động khi đường kéo lên ở mức cao và đường còn

lại ở mức thấp Đây là trạng thái các đường data trước và sau khi truyền một gói

Detached: khi không có thiết bị được kết nối tới bus, máy chủ sẽ xem cả hai đường

data ở mức thấp

Attached: khi một thiết bị được kết nối tới bus, máy chủ phát hiện hoặc D+ hoặc là

D- chuyển lên mức cao, nghĩa là có một thiết bị đã được gắn vào

J state: giống trạng thái idle

K state: đối ngược trạng thái J

SE0: trạng thái bằng 0 được kết thúc đơn lẻ, khi cả hai đường trên bus được kéo

xuống mức thấp

SE1: trạng thái bằng 0 được kết thúc đơn lẻ, khi cả hai đường trên bus ở mức cao

SE1 là điều kiện trái luật trên bus Nó không giờ được ở trạng thái này

Reset: khi máy chủ muốn giao tiếp với một thiết bị trên bus, đầu tiên nó gửi một điều

kiện reset bằng cách kéo xuống cả hai đường (trạng thái SE0) trong tối thiểu 10 ms

EOP: kết thúc trạng thái gói, về cơ bản nó là trạng thái SE0 cho hai lần bit, được theo

sau bởi trạng thái J trong một lần bit

Keep alive: trạng thái đã hoàn tất bởi EOP Trạng thái duy trì còn hoạt động được

gửi tối thiểu một lần mỗi ms để duy trì thiết bị tránh ngưng treo hoạt động

Suspend: được sử dụng để tiết kiệm nguồn, treo hoạt động được thi hành bằng cách

không gửi bất kỳ dữ liệu gì đến thiết bị trong 3 ms Thiết bị bị treo hoạt động chỉ nhận dòng nhỏ hơn 0.5 mA từ bus Để khôi phục lại các tín hiệu nó phải thực hiện reset

Resume: thiết bị bị treo được đánh thức bằng cách đảo ngược cực tính của tín hiệu

trên các đường data trong tối thiểu 20 ms, được theo sau tín hiệu EOP tốc độ thấp

8.3.4 Truyền thông bus USB

USB là một hệ thống kết nối chủ trung tâm, trong đó máy chủ ra lênh sử dụng bus USB Mỗi thiết bị trên bus được chỉ định một địa chỉ USB duy nhất, và không có thiết bị tớ có thể xác nhận một tín hiệu trên bus cho đến khi máy chủ yêu cầu nó Khi một thiết bị USB mới được gắn vào bus, máy chủ USB sử dụng địa chỉ 0 để yêu cầu thông tin cơ bản từ thiết bị Khi đó, máy chủ chỉ định cho nó một địa chỉ USB duy nhất Sau đó, máy chủ đòi hỏi thêm thông tin về thiết bị, chẳng hạn như tên nhà chế tạo, các tính năng, mã nhận dạng thiết bị, sự giao dịch trên bus có thể bắt đầu

Trang 38

8.3.4.1 Các gói

Dữ liệu được truyền bus USB ở dạng gói Một gói bắt đầu với mẫu đồng bộ để cho phép xung clock bộ thu đồng bộ hoá với dữ liệu Các byte dữ liệu theo gói thực hiện kết thúc với một kết thúc của tín hiệu gói

Một byte nhận dạng gói (PID – Packet Identifier) theo sau ngay vùng đồng bộ của mỗi

gói USB PID có độ dài 4 bit Có 17 giá trị PID khác nhau (xem bảng 8.14)

Bảng 8.14: các giá trị PID

IN SOF SETUP

1110 0001

0110 1001

1010 0101

0010 1101

Sự giao dịch từ máy chủ tới thiết bị

Sự giao dịch từ thiết bị tới máy chủ Bắt đầu của khung

Thiết lập lệnh

DATA1 DATA2 MDATA

NAK STALL NYET

Có bốn định dạng gói, được dựa vào PID mà nó ở bắt đầu của gói: các gói báo hiệu

(token packets), các gói dữ liệu, các gói bắt tay (handshake packets) và các gói đặc biệt Hình 8.36 mô tả định dạng gói báo hiệu gồm có OUT, IN, SOF (bắt đầu của khung – Start Of

Frame) và SETUP Gói này chứa địa chỉ 7-bit, ENDP 4-bit (số điểm kết), kiểm tra CRC 5-bit

và EOP

Hình 8.36: gói báo hiệu

Gói dữ liệu sử dụng DATA0, DATA1, DATA2 và MDATA cho giao dịch dữ liệu Định dạng gói này được biểu diễn trong hình 8.37, bao gồm PID, các byte dữ liệu từ 0 – 1024, kiểm tra CRC 2-byte, và EOP

Hình 8.37: gói dữ liệu

Trang 39

8.3.4.2 Các loại luồng dữ liệu

Dữ liệu có thể được truyền theo bốn cách: truyền dung lượng lớn (bulk transfer), truyền ngắt (interrupt transfer), truyền đồng bộ cách ly (isochronous transfer) và truyền có điều khiển (control transfer)

Truyền dung lượng lớn

Kiểu truyền này được thiết kế để truyền khối lượng lớn cho dữ liệu theo kiểu phân phát buông lỗi và không đảm bảo băng thông Nếu một điểm kết OUT được khai báo khi sử dụng cho kiểu truyền này, khi đó máy chủ sẽ truyền dữ liệu tới nó sử dụng giao dịch OUT Tương

tự, nếu điểm kết là IN, khi đó máy chủ sẽ truyền dữ liệu từ nó sử dụng giao dịch IN Kích

thước gói tối đa trong kiểu truyền này là từ 8 đến 64 gói với tốc độ đầy đủ (full speed), và 512 gói ở tốc độ cao (truyền dữ liệu dung lượng lớn không được cho phép với tốc độ thấp)

Truyền ngắt

Kiểu truyền ngắt được sử dụng để truyền khối lượng dữ liệu nhỏ với băng thông cao, trong đó dữ liệu có thể được truyền nhanh tới mức có thể và không xảy ra trễ Lưu ý rằng kiểu truyền này không ảnh hưởng gì tới các ngắt của hệ thống máy tính Các gói ngắt có thể sắp xếp theo kích cỡ từ 1 đến 8 byte ở tốc độ thấp, từ 1 tới 64 byte ở tốc độ đầy đủ, và mở rộng tới 1024 byte cho tốc độ cao

1024 byte cho tốc độ cao (không hỗ trợ tốc độ thấp)

Truyền có điều khiển

Đây là kiểu truyền dữ liệu song hướng, sử dụng cả hai điểm kết IN và OUT Truyền có điều khiển tổng thể dùng cấu hình ban đầu của thiết bị bởi máy chủ Kích thước gói tối đa cho tốc độ thấp là 8 byte, 8 đến 64 byte cho tốc độ đầy đủ và 64 byte cho tốc độ cao Kiểu truyền

có điều khiển được thực hiện trong ba khâu: SETUP, DATA, STATUS

Trang 40

8.3.4.3 Sự liệt kê

Khi một thiết bị được gắn vào bus USB, nó nhận biết máy chủ nhờ một quy trình được

gọi là sự liệt kê (enumeration) Các bước của liệt kê là:

 Khi một thiết bị được gắn vào, máy chủ trở nên nhận biết nó là do một trong các

đường (D+ hoặc D-) trở thành mức cao

 Máy chủ gửi tín hiệu reset USB đến thiết bị để đặt thiết bị trong thái xác định Thiết

bị reset đáp ứng đối với địa chỉ 0

 Máy chủ gửi yêu cầu thông qua địa chỉ 0 tới thiết bị để phát hiện ra kích thước gói tối

đa của nó sử dụng lệnh Get Descriptor

 Thiết bị phản ứng bằng cách gửi một phần nhỏ của ký hiệu thiết bị

 Máy chủ gửi một reset USB lần nữa

Máy chủ chỉ định một địa chỉ duy nhất tới thiết bị và gửi một yêu cầu Set Address tới

thiết bị Tại vị trí này máy chủ sẽ rỗi để reset bất kỳ thiết bị khác mới hơn được gắn vào bus USB

Máy chủ gửi một yêu cầu Get Device Descriptor để lấy lại ký hiệu thiết bị trọn vẹn,

tập hợp thông tin như là nhà sản xuất, loại thiết bị và kích thước gói điều khiển tối

đa

Máy chủ gửi một yêu cầu Get Configuration Descriptors để nhận dữ liệu về cấu hình

của thiết bị, như là các yêu cầu công suất, các kiểu và số lượng giao tiếp được hỗ trợ

 Máy chủ có thể yêu cầu các ký hiệu bổ sung từ thiết bị

Sự truyền dữ liệu ban đầu giữa máy chủ và thiết bị được tiến hành bằng cách sử dụng kiểu truyền điều khiển của luồng dữ liệu Ban đầu, thiết bị được định địa chỉ, nhưng nó ở trạng thái chưa được cấu hình Sau đó máy chủ tập hợp đủ thông ti về thiết bị, nó nạp phần

mềm điều khiển thiết bị phù hợp mà nó cấu hình thiết bị bằng cách gửi yêu cầu Set

Configuration Tại thời điểm này, thiết bị đã được cấu hình và nó sẵn sàng đáp ứng đối với

các yêu cầu định rõ cho thiết bị, chẳng hạn nó có thể nhận và gửi dữ liệu tới máy chủ

8.3.5 Các loại ký kiệu mô tả

Tất cả các thiết bị USB có một sự phân cấp các ký hiệu mà nó mô tả nhiều loại đặc trưng của thiết bị: mã nhận dạng nhà sản xuất, phiên bản của thiết bị, phiên bản của USB mà nó hỗ trợ, thiết bị gì, các yêu cầu công suất, số và loại các điểm kết, …

Các ký hiệu USB phổ biến là: các ký hiệu thiết bị, các ký hiệu cấu hình, các ký hiệu giao tiếp, các ký hiệu HID, các ký hiệu điểm kết Các ký hiệu trong cấu trúc phân cấp theo hình 8.39

Ngày đăng: 21/12/2017, 12:19

TỪ KHÓA LIÊN QUAN

w