RF Data Communications With PIC

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

Sun Technologies WwW.suno.

vn Chia sẽ = Phát triển

RF Data Communications with PIC


Lập trình và ứng dụng với PIC

--- 1 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

MỤC LỤC

I. Giới thiệu về mã Manchester ......................................................................................4


I.1. Giới thiệu..........................................................................................................................................4
I.2. Ứng dụng:.........................................................................................................................................4
II. Mạch thu phát RF......................................................................................................4
II.1. Mạch phát RF..................................................................................................................................4
II.2. Mạch thu RF...................................................................................................................................4
II.3. Truyền dữ liệu không dây...............................................................................................................4
II.4. Một số mạch thu phát RF................................................................................................................5
III. Mã hóa Manchester..................................................................................................6
IV. Giải mã Manchester .................................................................................................8
V. Lập trình mã hóa Manchester ......................................................................................9
V.1. Giải thuật........................................................................................................................................9
V.1.1. Mã hóa theo thứ tự bit..............................................................................................................9
V.1.2. Mã hóa vị trí bit chẵn lẻ.........................................................................................................10
V.2. Tối ưu giải thuật............................................................................................................................10
V.2.1. Mã hóa theo thứ tự bit............................................................................................................10
V.2.2. Mã hóa vị trí bit chẵn lẻ.........................................................................................................11
V.3. Lập trình.......................................................................................................................................12
V.3.1. Mã hóa theo thứ tự bit............................................................................................................12
V.3.2. Mã hóa vị trí bit chẵn lẻ.........................................................................................................13
V.3.3. Thiết lập Transmitter:............................................................................................................14
VI. Lập trình giải mã Manchester...................................................................................16
VI.1. Giải thuật.....................................................................................................................................16
VI.2. Tối ưu giải thuật..........................................................................................................................16
VI.2.1. Đặc điểm mã Manchester.....................................................................................................16
VI.2.2. Vi phạm mã Manchester.......................................................................................................17
VI.2.3. Giải thuật giải mã theo 1 cạnh..............................................................................................17
VI.2.4. Tối ưu và hiện thực...............................................................................................................19
VI.3. Lập trình......................................................................................................................................19
VI.3.1. Các điều kiện khởi đầu ........................................................................................................19
VI.3.2. Thiết lập Receiver................................................................................................................20
VI.3.3. Giải mã theo thứ tự bit..........................................................................................................22
VI.3.4. Giải mã theo vị trí bit chẵn lẻ...............................................................................................23
VII. Truyền nhận dữ liệu..............................................................................................24
VII.1. Khung truyền.............................................................................................................................24
VII.2. Truyền dữ liệu............................................................................................................................24
VII.2.1. Initialization........................................................................................................................24
VII.2.2. Preamble Byte.....................................................................................................................25
VII.2.3. Header.................................................................................................................................25
VII.2.4. Body....................................................................................................................................26

--- 2 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VII.2.5. CRCByte.............................................................................................................................26
VII.2.6. Stop Byte.............................................................................................................................26
VII.3. Tốc độ truyền nhận....................................................................................................................27
VII.4. Nhận dữ liệu...............................................................................................................................27
VII.4.1. Cơ chế ngắt.........................................................................................................................27
VII.4.2. Cơ chế polling.....................................................................................................................28
VIII. Ứng dụng trên PIC..............................................................................................29
VIII.1. Transmitter................................................................................................................................29
VIII.2. Receiver....................................................................................................................................32

--- 3 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

I. Giới thiệu về mã Manchester


I.1. Giới thiệu
o Mã hóa Manchester là một phương pháp mã hóa các bit dữ liệu sử dụng trong
việc truyền các tín hiệu dạng số. Đây là phương pháp mã hóa các bit dữ liệu 1,0
thành các chuổi tín hiệu có mức tín hiệu thay đổi liên tục dù dãy bit dữ liệu là 1 hoặc
0 liên tiếp. Do đó, ưu điểm của mã hóa Manchester là dễ dàng tạo sự tự đồng bộ
giữa bên phát và bên nhận.
I.2. Ứng dụng:
o Đây là phương pháp sử dụng rộng rãi trong lĩnh vực truyền thông vô tuyến, hữu
tuyến, Ethernet,…
o Trong lĩnh vực truyền thông điều khiển sử dụng vi điều khiển, mã Manchester dễ
hiện thực để lập trình cùng với khả năng phát hiện lỗi khi phát hiện có vi phạm mã.

II. Mạch thu phát RF


II.1. Mạch phát RF
o Thường dùng là loại module phát OOK(On/Off keyring) và ASK(Điều biên) để
chuyển các tín hiệu dạng số 1 và 0 thành trạng thái có hoặc không có tín hiệu ở
phần mạch thu.

Tín hiệu On/Off


o Ăngten phát giúp làm tăng khả năng phát xa các tín hiệu ra môi trường. Được
thiết kế hợp lý tương ứng với tần số hoạt đang hoạt động.
II.2. Mạch thu RF
o Sử dụng để thu lại các tín hiệu từ mạch phát, biến các trạng thái phát hay không
phát thành dạng số 1 hoặc 0.
o Nguyên tắc khi mạch thu rảnh không nhận dữ liệu từ mạch phát thì mạch vẫn có
thể thu các tín hiệu nhiễu môi trường làm cho output của nó có những tín hiệu 1,0
không xác định. Hoặc trong quá trình phát có 1 chuỗi dài bit 1 hoặc 0 liên tục.
o Để loại bỏ các nhiễu môi trường phía mạch phát cần phát 1 chuỗi tín hiệu liên tục
trong khoảng thời gian(tùy vào mạch thu, thường 25ms) trước khi chính thức phát
dữ liệu, điều này sẽ đảm bảo mạch thu thu đúng dữ liệu từ phía mạch phát. Đây là
bước cần thiết để chỉnh lại độ lợi(Gain) cho bộ thu trước khi hoạt động.
o Độ nhạy của mạch thu cũng phụ thuộc rất nhiều vào Ăngten.
o Chú ý: việc sử dụng chức năng interrupt hay sử dụng polling để giải mã băng vi
điều khiển phụ thuộc vào hiệu quả thiết kế giải thuật mã hóa, giải mã.
II.3. Truyền dữ liệu không dây
o Xác định khoảng cách cần truyền để tính toán công suất của mạch thu phát.
o Kiểm tra tốc độ tối đa(data baud rate) mà mạch thu phát có thể đáp ứng đảm bảo
timing của các bit được truyền nhận đúng.

--- 4 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

o Chọn giải thuật mã hóa và giải mã hợp lý để tránh các tác động từ nhiễu và đảm
bảo việc thu phát dữ liệu đạt hiệu quả sử dụng băng thông tối đa.
II.4. Một số mạch thu phát RF
o Mạch phát RF FS1000A

o Mạch phát RF PCDTXA-1

o Mạch thu RF PCR1A

--- 5 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

o Mạch thu RF RX8

III. Mã hóa Manchester


o Phương pháp mã hóa Manchester theo nguyên tắc sau:
 Mỗi bit sẽ có một khoảng thời gian truyền cố định.
 Dữ liệu được xác định vào thời khoảng giữa của bit.
 Mức 1 biểu diễn Low-to-High, mức 0 biểu diễn High-to-Low(hoặc ngược lại
tùy theo quy ước đảo mã Manchester).

Mã hóa theo Manchester

--- 6 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

o Có thể biểu diễn dưới dạng bảng XOR

o Hiện thực bằng cổng XOR

Mã hóa Manchester là kết quả XOR gữa dữ liệu và xung clock


o Mã hóa bit:

Các quy ước mã hóa


o Khả năng tự đồng bộ:

--- 7 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Các setup point đồng bộ


o Ví dụ mã hóa chuỗi 00110111011 được kết quả 1010011010010101100101 như
sau:

Kết quả dạng xung clock

IV. Giải mã Manchester


o Thực hiện ngược lại việc mã hóa các bit dữ liệu.
o Khi có chuyển mức High-to-Low gữa chu kì bit thì đó là dữ liệu bit 0 và chuyển
mức Low-to-High giữa chu kì bit thì đó là dữ liệu bit 1(tùy quy ước mã hóa giải mã).
o Sử dụng phép XOR để thực hiện việc giải mã

Thực hiện phép XOR để giải mã Manchester


o Giải pháp analog

--- 8 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Giải mã hiện thực bằng mạch analog


o Ví dụ giải mã 1 tín hiệu Manchester 1010011010010101100101 được kết quả
00110111011 như sau:

Kết quả dạng xung clock

V. Lập trình mã hóa Manchester


V.1.Giải thuật
V.1.1. Mã hóa theo thứ tự bit
 Thực hiện mã hóa 8 bits theo đúng thứ tự từ LSB  MSB.
 Kết quả sau mã hóa 4 bits thấp thanh 1 Byte và 4 bits cao thành 1 Byte.
 Áp dụng quy tắc mã hóa cho từng bit:
 0  10
 1  01
 Ví dụ:

--- 9 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

 Kết quả:

V.1.2. Mã hóa vị trí bit chẵn lẻ


 Áp dụng quy tắc mã hóa Manchester cho 1 byte dữ liệu kết quả sẽ thu được 2
Byte(1 Word) dữ liệu mã hóa.
 Để mã hóa 1 bit dữ liệu theo mã Manchester, đơn giản là việc nhân đôi thành
2 bit và thực hiện phép XOR với 2 bit 10(xem như là clock).
 Ví dụ Byte 00110101, nhân đôi các Bit ta được 0000111100110011, sau đó
XOR với chuỗi 1010101010101010(clock) kết quả sẽ được chuỗi mã hóa
0101101001100110.

0000111100110011
XOR 1010101010101010
= 1010010101011001
 Ví dụ:

 Kết quả:

V.2.Tối ưu giải thuật


V.2.1. Mã hóa theo thứ tự bit
 Thực hiện nhân đôi vị trí các bits của 4 bits thấp(hoặc cao), sau đó thực hiện
phép XOR với chuỗi 0xAA thu được 1 Byte mã hóa Manchester.
 Ví dụ mã hóa 4 bits thấp:

Byte dữ liệu ban đầu.

--- 10 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Mã hóa cho 4 bits thấp.

Chuyển vị trí các bits.

Nhân đôi mỗi bit.

Thực hiện XOR với 0xAA để được kết quả.


 Tương tự cho 4 bits cao, bằng cách sử dụng phép dịch phải 4 bits:

Byte dữ liệu ban đầu.

Dịch phải 4 bits rồi thực hiện giống 4 bits thấp.


V.2.2. Mã hóa vị trí bit chẵn lẻ
 Việc nhân đôi số Bit của 1 Byte dữ liệu theo cách này sẽ thực hiện khó khăn.
Do đó, thay vì nhân đôi các Bit theo đúng thứ tự 07 thì thực hiện việc tách,
chuyển vi trí sang 2 Byte(Byte cao chứa Bit lẻ, Byte thấp chứa Bit lẻ) sau đó
nhân đôi các Bit bằng phép dịch Bit.

--- 11 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Tách các Bit chẵn và lẽ.

Xây dựng Byte cao-thấp và thực hiện việc dịch bit.

OR các Bit để được 1 Word.

Cuối cùng thực hiện XOR với 0xAAAA.


V.3.Lập trình
V.3.1. Mã hóa theo thứ tự bit
V.3.1.1. Thực hiện từng Byte:
 Mã hóa 4 bits thấp:

--- 12 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

 Mã hóa 4 bits cao:

V.3.1.2. Thực hiện trên chuỗi:

V.3.2. Mã hóa vị trí bit chẵn lẻ


V.3.2.1. Thực hiện từng Byte
 Mã hóa 4 Bit lẻ

 Mã hóa 4 Bit chẵn

V.3.2.2. Thự hiện trên 2 Byte


 Mã hóa cho 1 Byte

--- 13 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

V.3.3. Thiết lập Transmitter:


V.3.3.1. Tính toán timing
 Sử dụng ngắt timer làm chức năng truyền bit dữ liệu.
 Thời gian định thời hay tốc độ truyền được tính bằng cách thiết lập giá trị
trong bộ đếm của timer.

 Có thể thay đổi tốc độ truyền nhận RF bằng cách tính toán lại các giá trị
timing:

--- 14 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

V.3.3.2. Phát dữ liệu


 Khởi động interrupt của timer

 Xử lý trong ngắt timer

 Thực hiện phát từng bit dữ liệu trong bộ đệm cho đến hết

--- 15 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VI. Lập trình giải mã Manchester


VI.1. Giải thuật
 Về nguyên tắc việc giải mã cứ mỗi 2 bits theo quy tắc 011 và 100, tương
đương với việc thực hiện phép XOR giữa cặp Bit 10 hay 01 với 2 Bit 10(xem
như clock).

 Áp dụng cho 2 Byte dữ liệu Manchester bằng phép XOR với 2 Byte clock
0xAAAA sẽ thu được 1 Byte dữ liệu.
 Ví dụ chuỗi 2 Byte dữ liệu Manchester là 0101101001100110, thực hiện phép
XOR với 2 Byte 1010101010101010 sẽ thu được kết quả 2 Byte là
1111000011001100, cuối cùng được kết quả 1 Byte dữ liệu là 11001010.

Chuỗi Manchester ban đầu.

Xung clock 0xAAAA.

Kết quả phép XOR với clock.

Dữ liệu thu được.


VI.2. Tối ưu giải thuật
VI.2.1. Đặc điểm mã Manchester
 Mã Manchester sử dụng băng thông gấp đôi tốc độ truyền dữ liệu, có
nghĩa là xung clock có tần số gấp 2 lần tốc độ truyền data.
 Luôn có sự thay đổi trạng thái 10 hoặc 01 vào khoảng giữa của chu kì
Bit dữ liệu
 Do đó mã Manchester có thể thực hiện việc tái đồng bộ xung clock sau
mỗi Bit dữ liệu cũng như không tạo ta một chuỗi Bit không đổi trên đường
truyền.

--- 16 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VI.2.2. Vi phạm mã Manchester


 Theo quy tắc mã hóa 101 và 010 có nghĩa là luôn có thay đổi mức tín
hiệu trong khoảng thời gian không nhỏ hơn độ dài 1/2 Bit dữ liệu cũng như
không lớn hơn 1 Bit dữ liệu.
 Nếu xét theo 1 cạnh 01 hoặc 01 thì việc xảy ra việc chuyển mức này
không nhỏ hơn độ dài 1 Bit dữ liệu và không lớn hơn 2 lần độ dài bit dữ liệu.
 Nếu có sự vi phạm nguyên tắc trên có nghĩa là đường truyền đã bị nhiễu
và việc giải mã Manchester sẽ cho kết quả sai.
 Chú ý: dựa vào đặc điểm này của mã Manchester để tạo Start Bit và Stop
Bit cho 1 khung truyền. Và cũng dựa vào đặc điểm này để cho phép sử dụng
interrupt một cách hiệu quả.
VI.2.3. Giải thuật giải mã theo 1 cạnh
 Dựa vào đặc điểm của mã Manchester thì việc giải mã có thể thực hiện
bằng việc kiểm tra mỗi khi có sự chuyển mức 10 hay 01 của tín hiệu và
xác định độ dài của từng bit tín hiệu đó.
 Để giảm thiểu việc thực hiện kiểm tra sự thay đổi mức liên lục 1 cách
không cần thiết thì giải thuật giải mã Manchster có thể chỉ cần kiểm tra sự
thay đổi của xung tín hiệu bởi 1 cạnh lên hoặc xuống.
 Về nguyên tắc chỉ có duy nhất 1 trong 3 trường hợp xảy ra với độ dài 1
cạnh lên của xung tín hiệu đã mã hóa Manchester như sau:

Độ dài 2 cạnh lên liên tiếp bằng độ dài 1 bit dữ liệu,


xảy ra trong trường hợp dữ liệu là 1111.

Độ dài 2 cạnh lên liên tiếp bằng 1.5 lần độ dài 1 bit dữ liệu,
xảy ra trong trường hợp dữ liệu là 1001.

Độ dài 2 cạnh lên liên tiếp bằng 2 lần độ dài 1 bit dữ liệu,
xảy ra trong trường hợp dữ liệu là 1010.
 Vị trí xảy ra cạnh lên hoặc xuống có thể vào giữa(Middle) hoặc cuối(End)
thời khoảng của 1 Bit dữ liệu.

--- 17 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Vị trí của xung tín hiệu cạnh lên.


 Dựa vào 2 nguyên tắc trên ta sẽ xây dựng được bảng các trạng thái và dữ
liệu thu được như sau:
Input Output
Độ dài 2 Vị trí cạnh lên Giá trị Giá trị giải mã Số Bit decode
cạnh lên xảy ra decoded kế tiếp được
1 Bit Khoảng giữa 0 Chưa xác định 1
1 Bit Cuối 1 Chưa xác định 1
1.5 Bits Khoảng giữa 1 0 2
1.5 Bits Cuối 1 Chưa xác định 1
2 Bits Khoảng giữa 1 0 2
Bảng giải mã theo cạnh lên
 Với quy tắc xây dựng như trên sẽ có 3 trường hợp:
- Thời gian chấp nhận 1 Bit là 0.75Bit <= Thời gian cho 1 bit <1.25Bit
- Thời gian chấp nhận 1.5 Bit là 1.25Bit <= Thời gian cho 1.5 bit <1.75Bit
- Thời gian chấp nhận 2 Bit là 1.75Bit <= Thời gian cho 2 bit <2.25Bit
 Chú ý: Các giá trị thời gian nằm ngoài 3 khoảng trên là vi phạm mã
Manchester xem như là nhiễu hoặc lỗi đường truyền. Dựa vào đặc điểm này
để tạo Start Bit và Stop Bit cho khung truyền.
 Cách xác định vị trí cạnh xung của tín hiệu, dựa vào độ dài 2 cạnh lên liên
tiếp.

Độ dài 2 cạnh lên Vị trí cạnh lên xảy ra


1 Bit Không đổi(E hoặc M)
1.5 Bits Thay đổi(EM hoặc ME)
2 Bits Luôn giữa(M)
 Ví dụ có 1 xung tín hiệu Manchester như sau:

 Bằng giải thuật sử dụng cạnh lên như trên với trạng thái bắt đầu là cạnh
lên tại Middle của Bit dữ liệu:

 Lần lược các bước giải mã ta có:

--- 18 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Dữ liệu cuối cùng thu được.


VI.2.4. Tối ưu và hiện thực
VI.2.4.1. Giải mã theo thứ tự bit
 Việc giải mã trực tiếp 4 bits cao và 4 bits thấp vào 1 byte kết quả.
VI.2.4.2. Giải mã theo vị trí bit chẵn lẻ
 Ngược lại quá trình mã hóa 4 Bit chẵn và 4 Bit lẽ, việc giải mã sẽ thực hiện
quá trình ngược lại.
 Sử dụng bộ đệm là chuỗi Byte 8 bit thay cho chuỗi Word 16 bit.
VI.3. Lập trình
VI.3.1. Các điều kiện khởi đầu
 Khai báo bộ đệm dữ liệu

 Điều kiện bắt đầu giải mã(sau khi xác định Start Bit)

--- 19 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

 Trong quá trình giải mã biến đếm ManBuffCounter sử dụng 3 bits thấp để lưu
vị trí bits được giải mã, và 5 bits cao để xác định vị trí Byte đang lưu trong bộ
đệm MandataBuff. Như vậy, sau mỗi Byte giải mã được cần thự hiện bước xóa
Byte tiếp theo trong bộ đệm về 0.

VI.3.2. Thiết lập Receiver
VI.3.2.1. Tính toán timing
 Sử dụng timer để xác định thời khoảng các bit phục vụ cho quá trình giải
mã dữ liệu.
 Các giá trị tính toán tương ứng với phần phát

 Có thể thay đổi tốc độ truyền nhận RF bằng cách tính toán lại các giá trị
timing:

VI.3.2.2. Nhận dữ liệu


 Sử dụng ngắt ngoài hoặc vòng lặp polling để thực hiện việc đo thời
khoảng bit nhận được.
 Sử dụng ngắt ngoài cạnh lên để bắt đầu cho việc kiểm tra:

--- 20 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Thiết lập ngắt ngoài và timer cho quá trình giải mã

Sử dụng ngắt ngoài cùng giá trị đo được của timer để giải mã

--- 21 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Hoặc dùng polling thay cho ngắt ngoài


VI.3.3. Giải mã theo thứ tự bit
 Trường hợp độ dài 2 cạnh lên là 1 Bit:

 Trường hợp độ dài 2 cạnh lên là 1.5 Bits:

 Trường hợp độ dài 2 cạnh lên là 2 Bits:

 Dữ liệu đã được giải mã trực tiếp vào bộ đệm.


 Kiểm tra CRC:

--- 22 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VI.3.4. Giải mã theo vị trí bit chẵn lẻ


 Trường hợp độ dài 2 cạnh lên là 1 Bit:

 Trường hợp độ dài 2 cạnh lên là 1.5 Bits:

 Trường hợp độ dài 2 cạnh lên là 2 Bits:

 Giải mã dữ liệu

--- 23 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

 Kiểm tra CRC:

VII.Truyền nhận dữ liệu


VII.1. Khung truyền
o Là một chuỗi Bit chứa các thông tin dữ liệu đã được mã hóa và phát dưới dạng
các tín hiệu 1, 0.
o Các thành phần thu phát sử dụng chung 1 khung truyền để giao tiếp và truyền dữ
liệu, trong đó kích thước của dữ liệu có thể thay đổi.
o Kích thước tối đa của một khung truyền phụ thuộc vào kích thước bộ đệm, tốc độ
xử lý của hệ thống thu phát. Đối với microcontroller thì kích thước nhỏ hơn 32 bytes
là đảm bảo tối ưu.
VII.2. Truyền dữ liệu
VII.2.1. Initialization
 Là chuỗi bit 1, 0 phát liên tục trong 1 khoảng thời gian trước khi dữ liệu của
khung truyền được phát đi.
 Việc sử dụng chuỗi bit khởi động này giúp đầu thu RF điều chỉnh lại trạng thái
sẵn sang cho quá trình giao tiếp.

--- 24 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

 Thời gian phát chuỗi bit khởi động này tùy thuộc vào đặc điểm của đầu thu,
thường là vào khoảng 25ms.

Tạo chuỗi Initialization trước khi phát dữ liệu

Code sinh chuỗi xung Initialization


VII.2.2. Preamble Byte
 Là Byte báo hiệu cho phía thu biết bắt đầu quá trình gởi dữ liệu.
 Đặc điểm của Byte này là tạo 1 vi phạm mã Manchester với chiều dài 2 cạnh
lên liên tiếp là 3.5 Bits.

Preamble Byte 11110001


VII.2.3. Header
 Đây là phần chứa thông tin của gói dữ liệu, bao gồm 1 hoặc vài Byte.
 Các thông tin này thường bao gồm:
 Địa chỉ mạch thu.
 Địa chỉ mạch phát.
 Số tuần tự(dùng cho quá trình bắt tay).
 Mã lệnh.
 Chiều dài chuỗi dữ liệu đi kèm.
 Mã ứng dụng(sử dụng nếu có nhiều ứng dụng cùng dung chung 1 môi
trường thu phát).

--- 25 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Hiện thực Header


VII.2.4. Body
 Chứa thông tin dữ liệu của ứng dụng.
 Số lượng Byte dữ liệu có thể thay đổi trong 1 khung truyền và giới hạn trong
kích thước tối đa khi khai báo sử dụng.

VII.2.5. CRCByte
 Sử dụng cho quá trình kiểm tra lỗi cho phía thu khi có lỗi hoặc nhiễu xảy ra
trong quá trình truyền.
 Sử dụng các giải thuật XOR tất cả các Byte dữ liệu để giảm thời gian xử lý.

Hiện thực giải thuật CRC


VII.2.6. Stop Byte
 Là Byte báo hiệu sự kết thúc của quá trình truyền dữ liệu.
 Byte này tạo sự vi phạm mã Manchester với độ dài 2 cạnh lên liên tiếp là
khoảng 2.5 Bits.
 Sau khi nhận được Stop thì phía thu sẽ chuyển sang quá trình kiểm tra xử lý
chuỗi dữ liệu vừa nhận được.

Stop Byte 01000010

--- 26 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VII.3. Tốc độ truyền nhận


o Phụ thuộc vào đặc điểm của mạch thu phát và tốc độ xử lý của quá trình mã hóa,
giải mã.

o Các đầu thu OOK/ASK thông thường có tốc độ truyền trong khoảng nhỏ hơn 20
kbps. Nghĩa là nếu dùng Manchester thì tốc độ truyền nhận tối đa là 10 kbps dữ
liệu.
VII.4. Nhận dữ liệu
VII.4.1. Cơ chế ngắt
 Phía thu khi sử dụng vi điều khiển có thể sử dụng chân ngắt ngoài, ngắt
analog comparator,… để phát hiện cạnh lên của tín hiệu thu để thực hiện quá
trình giải mã.
 Để sử dụng được ngắt hiệu quả thì giải thuật mã hóa và giải mã phải cho
phép phát hiện được trạng thái đúng hoặc nhiễu một cách rõ ràng. Nếu không
thì việc ngắt sẽ tạo ra chuỗi công việc kiểm tra và xử lý kém hiệu quả do phải
ngắt một cách liên tục.
 Ưu điểm khi sử dụng cơ chế ngắt xử lý giải mã là cho phép vi điều khiển thực
hiện các chức năng khác 1 cách bình thường mà không phải kiểm tra liên tục tín
hiệu nhận. Vì quá trình giải mã chỉ sử dụng 1 cạnh lên cùng với timing được
đánh dấu từ lần ngắt trước.
 Tránh sử dụng các hàm hoặc giải thuật xử lý ở các tác vụ khác mà gây cấm
ngắt tới phần nhận giải mã.

--- 27 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VII.4.2. Cơ chế polling


 Đây là phương pháp kiểm tra liên tục tín hiệu thu và kiểm tra tính hợp lệ về
timing của nó.
 Polling cho phép hiện thực dễ dàng nhưng tiêu tốn quá trình xử lý cũng như
khó thực hiện các tác vụ khác liên tục trong quá trình thực hiện giải mã dữ liệu.

--- 28 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

VIII. Ứng dụng trên PIC


VIII.1. Transmitter
o Dùng dao động trong 8MHz.
o Không sử dụng chức năng Master Clear trên chân GP3 để có thể dùng như 1
input nếu cần(Disable Master Clear).
o Sử dụng Timer 1 làm chức năng transmit dữ liệu.
o Gói thông tin gởi bao gồm dữ liệu của 3 bits nút nhấn(sử dụng 1 Byte), có thể bỏ
qua phần thông tin header(ID mạch nhận, số tuần tự bắt tay, mã ứng dụng…) nếu
chỉ dùng 1 mạch phát và nhận.
o Chọn tốc độ mã hóa, giải mã khoảng 4 kbps.
o Thời giải khởi động đầu thu khoảng 25ms.

--- 29 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

--- 30 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Khai báo và cấu hình sử dụng thư viện RF.


o Chương trình main() sẽ kiểm tra 3 input A0,A1 và A4 nếu co bất cứ phím nào
nhấn nó sẽ thực hiện việc truyền 3 bits dữ liệu đó(trong 1 Byte) cho phía thu.
o Trong phần dữ liệu phát chứa thông tin tới mã ID mạch nhận là 1, mã lệnh
RF_CMD_BROADCAST, mạch phát ở đây có mã ID là 2, số tuần tự là 3, dữ liệu là
chuỗi buff, mã ứng dụng là RF_APP_DATA, chiều dài của dữ liệu là 1.

--- 31 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Chương trình MAIN

Kết quả compiled


VIII.2. Receiver
o Dùng dao động trong 8MHz.
o Không sử dụng chức năng Master Clear trên chân GP3 để có thể dùng như 1
input nếu cần(Disable Master Clear).

--- 32 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

o Sử dụng ngắt ngoài (external interrupt on RA2) để thực hiện việc giải mã.
o Thực hiện việc nhận, kiểm tra CRC của dữ liệu nhận được và xuất ra các output.
o Thực hiện việc giải mã ở cùng tốc độ 4 kbsp tương ứng với đầu phát.
o Dữ liệu nhận về bao gồm thông tin về mã ID của mạch phát, thong tin mã ID
mạch nhận, số tuần tự bắt tay, mã lệnh, ứng dụng, chiều dài của phần dữ liệu trong
phần Header, tuy nhiên có thể bỏ qua nếu chỉ sử dụng 1 mạch thu và phát.

--- 33 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Khai báo và cấu hình sử dụng thư viện RF.


o Sử dụng interrupt để thực hiện việc giải mã, chương trình main sẽ thực hiện lặp
while chờ dữ liệu. Khi nhân được dữ liệu mặc định hàm RfDataComming sẽ được
thực thi và xuất kết quả 3 bits nhận được ra IO.

--- 34 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Chương trình main dùng interrupt


o Có thể sử dụng polling trong main thay cho interrupt để nhận và giải mã dữ liệu.

--- 35 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Chương trình main dùng polling

--- 36 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Kết quả compiled

--- 37 ---
Tác giả: CSKiller
Sun Technologies WwW.suno.vn Chia sẽ = Phát triển

Tài liệu tham khảo:


1. Manchester Data Encoding for Radio Communications.
2. Back to the future Manchester encoding.
3. Using the XGATE for Manchester.

--- 38 ---
Tác giả: CSKiller

You might also like