DAI HOC QUOC GIA HA NOI
TRUONG DAI HOC KHOA HOC TU NHIEN
KHOA VAT Li
NGUYEN THANH TIEN
TRUYEN DU LIEU QUA THIET BI CYWM6935
KHOA LUAN TOT NGHIEP HE DAI HOC CHINH QUY CHUYEN NGANH: VAT LY VO TUYEN
Hà Nội - 2011
Trang 2
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TƯ NHIÊN
KHOA VẬT LÍ
NGUYEN THANH TIEN
TRUYEN DU LIEU QUA THIET BI CYWM6935
KHOA LUAN TOT NGHIEP HE DAI HOC CHINH QUY CHUYEN NGANH: VAT LY VO TUYEN
Cán bộ hướng dẫn: Thầy Võ Lý Thanh Hà Hà Nội - 2011
Trang 3LOI CAM ON
Lời đầu tiên em xin chân thành bày tỏ lòng cảm ơn và kính trọng sâu sắc đối với Thầy Võ Lý Thanh Hà Thây đã hết lòng giúp đỡ, dạy bảo, động viên và
tạo mọi điều kiện thuận lợi cho em trong SUỐt quá trình học tập và hoàn thành
luận văn tốt nghiệp.Thầy đã mở ra cho em những vấn đề khoa học rất lý thú, hướng em vào nghiên cứu các lĩnh vực hết sức thiết thực và vô cùng bô ích Em đã học hỏi được rất nhiều ở Thay phong cách làm việc, cũng như phương pháp
nghiên cứu khoa học Em luôn được Thây cung cấp các tài liệu, dụng cụ, các
chỉ dẫn hết sức quý báu khi cần thiết trong suốt thời gian thực hiện luận văn Có những lúc cần thiết bị để thực hành thầy luôn sẵn sàng giúp đỡ
Em cũng xin thể hiện sự kính trọng và lòng biết ơn đến các Thây Cô trong bộ môn Vật Lý Vô Tuyến, những người đã trang bị cho em rất nhiều kiến thức chuyên ngành, cũng như sự chỉ bảo, giúp đỡ tận tình của các Thây Cô đối với em
trong suốt quá trình học tập Tất cả các kiến thức mà em lĩnh hội được từ bài
giảng của các Thầy Cô là vô cùng quý giá
Xin gửi lời cảm ơn đến các thầy cô giáo trong hội đồng chấm luận văn đã cho em những đóng góp quý giá để em có thể hoàn chỉnh được luận văn này
Trang 4MỤC LỤC
MO DAU
Truyền đữ liệu không dây là một mảng lớn trong điện tử thông tin, đữ liệu được truyễn đi có thể là tương tự cũng có thể là số Trong truyền đữ liệu không dây, hiệu quả nhất vẫn là truyền bằng sóng điện từ hay sóng Radio, bởi những ưu
điểm là truyền ở khoảng cách xa, đa hướng, tần số hoạt động cao
Hiện nay, xử lí và truyền dữ liệu được ứng dụng rất rộng rãi, nhất là trong
lĩnh vực điều khiển, thông tin số Nhiều thiết bị xử lí và truyền tín hiệu đã ra đời nhưng mỗi thiết bị chỉ có những chức năng hoặc nhiệm vụ phục vụ cho
yêu cầu riêng của công việc Để giải quyết vấn dé cho công việc đa nhiệm
nhiều thiết bị đã được ra đời như vi điều khiến, vi xử lí Cùng với đó
nhiều thiết bị truyền tín hiệu đa kênh cũng được ứng dụng rong rai
Sử dụng khả năng của vi điều khiển ATmega8 về xử lí truyền nhận dữ liệu
tốc độ cao và khả năng truyền đa kênh của thiết bị CYWM6935 em xây dựng một
hệ thống đơn giản gồm board phát đữ liệu và board thu dữ liệu Dữ liệu bên phát được mã hoá bằng vi điều khiển Một module phát sẽ được nỗi vào vi điều khiển
Trang 5CHUGNG I: LY THUYET CHUNG VE THIET BI CYWM6935 VA VI
DIEU KHIEN AVR ATMEGAS
L Giới thiệu về Module WirelessUSB CYWM6935
Hién nay cac thiét bi truyén số liệu không dây đã được ứng dụng rat rộng rãi và vô cùng thân thiện với cuộc sông hàng ngày Nhưng những thiết bị ấ ay chi co
thé làm 1 nhiệm vụ là truyền hoặc nhận dữ liệu và cũng chỉ có thể truyền đơn
kênh như thế sẽ tốn kém rất nhiều thiết bị nếu cân truyền và xử lí nhiều số liệu trong 1 công việc Thiết bị CYWM6935 với đặc điểm có thê truyền đa kênh nên với 1 thiết bị xử lí có thể xử lí nhiều số liệu của các thiết bị khác truyền về Sau đây là các đặc điểm chung và tính năng nỗi bật của CYWM6935
1.1 Các đặc điểm chung của thiết bị CYWM6935:
Thiết bị CYWM6935 được dùng trong lĩnh vực công nghiệp, y khoa, khoa
học với băng tân từ 2.4GHz-2.483GHz và độ nhạy la -95dBm Hoat động với
công suât ra tôi đa là 0dBm Khoảng cách truyên và nhận dữ liệu tôi đa là 50m
Với, tôc độ truyên dữ liệu đạt đền 62.5kbps
_ Độ tích hợp cao với giá thành thấp, yêu cầu số thành phân bên ngoài là nhỏ nhât
Sử dụng giao thức truyền SPI
Tân số hoạt động xung clock đầu vào là 13MHz Dòng dự phòng dưới 1A
Nhiệt độ hoạt động từ -400C đến 850C 1.2 Các ứng dụng:
+Trong lĩnh vực tự động:
- Điều khiến khí hậu và ánh sáng
- Các thiết bị thông minh - Hệ thông cảnh báo và bảo vệ +Điều khiến trong công nghiệp: - Quản lý trong kiểm kê
- Nhà máy tự động - Tiếp nhận đữ liệu
Trang 7thiết bị ngoại vi R = CYWM6935+ ATmega8 Thiết bị CYWM6935 được điều khiển bởi WirelessUSB LR MCU-+ smoke detector — WirelessUSB LR MCU+door senser MCU+keypad _ / —— WirelessUSB LR 1) WirelessUSB LR MCU+ motion detector Module WirelessUSB CYWM6935 Sơ đồ khối, chức năng và câu trúc của CYWUSB6935 được mô ta như sau: 1.3.1Sơ đồ khối của CYVWUSB6935 DIOVAL DIO IRQ SCK MISO Digital MOS] RESET PD SERDES DSSS SERDES X13 X13IN X130UT GFSK Baseband Modulator A DSSS Baseband GFSK B De modulator Synthesizer 1.3.2 Chức năng tổng quát của CYWUSB6935: RFOUT RFIN
Trang 8Máy thu phát 2.4GHz: Bộ truyền và nhận là bộ chuyển đôi đơn, kiến trúc tân số trung tân thấp kết hợp với bộ lọc nhiễu Tích hợp bộ khuyếch đại công suất
để điều khiển công suất ra trong phạm vi 30dB Cả bộ truyền và nhận đều tích hợp bộ VCO (dao động điều khiến bởi điện áp) và bộ tổng hợp Bộ tổng hợp tần số cung cấpbộ đao động nhảy tần nội tại cho bộ phát và bộ nhận
Modem GFSK: Máy phát sử dụng bộ điều chế DSP co so để chuyến đổi tần số IMHz chip thành sóng mang GFSK Máy thu sử dụng bộ tách sóng EM với bộ tự động chia dữ liệu đề giải điều chế tín hiệu GSFK
Bộ chuyển đổi nối tiếp Serializer và bộ chuyển đổi ngợc nối tiếp
Deserialzer: CYWUSBó935 cung cấp dữ liệu cho bộ Serlalzer/Deserlalzer
(SERDES), nó cung cấp khung byte của dữ liệu truyền và nhận Các byte truyền
được đưa vào SERDES và các byte nhận được đọc từ SERDES bên ngoài qua giao thức SPI SERDES cung cấp cặp dữ liệu đệm truyền và nhận Trong khi 1
byte được truyền bởi sóng vô tuyến thì byte tiếp theo có thể được viết đến thanh ghi SERDES để đảm bảo chắc chắn không đứt dữ liệu đã truyền Sau khi nhận 1 byte thì nó sẽ được đưa vào thanh ghi SERDES và có thể đọc bất kỳ lúc nào cho
đến khi byte tiếp theo được nhận, khi đó nội dung cũ của thanh ghi sẽ được viết
đè lên
Các giao thức ứng dụng: CYWUSB6935 có đây đủ các giao thức SPI thụ động đồng bộ cho các kết nối đến ứng dụng của MCU Cấu hình và dữ liệu byte truyền có thê được thực hiện thông qua giao thức này Kiểu SERDES (DIO) được cung cấp cho các ứng dụng yêu câu đồng bộ đường dữ liệu nối tiếp Giao thức này chỉ được dùng cho truyên bit dữ liệu
Bộ chỉ thị độ dài tín hiệu nhận RSSI (Receive signal strength indicator): Thanh ghi RSSI (Reg 0x22) trả lại độ dài của tín hiệu nhận kênh ON và được dùng đề:
- Xác định chất lượng kết nối
- Xác định giá trị nhiễu
- Kiểm tra kênh trước khi truyền
Điện áp trong RSSI được lấy mẫu qua 5 bít của bộ chuyển đổi ADC Một
khi sự kết nối đã được thiết lập, thanh ghi RSSI có thể được đọc để xác định chất lượng kết nối của kênh Giá trị của thanh ghi dưới 10 cho biết chiều dai tín hiệu nhận là thấp, còn giá trị lón hơn 28 thì chiều dài tín hiệu là dài Để kiểm tra kênh truyền trước khi truyễn, trước hết thiết lập kiểu nhận cho đúng giá trị của thanh ghi RSSI (Reg 0x22) Nếu giá trị bit là 0, sau đó tác động thanh ghi Carrier Detect (Reg 0x2F, bit7=1) để khởi động bộ chuyển đổi ADC Sau đó, chờ hơn
50s và tiếp tục đọc giá trị RSST Tiếp theo xóa thanh ghi Carrler Detect và điều
Trang 9quả tốt nhất, thủ tục này nên lập lại nhiều lần (khoảng 20 lần) đề tính toán trung
bình mức độ nhiễu của kênh Giá trị của thanh ghi RSSI từ 0-10 tức là tín hiệu
trên kênh truyền yếu Còn giá trị lớn hơn 10 cho rằng kênh hầu như đang được sử
dụng
Giao thire SPI: CY WUSBO6935 có 4 day giao thirc SPI giao tiép giữa ứng dung MCU va I hoặc các thiết bị thứ cấp khác Giao thức SPI ho tro truyén byte đơn và nhiều byte nối tiếp Bốn dây giao thức SPI giao tiếp bao gồm Master Out- Slave In (MOSI), Master In-Slave Out (MISO), Serial Clock (SCK), va Slave
Select SPI nhận xung SCK từ MCU trên chân SCK Dữ liệu từ MCU được dịch trên chân MOST Dữ liệu từ MCU đưa ra chân MISO Chân Slave Select ở mức
thấp cần được xác nhận để khởi động bộ truyền SPI MCU có thể khởi động bộ truyền dữ liệu SPI theo đường quản lý nhiều byte Byte dau tiên là byte Command/Address, và byte tiếp là các byte dữ liệu.Tín hiệu Slave Select không nên chọn giữa các byte Giao tiếp SPI như sau:
- Bit 7=0: SPI doc Bit 7=1:SPI ghi
- Bit 6=1: SPI tu dong tang dia chi Khi thiét lập, địa chỉ tự động tăng tại
mỗi byte cuối trong truy cập nhóm bít truyền, nếu không thì các địa chỉ tương tự
được truy cập
- 6 bit 1a dia chi - 8 bit của dữ liệu Byte 1 Byte 1+N Bit# 7 6 [5:0] [7:0] Bit Name DIR INC Address Data Figure 5-1 SPI Transaction Format data to mcu MISO sim 844 ae CMiel Figure 5-2 SPI Single Read Sequence 5 Se 5S] YT cmd addr
MOS] có a 1 At as ay) we AT) AD ề
Trang 101.3.3 Các ngắt:
CYWUSB6935 có ba kiểu ngắt: ngắt truyền, ngắt nhận và khởi động Tất cả
được chia sẽ bởi một chân IRQ, nhưng có thể độc lập enabled/disabled Trong kiều truyền, tất cả các ngắt nhận tự động disabled, và trong kiểu nhận tất cả các
ngắt truyền đều disabled Tuy nhiên nội dung thanh ghi được bảo tồn khi chuyển
đôi giữa kiểu truyền và kiểu nhận Các ngắt được enable và trạng thái đọc thông
qua 6 thanh ghi: Receive Interrup Enable (Reg 0x07), Receive Interrup Status (Reg 0x08), Transmit Interrup Enable (Reg 0x1C), Wake Status (Reg 0x1D)
Nếu có hơn 1 ngất được enable tai bắt kỳ một thời điểm nào, nó cần thiết phải đọc trạng thái ưu tiên của thanh ghi ngắt để xác định việc nào đựoc IRQ xác nhận Còn khi nguôn ngắt là disabled, điêu kiện trạng thái sẽ gây ra một ngắt khác có thể đựoc xác định bởi đọc trạng thái của thanh ghi tương tự Vì vậy nó có thê sử dụng các thiết bị mà không cần sử dụng các chân ngắt Chương trình cơ sở có thê thăm dò trạng thái của thanh ghi ngắt để chờ khi có việc hơn là sử dụng
chân IRQ
Ngắt khởi động Wake Interrup: Khi chân PD ở mức thấp, bộ dao động bị
dừng Sau khi chân PD không đựoc xác nhận, bộ dao động thiết lập thời gian để
bắt đầu, và cho đến khi nó làm tốt, nó không được chắc chắn để sủ dung giao
thức SPI Ngắt khởi động chỉ định bộ dao động đã đựoc bắt đầu và thiết bị đã sẵn sàng để nhận bộ truyền SPI Ngắt khởi động được enable bằng cách thiết lập bit 0 cua thanh ghi Wake Enable (Reg 0xIC), bit 0=1) Dù thanh ghi khởi động treo hay không thì nó được chỉ định bởi trạng thai bit 0 cua thanh ghi Wake Status (Reg 0xID), bịt 0)
Các ngắt truyền: Bốn ngắt được cung cấp đến cờ khi có sự truyền Các ngắt được enabled băng cách ghi đến thanh ghi Transmit Interrup Enable (Reg
0x0D), và những trạng thái đó có thể được xác định bằng cách đọc trạng thái
thanh ghi Transmit Interrup Status (Reg 0x0E) Nếu có hươn l ngắt được
enabled, thì rất cần thiết đọc trang thai thanh ghi Transmit Interrup Status để xác định việc nào được chân I[RQ xác nhận
Các ngắt nhận: Co 8 ngat duoc cung cấp đến cờ khi việc nhận tín hiệu xảy
ra, mỗi 4 ngắt là cho SERDES A và B Trong kiểu DDR 64 chips/bit và 32 chips/bit, chỉ có ngắt SERDES A là available, và ngắt SERDES B sẽ không bao giờ kích khởi dù là enabled Các ngắt được enabled bằng cách ghi đến thanh ghi Receive Interrup Enable (Reg 0x07), và các trạng thái đó có thể được xác định băng cắch đọc trạng thái của thanh ghi Receive Interrup Status (reg 0x08) Nếu
có hơn 1 ngắt được enabled, thì cần phải đọc trạng thái thanh ghi Receive Interrup Status để xác định việc nào được chân IRQ xác nhận
Trang 11Thanh ghi điều khiến: Addr: 0x03 REG CONTROL Default: 0x00 T 8 5 4 3 2 1 0 RX TX PN Code Bypass Internal | Auto Internal PA Internal PA Reserved Reserved Enable Enable Select Syn Lock Signal Disable Enable
Thanh ghi REG CONFIG:
Addr: 0x05 REG CONFIG Default: 0x01
7 Ỉ 5 | 5 | 4 | 3 2 1 | ũ
Reserved IRG Pm Seleci
Thanh ghi REG SERDES CTL:
Addr: 0x06 REG SERDES CTL Default: 0x03
7 | B | 5 | 4 3 2 1 0
Reserved SERDES EOF Length Enable
Thanh ghi REG RX _ INT EN:
Addr: 0x07 REG RX_INT_EN Default: 0x00 ĩ B 5 4 3 2 1 0 Underflow B Overflow B EOF B Full B Underfiow A Overflow A EOF A Full A
Thanh ghi Reg RX_INT_ STAT:
Addr: 0x08 REG RX_INT_STAT Default: 0x00 ỉ 8 5 4 3 2 1 0 Valid B Flow eee EOFB Full B Valid A Flow a EOF A Full A
Thanh ghi REG RX DATA A:
Addr: 0x09 REG RX_DATA A Default: 0x00
7 | 6 | 5 4 3 2 1 0
Data
Thanh ghi REG RX VALID A:
Trang 12Addr: 0x0B REG RX_DATA B Default: 0x00 7 | 6 | 5 | 4 | 3 2 1 0 Data
Thanh ghi REG RX VALID B:
Addr: 0x0C REG RX VALID B Default: 0x00
7 | 6 | 5 | 4 | 3 2 1 0
Valid
Thanh ghi REG_TX_INT_EN:
Addr: 0x0D REG TX INT EN Default: 0x00
7 | B | 5 | 4 3 2 1 0
Reserved Underfiow Overflow Done Empty
Thanh ghi REG _ TX INT STAT:
Addr: 0x6E REG TX INT STAT Default: 0x00
7 | 6 | 5 | 4 3 2 1 0
Reserved Underfiow Overflow Done Empty
Thanh ghi REG TX DATA:
Addr: 0x0F REG TX DATA Default: 0x00
7 | B | 5 | 4 | 3 2 1 | 0
Data
Thanh ghi REG TX VALID:
Addr: 0x10 REG TX_VALID Default: 0x00
7 | 6 | 5 | 4 3 2 1 ñ
Valid
Thanh ghi REG _RSSI:
Trang 13Addr: 0x32 REG CLOCK MANUAL Default: 0x00 | 6 | 5 | 4 | B 2 1 0
Manual Clock Overrides
Thanh ghi REG CLOCK ENABLE:
Addr: 0x33 REG CLOCK_ENABLE Default: 0x00
| B | 5 | 4 | 3 2 1 0
Manual Clock Enables
Thanh ghi REG PA:
Trang 14PDIP (RESET) PC6 LÌ (RXD) PD0 (TXD) PD1 L (INT0) PD2 L (INT1) PD3 C (XCK/T0) PD4 VCC L GND O (XTAL1/TOSC1) PB6 (XTAL2/TOSC2) PB7 L (T1) PD5 (AIN0) PD6 (AIN1) PD7 E (ICP1) PB0 L ~ơiI â CI + C3 P2 — _-È — —¬ =—=— =—= (C) + C2 h5 ¬ O&O 28 of 26 25 24 23 22 21 20 18 18 TỶ 16 15 L_] PC5 (ADC5/SCL) L]PC4 (ADC4/SDA) L_]PC3 (ADC3) L]PC2 (ADG2) _] PC1 (ADC1) _]PC0 (ADCO0) _] GND L]AREF L]AVCC _] PB5 (SCK) _] PB4 (MISO) _]PB3 (MOSI/OC2) L]PB2 (SS/OC1B) -] PB1 (OC1A)
Sơ đồ chân ATmega8
Một số thông số kĩ thuật đáng lưu ý:
ATMega8 là một con Vi Điều Khiển thuộc dòng Mega AVR của hãng ATMEL Dòng Vi Điều Khiến này có tính năng nỗi trộ như:
° Rât tiệt kiệm năng lượng, hiệu suât cao
Trang 15kỳ xung clock
o 32 thanh ghi đa dụng
o Tốc độ tối đa lên đến 16MIPS với thạch anh 16MHz
° Bộ nhớ phân đoạn, có độ bền cao không dễ bay hơi öo Có SKB bộ nhớ Flash lập trình ISP
o 512Bytes EEPROM o 1IKB SRAM
o Chu kỳ ghi/xóa 10.000 lần cho bộ nhớ Flash ROM, và 100.000 cho EEPROM o Dữ liệu không bị mất sau 20 năm (ở 850C) và 100 năm (ở 250C)
o Co tinh nang bao mat ¢ Tinh nang ngoai vi o 2 bộ Timer/Counter 8 bit, I bộ so sánh o l bộ Timer/Counter l6 bịt o Bộ đếm Thời gian thực với dao động riêng o 3 kénh PWM o 6 kênh ADC 10 bits cho kiéu v6 PDIP, va 8 kénh ADC 10 bit cho kiểu vỏ TQFP
o Giao tiếp nối tiếp TWI
o Lập trình nối tiếp USART, giao tiếp nối tiếp SPI master/slave o BO so sanh Analog on-chip
¢ Tinh nang dac biét cua ATMega8
o Hiệu chuẩn bộ dao động RC nội
o Bộ nguồn ngắt bên ngoài và bên trong
o Năm chế độ Sleep: Idle, giảm nhiễu ADC, tiết kiệm năng lượng, Power-down, và chế độ chờ (stand by)
Trang 16o 23 ngõ vào/ra khả trình o Được đóng gói trong 28 chân kiểu vỏ PDIP - Điện áp hoạt động 2,7- 5.5V (ATmega8L) 4.5 - 5.5V (ATmega8) - Tân số hoạt — 0 - § MHz (ATmega8L) — 0 - 16 MHz (ATmega8) dong Câu trúc các PORT xuất nhập A = gon el "— + + Logic
x Coin See Figure
| ¡ "General Digital l/O" for
| Details
Câu trac chan cla AVR
ATMega8 co 3 Port xuat nhap: PortB (co 8 bits), PortC (7 bits), PortD (có 8 Bits) Mỗi một công của Vi điều khiển được liên kết với 3 thanh ghi: PORTx, DDRx, PINx 3 thanh ghi này sẽ phối hợp với nhau để điều khiến hoạt động của công thành lỗi vào sử dụng Pull-up
Trang 17thái duy nhất (0 1) Đặc biệt nguồn từ chân của AVR đủ khoẻ đề điều khiển Led trực tiếp (dòng khoảng hàng chục mA) con 89xx chi la vai uA
Để điều khiển các chân này chúng ta có 2 thanh ghi:
o PORTx :giá trị tại từng chân (0 — 1) có thể truy cập tới từng bit PORTx.n o DDRx : thanh ghi chỉ trạng thái của từng chân, vào hoặc là ra
Thanh ghi DDRx
Đây là thanh ghi 8 bits (có thể đọc ghi) có chứ năng điều khiển hướng của công (là lối vào hay lối ra) Khi một bít của thanh ghi này được set lên 1 thì chân tương ứng với nó được cấu hình thành ngõ ra Ngược lại nếu của thanh ghi DDRx là 0 thi chân tương ứng của nó được thiết lập thành ngõ vào Lẫy ví dụ: Khi ta set tất cả 8 bít của thanh ghi DDRD đều la 1, thi 8 chân tương ứng của PORTD 1a
PORTD.0, PORTD.1, ., PORTD.7 được thiết lập là ngõ ra Bit 7 x 5 4 3 2 1 ũ i DDB7 | DD B8 | DDBS5 | DDB4 | DDB3 | DDB2 | DDB1 | DDBO Ỉ DDRB Read/Write RW RW RW Rv Ry Ru RW Riv Vi du thanh ghi DDRD Thanh ghi PORTx
PORTx la thanh ghi 8 bít có thể đọc ghi Đây là thanh ghi dit liéu cla PORTx Nếu thânh ghi DDRx thiết lập công là lối ra, khi đó giá tri cua thanh ghi PORTx
Trang 18ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở treo
ở chân tương ứng sẽ không được kích hoạt, công ở trạng thái tông trở cao
Ví dụ thanh ghi PORTB
CHƯƠNG II: PHƯƠNG PHÁP NGHIÊN CỨU
Chuẩn truyền thông SPI
SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ cao do hãng Motorola đề xuất Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master điều phối quá trình tuyên thông và các chip Slaves được điều khiến bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) va SS (Slave Select) Hình 1 thể hiện một kết SPI giữa một chip Master va 3 chip Slave thông qua 4 đường
SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ
nên cần đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bít đữ liệu đến hoặc đi
Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuân UART Sự tồn tại của chân SCK giúp quá trình tuyên ít bị lỗi và vì thế tốc
Trang 19MISO-— Master Input / Slave Output: néu 1a chip Master thì đây là duong Input con néu 1a chip Slave thi MISO lai 1a Output MISO của Master và
các Slaves được nôi trực tiêp với nhau
MOSI — Master Oufput / Slave Input: nếu là chip Master thì đây là
đường Output còn nếu là chip Slave thì MOSI là Input MOSI của Master và các Slaves được nôi trực tiêp với nhau
SS — Slave Select: SS 1a đường chọn Slave cần giap tiếp, trên các chip Slave đường SS sẽ ở mức cao khi không làm việc Nếu chip Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó Chỉ có 1 đường SS trên mỗi Slave nhưng có thê có nhiều đường điều khiển SS trên Master, tùy thuộc vào thiết kế của người dùng
Hoạt động: mỗi chip Master hay Slave có một thanh ghi dữ liệu 8 bits Cứ mỗi xung nhịp do Master tạo ra trên đường giữ nhịp SCK, một bít trong thanh ghi dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit trong thanh ghi đữ liệu của chip Slave cũng được truyền qua Master trên đường MISO Do 2 gói dữ liệu trên 2 chip được gởi qua lại đồng thời nên quá trình truyền dữ liệu này được gọi là “song công” Hình 2 mô tả quá trình truyền l gói đữ liệu thực hiện bởi module SPI trong AVR, bên trải là chip Master và bên phải
là Slave
Truyén dit liéu SPI
Trang 20chân SCK ở trạng thái nghỉ Ở trạng thái nghỉ (Idle), chân SCK có thể được giữ ở mirc cao (CPOL=1) hoặc thấp (CPOLE0) Phase (CPHA) dùng đề chỉ cách mà đữ liệu được lây mẫu (sample) theo xung giữ nhịp Dữ liệu có thể được lẫy mẫu ở cạnh lên của SCK (CPHA=0) hoặc cạnh xuống (CPHA=1) Sự kết hợp của SPOL
và CPHA làm nên 4 chế độ hoạt động của SPI Nhin chung việc chọn | trong 4
chế độ này không ảnh hưởng đến chất lượng truyền thông mà chỉ cốt sao cho có sự tương thích giữa Master và Slave
Ill Truyén thong SPI trén AVR
Module SPI trong cdc chip AVR hau nhu hoan toan giéng voi chuan SPI mô tả trong phân trên Vì thế, nêu đã hiểu cách truyền thông SPI thì sẽ không quá
khó để thực hiện việc truyền thông này với AVR Phần bên đưới tôi trình bày một
số điểm quan trọng khi điều khiến SPI trên AVR
Các chân SPI: Các chân giao tiếp SPI cũng chính là các chân PORT thông thường, vì thế nếu muốn sử dụng SPI chúng ta cần xác lập hướng cho các chân này Trên chip AtmegaS, các chân SPI như sau:
SCK — PBS (chân 5)
MISO — PB4 (chan 4) MOSI - PB3 (chân 3) SS — PB2 (chân 2)
Khi chip AVR duoc su dung lam Slave, cần set các chân SCK 1nput,
Trang 21Thanh ghi: SPI trên AVR được vận hành bởi 3 thanh ghi bao gồm thanh ghi điều khiến SPCR., thanh ghi trạng thái SPSR và thanh ghi dữ liệu SPDR
SPCR (SPI Control Register): 1a 1 thanh ghi 8 bit điều khiến tất cá hoạt động cua SPI
Bit 7 5 5 4 3 2 † 0
| SPIE SPE DORD MSTR CPOL CPHA SPR1 SPRO [| SPCR Read/Write RW RW Ri RW RAW RAW RW R/W
Initial Value 0 ũ 0 0 0 ũ 0 0
* Bit 7- SPIE (SPI Interrupt Enable) bit cho phép ngat SPI Néu bit nay dugc set bằng 1 va bit I trong thanh ghi trạng thái được set bằng 1, I ngắt sẽ xảy ra sau khi một gói đữ liệu được truyền hoặc nhận Chúng ta nên dùng ngắt (nhất là đối
voi chip Slave) khi truyén nhận đữ liệu với SPI
* Bit 6 — SPE (SPI Enable) set bit này lên I để cho phép bộ SPI hoạt động Nếu SPIE=0 thì module SPI dừng hoạt động
* Bit 5 - DORD (Data Order) bit nay chi dinh thu tu dt ligu cac bit duoc
truyền và nhận trên các đường MISO và MOSI, khi DORD=O bít có trọng số lớn
nhất của dữ liệu được truyền trước (MSB) ngược lại khi DORD=I1, bit LSB được
truyền trước Thật ra khi giao tiếp giữa 2 AVR với nhau, thứ tự này không quan trọng nhưng phải đảm bảo các bit DORD giống nhau trên cá Master và Slaves
* Bít 4— MSTR (Master/Slave Select) nếu MSTR =l thì chip được nhận
điện là Master, ngược lại MS TR=O0 thì chip là Slave
Trang 22CPOL Leading Edge Trailinq Edge 0 Rising Falling † Falling Rising
Một lần nữa, chọn chế độ nào không quan trọng nhưng phải đảm bảo Master và Slave cùng chế độ hoạt động Vì thế có thể để 2 bít này bằng 0 trong
tất cả các chip Hình 3 trình bày cách sample dữ liệu trong 4 chế độ của SPI trên AVR CPHA=0 [ SCK (CPOL =0) aa mada 2 We ME LL Lal | | SCK (CPOL = 1) | mode 2 [ SAMPLE | | k-: MOSUMISO : MOS! PIN | H H | H H | CHANGE 0 + = i \{ : \{ ! | MISO PIN i_/ 7 | ss Ad po tf | f F Ff
Trang 23em TIT LIL LAr Lee [| LJL|L| L|L| LỊL [ˆ SAMELE I | | MOSI/MISG Pie’ OX OCO DD morn 4X 1X TX TX IX IK TKK | s 5 mm |
MSR trai {OORD # 0) MSB Bie Bas Bii4 R5 Bñủ2 R 58 L538 frst(DORD 8 1} L368 BỊ! BAZ 835 H14 Bas Bag Me
Hình3 Các chế độ hoạt động của SPI
* Bit 1:0 — CPR1:0 hai bit nay két hop voi bit SPI2X trong thanh ghi SPSR
cho phép chon tốc độ giao tiép SPI, tốc độ này được xác lập dựa trên tốc độ
nguồn xung clock chia cho một hệ số chia Bảng 1 tóm tắt các tốc độ mà SPI trong AVR có thê đạt Thông thường, tốc bộ này không được lớn hơn 1/4 tốc độ xung nhip cho chip SCK Frequency f -/4 f -/16 f /84
Trang 24dữ liệu đã được truyền hoặc nhận từ SPI, bit SPIF sé tu déng dugc set len 1 Bit 6 — WCOL la bit bao va cham dir liéu (Write Colision), bit này được AVR set lén 1
nếu chúng ta cô tình viết I gói dữ liệu mới vào thanh ghi dữ liệu SPDR trong khi quá trình truyền nhận trước chưa kết thúc Bit 0 — SPI2X gọi là bít nhân đôi tốc độ truyền, bit này kết hợp với 2 bit SPRI:0 trong thanh ghi điều khiến SPCR xác lập tốc độ cho SPI 5 ¬ , | Ẻ E a SPI2X | SPSR R R/W Ỉ SPIF WCOL i = R R R el iw l
SPDR (SPI Data Register): 1a thanh ghi dt ligu cua SPI Trén chip Master, ghi giá trị vào thanh ghi SPDR sẽ kích quá trình tuyển thông SPI Trén chip
Slave, dữ liệu nhận được từ Master sẽ lưu trong thanh ghi SPDR, dữ liệu được lưu sẵn trong SPDR sẽ được truyền cho Master
Sử dụng SPI trên AVR: SPI trén AVR hoạt động không khác nguyên lý
chung của chuẩn SPI là may Vận hành SPI trên AVR được thực hiện dựa trên việc ghi và đọc 3 các thanh ghi SPCR, SPSR và SPDR Trước khi truyền nhận
băng SPI chúng ta cân khởi động SPI, quá trình khởi động thường bao gồm chọn
hướng giao tiếp cho cac chan SPI, chon loai giao tiép: Master hay Slave, chon
chế độ SPI (SPOL, SPHA) và chọn tốc độ giao tiếp Truyền thông SPI luôn được khởi xướng bởi chip Master, khi Master muốn giao tiếp với 1 Slave nào đó, nó sẽ kéo chân SS của Slave xuống mức thấp (gọi là chọn địa chỉ) và sau đó viết dữ liệu cần truyền vào thanh ghi đữ liệu SPDR, khi đữ liệu vừa được viết vào SPDR
xung g1ữ nhịp sẽ được tự động tạo ra trên SCK và quá trình truyền nhận bắt đầu
Trang 25truyền nhận Khi phát hiện xung giữ nhịp trên SCK, Slave sẽ bắt đầu sample dữ liệu đến trên đường MOSI và gởi dữ liệu di trên MISO
II Chuyên đổi đữ liệu tương tự (analog) sang dữ liệu số (digital)
Trong các ứng dụng đo lường và điều khiển bằng vi điều khiến bộ chuyển đối tương tự-số (ADC) là một thành phần rất quan trọng Dữ liệu trong thế giới của chúng ta là các đữ liệu tương tự (analog) Ví dụ nhiệt độ không khí buồi sáng
là 25oC và buôi trưa là 32oC, giữa hai mức giá tr này có vô số các giá trị liên tục mà nhiệt độ phải “đi qua” để có thể đạt mức 32oC từ 25oC, đại lượng nhiệt độ như thế gọi là một đại lượng analog Trong khi do, r6 rang vi điều khiển là một
thiết bị số (digital), các giá trị mà một vi điều khiến có thể thao tác là các con số
rời rạc vì thực chất chúng được tạo thành từ sự kết hợp của hai mức 0 và 1 Ví dụ chúng ta muốn dùng một thanh ghi 8 bit trong vi điều khiến đề lưu lại các giá trị
nhiệt độ từ 0oC đến 255 oC, như chúng ta đã biết, một thanh ghi 8 bít có thể chứa
tôi đa 256 (28) giá trị nguyên từ 0 đến 255, như thế các mức nhiệt độ không
nguyên như 28.123 oC sẽ không được ghi lại Nói cách khác, chúng ta đã “số
hóa” (digitalize) một dữ liệu analog thành một đữ liệu digital Quá trình “số hóa” này thường được thực hiện bởi một thiết bị gọi là “bộ chuyển đối tương tự - số