Giám sát, điều khiển thiết bị điện qua cổng Parrallel dùng Wireless
Trang 1MỤC LỤC
Phần 1: CỔNG SONG SONG 3
1.1 Cấu trúc cổng song song: 3
1.2 Định dạng các thanh ghi: 4
1.3 Giao tiếp hai máy tính dùng cổng song song 4
Phần 2: GIỚI THIỆU PSOC VÀ MODUL WIRELESS USB7 2.1 Giới thiệu chung về PSOC và chip Cyp29566: 7
2.2 Sơ lược cấu trúc phần cứng: 8
2.2.1 Tổng quan cấu trúc PSOC: 8
2.2.2 Cấu trúc CPU 9
2.2.3 Bộ tạo tần số: 9
2.2.4 Mạch RESET: 10
2.2.5 Đầu vào và ra của tín hiệu số: 10
2.2.6 Drive Mode: 11
2.2.7 Truy cập các khối số lập trình được: 12
2.2.8 Các đường input toàn cục (Global input line): 12
2.2.9 Bộ chọn kênh đầu vào: 12
2.2.10 Khối số khả trình: 13
2.2.11 Tín hiệu CLK 14
2.2.12 Tín hiệu input 14
2.2.13 Tín hiệu output 14
2.2.14 Multiplexer 14
2.2.15 Mạch logic 15
2.2.16 Output drivers 15
2.2.17 Điều khiển ngắt 15
2.2.18 Không gian địa chỉ 16
2.3 Module WirelessUSB LR 2.4-GHz DSSS Radio SoC CYWUSB6935: 17
2.3.1 Các đặc điểm của CYWUSB6935: 17
2.3.2 Các ứng dụng: 17
2.3.3 Sơ đồ khối của CYWUSB6935: 17
2.3.4 Chức năng tổng quát của CYWUSB6935: 18
2.3.6 Các thanh ghi của CYWUSB6935: 21
Phần 3: SƠ ĐỒ MẠCH VÀ LƯU ĐỒ THUẬT TOÁN 25
3.1 Cấu hình phần cứng trên PSOC Cyp29566 25
3.1.1 Khối giao tiếp SPI Master 25
3.1.2 Module LCD 16x2 27
3.1.3 Module I2C: 29
3.1.4 Giới thiêu DS1307 31
3.2 Sơ đồ mạch và nguyên lý hoạt động: 34
3.2.1 Mạch điều khiển thiết bị: 34
3.2.2 Mạch giao tiếp máy tính: 35
3.3 Lưu đồ thuật toán: 36
3.3.1 Chương trình chính: 36
3.3.2 Chương trình cài đặt giờ: 38
3.3.3 Chương trình hiển thị menu: 39
3.3.4 Chương trình hiển thị và cài đặt trên PSOC: 40
3.3.5 Chương trình xử lý dữ liệu từ máy tính: 41
Trang 2Phần 4: CHƯƠNG TRÌNH GIAO TIẾP CỔNG SONG SONG
TRÊN MÁY TÍNH 42
4.1 Giới thiệu chương trình giao tiếp máy tính với module wireless 42
4.2 Các module chính của chương trình: 43
4.2.1 Hàm set và clear 1 bit: 43
4.2.2 Hàm đọc trạng thái của 1 bit: 43
4.2.3 Hàm gửi 1 byte lên bus SPI: 44
4.2.4 Hàm nhận đọc 1 byte trên bus SPI: 44
4.2.5 Hàm ghi đata vào 1 thanh ghi của module wireless: 44
4.2.6 Hàm đọc data từ 1 thanh ghi của module wireless: 45
4.2.7 Hàm khởi động module wireless: 45
4.2.8 Hàm chọn chế độ truyền cho module 6935: 46
4.2.9 Phát 1 byte dùng module wireless: 46
4.2.10 Nhận 1 byte: 46
4.2.11 Sự kiện cho nút ‘Bắt đâu’: 46
4.2.12 Sự kiện cho nút ‘Cài đặt’: 46
4.2.13 Sự kiện cho nút ‘Cập nhật thời gian’: 47
4.2.14 Sự kiện cho nút ‘Nhận dữ liệu’: 47
4.2.15 Sự kiện cho timer2 47
4.2.16 Sự kiện cho các nút điều khiển trực tiếp thiết bị: 47
Phần 5: PHỤ LỤC 48
5.1 Chương trình diều khiển ở VDK 48
5.2 Chương trình VB: 64
Trang 3Phần 1: CỔNG SONG SONG
1.1 Cấu trúc cổng song song:
Cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường
dữ liệu bao gồm 5 chế độ hoạt động:
Chế độ tương thích (compatibility)
Chế độ nibble
Chế độ byte
Chế độ EPP (Enhanced Parallel Port)
Chế độ ECP (Extended Capabilities Port)
Ba chế độ đầu tiên sử dụng cổng song song chuẩn (SPP – Standard Parallel Port) trong khi đó chế độ 4, 5 cần thêm phần cứng để cho phép hoạt động ở tốc độ cao hơn Sơ đồ chân của cổng song song như sau:
Chân Tín hiệu Mô tả
máy in
Bảng 1.1 – Sơ đồ chân cổng song song
Cổng song song có ba thanh ghi có thể truyền dữ liệu và điều khiển Địa chỉ cơ
sở của các thanh ghi cho tất cả cổng LPT (line printer) từ LPT1 đến LPT4 được lưu trữ trong vùng dữ liệu của BIOS Thanh ghi dữ liệu được định vị ở offset 00h, thanh ghi trang thái ở 01h, và thanh ghi điều khiển ở 02h Thông thường, địa chỉ cơ sở của LPT1 là 378h, LPT2 là 278h, do đó địa chỉ của thanh ghi trạng thái là 379h hoặc 279h và địa chỉ thanh ghi điều khiển là 37Ah hoặc 27Ah Tuy nhiên trong một số trường hợp, địa chỉ của cổng song song có thể khác do quá trình khởi động của BIOS
Trang 4BIOS sẽ lưu trữ các địa chỉ này như sau:
0040h:0008h Địa chỉ cơ sở của LPT1 0040h:000Ah Địa chỉ cơ sở của LPT2 0040h:000Ch Địa chỉ cơ sở của LPT3
-PAPER EMPTY
SELECT -ERROR -IRQ X X
IRQ Enable: yêu cầu ngắt cứng; 1 = cho phép; 0 = không cho phép
Ngoài ra chân BUSY được nối với cổng đảo trước khi được đưa vào thanh ghi trạng thái, các bit - AUTOFEED và - STROBE được đưa qua cổng đảo trước khi đưa
ra các chân
Thông thường tốc độ xử lý dữ liệu của các thiết bị ngoại vi như máy in chậm hơn PC nhiều nên các đường - ACK , BUSY và -STR được sử dụng cho kỹ thuật bắt tay Khởi đầu, PC đặt dữ liệu lên bus sau đó kích hoạt đường STR xuống mức thấp để thông tin cho biết rằng dữ liệu đã ổn định trên bus Khi xử lý xong dữ liệu,
nó sẽ trả lại tín hiệu -ACK xuống mức thấp để ghi nhận PC đợi cho đến khi đường
BUSY từ máy in xuống thấp thì sẽ đưa tiếp dữ liệu lên bus
1.3 Giao tiếp hai máy tính dùng cổng song song
Quá trình giao tiếp với cổng song song dùng 2 chế độ: chế độ chuẩn SPP và chế
độ mở rộng Việc giao tiếp ở chế độ chuẩn mô tả như sau:
Trang 5Hình 1.1 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ chuẩn
Sơ đồ chân kết nối mô tả như sau:
Trang 6Hình 1.2 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ mở
Bảng 1.7 – Sơ đồ chân kết nối hai máy tính chế độ mở rộng
Chương trình giao tiếp trên VB sử dụng thư viện liên kết động để trao đổi dữ liệu với cổng máy in Thư viện inpout32.dll bao gồm các hàm sau:
PublicDeclare Function Inp Lib"inpout32.dll" _
Alias"Inp32" (ByVal PortAddress AsInteger) AsInteger
PublicDeclare Sub Out Lib"inpout32.dll" _
Alias"Out32" (ByVal PortAddress AsInteger, ByVal Value AsInteger)
Trang 7Phần 2: GIỚI THIỆU PSOC VÀ MODUL WIRELESS USB
2.1 Giới thiệu chung về PSOC và chip Cyp29566:
PsoC được viết tắt từ Programmable System On Chip (hệ thống khả trình trên 1 chip) là một loại vi điều khiển, trong đó ngoài cấu trúc của một vi điều khiển 8 bit truyền thống nó còn được tích hợp thêm các khối số và tương tự Các khối số và tương
tự này co khả năng cấu hình mềm dẻo Các khối số là các khối khả trình, cho phép ta cấu hình để trở thành timer, bộ PWM, Counter, các chuẩn giao tiếp truyền thống Các khối tương tự cho phéo ta phát triển các thành phần như là bộ lọc, ADC, DAC, bộ khuếch đại…PSoC chúng tôi đề cập ở đây là sản phẩm của hãng Cypress Để thuận tiện cho việc phát triển hệ thống với PSOC, Cypress cung cấp bộ phần mềm PSOC Designer, cho phép ta cấu hình phần cứng dễ dàng Các đặc điểm của loại PsoC CYP29566:
Bộ xử lý với cấu trúc Harvard:
Tốc độ của bộ vi xử lý lên đến 24MHz
2 bộ nhân 8x8, thanh ghi tích lũy 32bit
Năng lượng tiêu hao ít, tốc độ xử lý cao
Dải điện áp từ 3.0 đến 5.25 V
Có bộ chuyển mạch SMP (Switch mode pump)
Dải nhiệt độ hoạt động từ -40 đến 85 độ C
Các khối ngoại vi tiên tiến:
12 khôi Analog cung cấp cho ta:
- Các bộ ADC lên tới 14 bit
- Các bộ DAC lên tới 9 bit
- Bộ khuếch đại lập trình được
- Giao tiếp SPI Master, Slave
- Có khả năng kết nối đến tất cả các chân IO
Bộ tạo xung khả trình chính xác
- Bộ dao động 24/48MHz với độ chính xác 2,5% bên trong chip
- Tùy chọn dùng thạch anh 32,768KHz để tạo tần số dao động 24/48MHz chính xác
- Dùng thạch anh ngoài tới 24Mhz
- Bộ dao động nội cho WDT và chế độ Sleep
Bộ nhớ trên chip linh hoạt:
- 32KB Flash Program Storage
- 2K SRAM
- In-System Serial Programming
- Cập nhật từng phần của bộ nhớ Flash
- Chê độ bảo vệ
Cấu hình chân IO lập trình được
- Khả năng cấp dòng 25mA với tất cả các chân
Trang 8- Pull up, Pull down, High Z, Strong, Open Drain Drive Modes cho tất cả các chân
- Bất kì chân nào đều là chân ngắt ngoài được
- Tối đa 12 ngõ vào Analog
- 4 ngõ ra Analog có khả năng cấp dòng 40mA
Các tài nguyên hệ thống khác:
- I2C Slave, Master, and Multi-Master tối đa 400kHz
- Bộ định thời Watch Dog và Sleep
- Bộ phát hiện điện áp thấp tùy chọn
- Bộ tạo điện áp tham chiếu lập trình được
-
2.2 Sơ lƣợc cấu trúc phần cứng:
2.2.1 Tổng quan cấu trúc PSOC:
Các vi điều khiển PSOC dựa trên cấu trúc vi điều khiển 8 bit với tập lệnh phức tạp (CISC) Sơ đồ khối như hình vẽ trên
CPU là phần chính của vi điều khiển, mục đích là thực thi các lệnh và điều
khiển quá trình làm việc của các khối khác
Bộ tạo dao động tạo xung clock CPU làm việc, bộ tạo dao động có thể tạo
nhiều tần số khác nhau do người sử dụng cấu hình
Điều khiển reset cho phép vi điều khiển bắt đầu lại quá trình hoạt động và đưa
vi điều khiển đến trạng thái hoạt động ổn định
Watch Dog Timer được sử dụng để phát hiện các lỗi vòng lặp của phần mềm Sleep Timer có thể làm cho vi điều khiển hoạt động trở lại từ chế độ ngủ Nó
cũng có thể được sử dụng như là một bộ đếm thời gian
Trang 9InPut – outPut Pins cho phép kết nối giữa khối CPU, khối số và các khối
tương tự lập trình được và thế giới bên ngoài
Digital Programmable Blocks được sử dụng để cấu hình các thành phần số
như PWM, Timer, counter,…do người sử dụng chọn
Analog Programmble Blocks được sử dụng để cấu hình cho phần analog, như
là bộ chuyển đổi AD và DA, bộ lọc, bộ nhận DTMF, khuếch đại
I2C Controller điều khiển giao tiếp I2C
Voltage Reference (điện áp tham chiếu) cần cho hoạt động của các thành
phần analog bên trong các khối analog.(Ví dụ như điện áp tham chiếu cho bộ ADC)
Mac Unit sử dụng để nhân các số 8 bit có dấu
SMP dùng để chuyển mạch nguồn cho PSOC qua nguồn pin dự trữ khi nguồn
Các thanh ghi bên trong CPU:
Program counter (PC) Bộ đếm chương trình
Stack Pointer (SP) Con trỏ ngăn xếp
Accumulator register (A) thanh ghi chứa
Index Register (X) thanh ghi chỉ số
Flag Register (F) thanh ghi cờ
Arithmetic Logic Unit (ALU) khối logic và số học, để tính toán các phép tính số
học (cộng từ nhân chia ) và thực hiện những phép logic (and, or, shift…)
2.2.3 Bộ tạo tần số:
Trang 10Tạo ra nhiều tần số khác nhau cho CPU, và xung clock cho các khối khác hoạt động nhờ vào bộ tạo dao động bên trong cũng như bộ dao động thạch anh bên ngoài Bên trong bộ tạo tần số này có các mạch chia tần số với hệ số chia tùy chọn bởi người sử dụng
2.2.4 Mạch RESET:
2.2.5 Đầu vào và ra của tín hiệu số:
Kết nối giữa VĐK PSoC với thế giới bên ngoài qua các chân I-O Việc truy xuất các cổng được thông qua các thanh ghi PRT0DR, PRT1DR, PRT2DR, PRT3DR, PRT4DR hoặc PRT5DR
Trang 122.2.7 Truy cập các khối số lập trình được:
Các thành phần số, được lưu trữ bên trong các khối lập trình được, mà không phải được nối trực tiếp tới các chân I-O Điều đó được thực hiện theo cách chỉ ra theo hình vẽ dưới đây, miêu tả nhóm 4 khối lập trình số như có thể thấy, chân kết nối được thiết lập sử dụng đường kết nối toàn cục, bộ đa hợp và các đường của các khối lập trình PsoC có thể có 1, 2, hay 4 nhóm khối lập trình số như khối này phụ thuộc vào họ của chúng
2.2.8 Các đường input toàn cục (Global input line):
Global input line thiết lập kết nối giữa những chân và những bộ đa hợp đầu vào Global input line được chia cắt trong hai nhóm, phụ thuộc vào thời tiết chúng có thể nối tới những cổng với (GIO) lẻ hay chẵn (GIE) Quy kết nối: GIO nối với các Port lẻ, chỉ số của đường GIO trùng với chỉ số của port, tương tự cho GIE Chẳng hạn, hàng GIO_0
có thể chỉ nối tới chân 0 của một số những cổng chỉ số lẻ ( P1[0],P3[0],P5[0])
2.2.9 Bộ chọn kênh đầu vào:
Đầu vào bộ chọn kênh lựa chọn một trong những global lines và nối nó tới các block lines (RI[0]….RI[4])
Trang 132.2.10 Khối số khả trình:
Bên trong của khối số khả trình, người dùng có thể chỉnh sửa các thành phần như bộ định thời, bộ đếm, PWM, PRS, CRC và các thiết bị cho SPI, IrDA và giao tiếp UART mà chúng ta có thể thay đổi phần cứng của hệ thống cho những mục đích sử dụng đặc biệt Quá trình cài đặt và kết nối dùng PSoC Designer rất dễ hiểu, nhưng đầu tiên phải nắm bắt được chức năng của những thành phần này Hầu hết các thành phần, như bộ đếm, PRS và CRC có thể được chứa ở bất kỳ block trống nào Mặt khác, sự giao tiếp giữa các thành phần như Rx, Tx, UART và SPI có thể được đặt bên phải của khối khả trình
Số lượng block cần thiết khi sử dụng cho các thành phần được liệt kê như bảng dưới:
Số
Trang 14Tần số tín hiệu trong VC1, VC2, VC3, SYSCLKx2, CPU_32
Bên ngoài từ những khối kề nhau
Đường broacast chung (BC)
Row Input (RI) hay Row Output (RO)
Hầu hết tín hiệu chung ở trong là VC1, VC2 và VC3, bởi vì khi sử dụng thanh ghi prescalers khác nhau, chúng cho phép vượt qua dãy tần số nhất định Nếu các tín hiệu VC1,VC2 và VC3 không tạo nên tần số đặc biệt, bên ngoài từ bộ Counter, Timer hay PWM, được sử dụng như những prescalers phụ Những gạch đứt ở hình trên mô tả đường nối để nối đầu ra của block trước với đầu vào của block tiếp theo Trường hợp tín hiệu cần thiết để được đi chéo qua vài block, kết nối như vậy được thực hiện trên
BC đường tần số broacast chung (BC)
2.2.12 Tín hiệu input
Hầu hết các thành phần, ngoài tín hiệu CLK đều có một hoặc hai tín hiệu input Ví
dụ như ở trong trường hợp của một bộ đếm hay PWM, tín hiệu input được dùng cho việc đếm Những khả năng khác nhau trong việc lựa chọn những tín hiệu input:
Khối input lines (RI), thành phần của tín hiệu ngoài
Khối output lines (RO), thành phần của cascading
Analog block comparator lines
Tín hiệu logic 1 (cao)
Tín hiệu logic 0 (thấp)
2.2.13 Tín hiệu output
Tín hiệu output được dùng để kết nối các khối khả trình với output lines RO Tín hiệu có thể được gửi từ output lines đến đầu ra của vi điều khiển hay đầu vào của vài thành phần Đầu ra multiplexer dùng để nối những khối khả trình với những đường ra chung
2.2.14 Multiplexer
Tùy vào loại multiplexer, những đường output (RO) hay input (RI) của khối khả trình được nối
Trang 152.2.15 Mạch logic
Tín hiệu chọn được mang đến đầu ra của mạch logic Đầu vào khác có thể dùng một vài đường kề nhau của khối khả trình Mạch logic có thể:
Cho qua một hoặc hai tín hiệu
Đảo tín hiệu vào
Thực hiện những phép AND, OR hay XOR …
2.2.16 Output drivers
Mạch ra logic có thể được gửi đến bốn output drivers mà có thể nối đến một hay nhiều đường ra chung Đường của khối khả trình với vài chỉ số có thể được nối đến GOO hoặc GOE với chỉ số giống nhau hoặc gấp 4 lần Những đường ra chung nối giữa các drivers và pins Chúng được tách thành 2 nhóm, phụ thuộc vào nơi chúng có thể được nối đến cổng hay với chỉ số lẻ (FGIO) hay chẵn (GIE) Chỉ những đường và chân với chỉ số giống nhau mới được nối liền Bên cạnh điều đó có một khả năng để thiết lập một kết nối giữa những hàng đầu vào và đầu ra, mà cho phép xử lý bổ sung tín hiệu vào
2.2.17 Điều khiển ngắt
Khi có ngắt, bộ điều khiển ngắt lưu kiểu ngắt
Chờ cho thực thi xong lệnh hiện thời
Nếu ngắt được cho phép và cho phép ngắt toàn cục được đặt bằng 1 (GIE= 1),
sự xử lý ngắt bắt đầu Tiếp tục, stack lưu những giá trị của thanh ghi PCH, PCL
Trang 16 Chương trình thực hiện các lệnh thủ tục ngắt
Khi nó tới lệnh reti, nó sẽ trở lại hương trình chính, những giá trị của thanh ghi
F được khôi phục từ stack, và bộ đếm chương trình được đặt lại tới giá trị trước khi ngắt xuất hiện
2.2.18 Không gian địa chỉ
PSoC có ba không gian địa chỉ:
- Thanh ghi
Vùng địa chỉ thanh ghi chứa đựng những thanh ghi được dùng cho các thiết lập toàn cục cho các khối ngoại vi và những khối lập trình được của một PSoC PSoC có
Trang 17512 thanh ghi, mà được nhóm lại trong hai bank 256 bytes Để truy nhập thanh ghi nào đó, bên cạnh tình trạng tên của nó, cái gì cần sẽ cũng xác định tên trong bank Sự truy nhập tới bank xác định bằng cách sử dụng macro M8C_SetBank0 và M8C_SetBank1, xóa hay thiết lập bit XIO ở thanh ghi CPU_F
2.3 Module WirelessUSB LR 2.4-GHz DSSS Radio SoC CYWUSB6935:
2.3.1 Các đặc điểm của CYWUSB6935:
Hoạt động ở tần số 2.4-GHz
Đượ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
Độ nhạy là -95dBm
Công suất ra tối đa 0dBm
Khoảng cách truyền và nhận tối đa là 50m
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
- Đ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ê
Trang 182.3.4 Chức năng tổng quát của CYWUSB6935:
CYWUSB6935 được thiết kế thành thiết bị wireless hoạt động trong công nghiệp, khoa học, y khoa với băng tần 2.4GHz-2.4835GHz CYWUSB6935 bao gồm 1
bộ thu phát sóng vô tuyến tần số 2.4GHz, 1 modem GFSK CYWUSB6935 hỗ trợ khoảng cách truyền tối đa là 50m
Má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ộ dao độ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 cơ sở để chuyển đổi tần số 1MHz chip thành sóng mang GFSK Máy thu sử dụng bộ tách sóng FM 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:
CYWUSB6935 cung cấp dữ liệu cho bộ Serialzer/Deserialzer (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:
Trang 19CYWUSB6935 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 bit 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 dài 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ị RSSI Tiếp theo xóa thanh ghi Carrier Detect và điều chỉnh
bộ nhận là OFF Đo mức độ nhiễu của kênh tức là xử lý nhiễu, để có kết quả 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
MCU có thể khởi động bộ truyền dữ liệu SPI theo đường quản lý nhiều byte Byte đầu 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 đọc Bit 7=1:SPI ghi
- Bit 6=1: SPI tự động tăng địa chỉ Khi thiết lập, địa chỉ tự động tăng tại mỗi byte cuối trong truy cập nhóm bit truyền, nếu không thì các địa chỉ tương tự được truy cập
- 6 bit là địa chỉ
- 8 bit của dữ liệu
Trang 202.3.5 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 tại 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
Trang 21đị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ủ dụng 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 của thanh ghi Wake Enable (Reg 0x1C), bit 0=1) Dù thanh ghi khởi động treo hay không thì nó được chỉ định bởi trạng thái bit 0 của thanh ghi Wake Status (Reg 0x1D), bit 0)
2.3.6 Các thanh ghi của CYWUSB6935:
Trang 22Thanh ghi điều khiển:
Thanh ghi REG_CONFIG:
Thanh ghi REG_SERDES_CTL:
Thanh ghi REG_RX_INT_EN:
Trang 23Thanh ghi Reg_RX_INT_STAT:
Thanh ghi REG_RX_DATA_A:
Thanh ghi REG_RX_VALID_A:
Thanh ghi REG_RX_DATA_B:
Thanh ghi REG_RX_VALID_B:
Thanh ghi REG_TX_INT_EN:
Thanh ghi REG_TX_INT_STAT:
Thanh ghi REG_TX_DATA:
Thanh ghi REG_TX_VALID:
Thanh ghi REG_RSSI:
Trang 24Thanh ghi REG_CLOCK_MANUAL:
Thanh ghi REG_CLOCK_ENABLE:
Thanh ghi REG_PA:
Trang 25Phần 3: SƠ ĐỒ MẠCH VÀ LƯU ĐỒ THUẬT TOÁN
3.1 Cấu hình phần cứng trên PSOC Cyp29566
3.1.1 Khối giao tiếp SPI Master
Đặc điểm của khối SPI
- Hỗ trợ giao thức SPI Master
- Hỗ trợ mode 0,1,2,3
- Nguồn xung Clock và MISO đầu vào tùy chọn được
- Kết nối ngõ ra cho MOSI và chân CLK tùy chọn được
Trang 26Ở đây ta chọn xung clock cho CPU SysemClock/2 với SystemClock = 24MHz
Các nguôn xung VC1, VC2, VC3 có thể tùy chọn hệ số chia
Sơ đồ kết nối bên trong (interconnect)
Chân Clock của khối SPI được nối tới Row_0_Output_1, và được nối tới GlobalOutOdd_1 (các đường kết nối mà có thể nôi tới các có chỉ 1 của 1 port), và sau đó nối tới chân P1.1
Chân MOSI -> GlobalOutEven_1-> P1.0
Ngõ vào: MISO -> GlobalInEven_3->P1.3
Ngoài các thiết lập trên cho khối SPI ta còn thiết lập thêm các chân nSS (chân chọn, tích cực mức thấp)-> P1.5, chân này là chân đầu ra nên chọn DriveMode la Strong, chân nRESET (dùng để reset module wireless) ->P1.4 drivemode -> Strong,
nPD-> P1.6 DriveMode -> Strong
PSOC cho ta khả năng cấu hình một cách linh hoạt các khối Digital và các chân
Các hàm API mà phần mềm PSOC Designer cung cấp:
void SPIM_Start(BYTE bConfiguration)
Trang 28LCD có 2 thanh ghi 8 bit quan trọng đó là quan trọng: Thanh ghi lệnh IR ( Instructor Register) và thanh ghi dữ liệu DR ( Data Register)
Bảng mã lệnh đến thanh ghi của LCD:
Trang 291C Dịch toàn bộ hiển thị sang phải
thông tin mới Trong mọi trường hợp cần kiểm tra cờ bận trước khi ghi bất kì dữ
liệu nào lên LCD
*Module này không chiếm khối Digital, để chọn module này ta chỉ cần click chọn trong mục Misc Digital
Module LCD được nối tới Port 2
Các hàm API:
void LCD_Start(void);
void LCD_Init(void);
void LCD_Position(BYTE bRow, BYTE bCol);
void LCD_PrString(CHAR * sRamString);
void LCD_PrCString(const char * sRomString);
void LCD_PrHexByte(BYTE bValue);
void LCD_PrHexInt(INT iValue);
Trang 30BYTE I2Cm_fSendStart(BYTE bSlaveAddr, BYTE fRW);
BYTE I2Cm_fSendRepeatStart(BYTE bSlaveAddr, BYTE fRW);
void I2Cm_SendStop(void);
BYTE I2Cm_fWrite(BYTE bData);
BYTE I2Cm_bRead(BYTE fACK);
Các byte định mode hoạt động:
Trang 313.1.4 Giới thiêu DS1307
Sơ đồ nguyên lí của mach tạo xung đồng hồ:
Giơi thiệu các chân và dạng tín hiệu tại đó:
Vcc, GND – Nguôn DC cung cấp năng lượng cho DS1307 được đưa vào các
chân này Nguồn Vcc +5V được đưa vào Khi nguồn Vcc thấp hơn V_BAT thì sẽ tự
động ngắt Vcc chuyển sang V_BAT
V_BAT – Sử dụng nguôn Pin 3V đề phòng mất điện và sụt áp Vcc
SCL(Serial Clock Input) – SCL sử dụng đồng bộ di chuyển dữ liệu trên giao
tiếp nối tiếp
SDA(Serial Data Input/Output) – SDA là chân input/output cho giao tiếp I2C SQW/OUT (Square Ware/Output Driver) – Khi được phép SQWE bit to 1,
Chân SQW/OUT có thể cho ra dang xung (1Hz, 4kHZ, 8kHz, 32kHz) Các chế độ này được quy đinh bởi các bit của thanh ghi Control
Registers
X1, X2 – Kết nối dao động thạch anh 32.768
kHz
RTC và sơ đồ địa chỉ RAM
Thanh ghi RTC được xác định trong địa chỉ từ
00h tới 07h RAM chứa đia chỉ từ 08h tới 3Fh
Đồng hồ và lịch:
Thông tin thời gian và lịch được thu dược
bằng cách đọc các bytes trong thanh ghi RTC Thời gian và lịch đuợc thiết lập hoăc từ
SCL
SDA SQW
Y 1 CRY STAL
VBAT 5V
R3 2k2
R18 RESISTOR
GND
D9 LED
Trang 32máy tính và dược ghi vào thanh ghi RTC Nội dung của thời gian và lịch được trong
thanh ghi được định dạng BCD Bit 7 của thanh ghi 0 gọi là bit dừng đồng hồ Khi bit được thiết lập băng 1, thì oscillator được ngắt Khi xoá về 0, oscillator được mở
DS1307 có thế hoạt động ở chế độ 12 giờ hoặc 24 giờ Bit 6 của thanh ghi giờ được định nghĩa là chọn chế độ 12- hoặc 24h bằng cách chọn bit Khi cao, 12 h được chọn Trong chế độ 12h, bit 5 là AM/PM bit với mức logic cao sẽ trở thành PM
Thanh ghi điều khiển:
Thanh ghi điều khiển của DS1307 được sử dụng để điều khiền hoạt động của
chân SQW/OUT
OUT (Output control): Đây là bit điều khiển mức ra của chân SQW/OUT khi
dạng sóng vuông bị ngắt Nếu SQWE=0, mức logic mở của chân SQW/OUT là 1 và 0 nếu OUT=0
SQWE (Square Wave Enable): Đây là bit, khi ở mức logic 1, sẽ cho phép
oscillator output Tần số của dạng sóng vuông output được thiết lập bởi bit RS0 và
RS1
RS ( Rate Select): Đây là bit điều khiển tần số của dạng sóng ra hình vuông khi
sóng vuông được mở Bảng dưới đây là list các tần số dạng sóng vuông được chợn với các bit RS
Trang 33
Sơ đồ điển hình của 2-wire bus:
Dạng sóng trên bus I2C:
Quá trình truyền dữ liệu từ Master tới slave :
- Gửi địa chỉ của slave lên đương truyền Dùng để chọn Slave nào hoạt động, đợi cho đến khi truyền xong
- Gửi sô byte của dữ liệu Đợi cho đến khi truyền xong
- Slave sẽ gửi lại ACK bit sau mỗi byte nhân được
- Dữ liệu truyền với bit (MSB) đầu tiên cực kì quan trọng
Quá trình truyền dữ liệu từ slave tới master
- Gưi địa chỉ của slave được truyền bởi master
- Slave sẽ gưi lại ACK bit
Trang 34- Tiếp theo slave truyền số byte của dữ liệu
- Master sẽ gửi lại ACK bit sau khi nhận một byte dữ liệu
- Tại byte nhận cuối cùng , sẽ gui “ not ACK”
Thiết bị master phát tất cả xung serial clock, START và STOP condition Quá trình
truyền dữ liệu sẽ được bắt đầu với START condition và kết thúc với STOP condition
Dữ liệu truyền với bit MSB đầu tiên
DS1307 có thể hoạt động theo hai chế độ:
- Slave receiver (DS1307 write mode): Serial data và clock được nhận từ SDA và
SCL Sau mỗi byte nhận được sẽ truyền ACK bit START và STOP condition được công nhận là bắt đầu và kết thúc của truyền nối tiếp Byte địa chỉ là byte đầu tiên
sau khi nhận được sau start condition và được phát bởi master Byte địa chỉ của
DS1307 có 7 bit đó là 1101000, tiếp theo là bit (R/W), với quá trình write thì bit
R/W bằng 0 Sau khi nhận và giải mã thì thiết bị sẽ xuất ra bit ACK trên đường
SDA Master sẽ truyền thanh ghi địa chỉ tới DS1307, điều đó sẽ thiết lập register pointer trên DS1307 Master sẽ bắt đầu phát mỗi byte của dữ liệu và DS1307 sẽ
phát lại ACK sau mỗi byte nhận được Master sẽ phát bit STOP condition sau khi kết thúc việc viết dữ liệu
- Slave transmitter mode (DS1307 read mode): Byte địa chỉ là byte đầu tiên nhận
sau sau START condition và được phát bởi master Byte địa chỉ của DS1307 có bit địa chỉ, đó là 1101000, sau đó là bit (R/W) vơi read thì bit co giá trị 1 Sau khi nhận và giải mã byte địa chỉ thiết bị sẽ nhận được ACK trên đường SDA DS1307 truyền dữ liệu bắt đầu với con trỏ thanh ghi địa chỉ tới con trỏ thanh ghi DS1307 sẽ
7-nhận được “not acknowledge” là kết thúc việc đọc
3.2 Sơ đồ mạch và nguyên lý hoạt động:
3.2.1 Mạch điều khiển thiết bị:
Trang 35R23 RESISTOR SIP 9
D3
LED D4
LED
J10
CON2
1 LCD_D5
5V
12V
3V3 nRESET nSS MISO
MOSI
Q5 NPN BCE
SCK
R19 RESISTOR R20 RESISTOR
5V
D10 3V9
LCD_RS
R13 RESISTOR
R17 RESISTOR
R15 RESISTOR
SCL
5V
SQW
Y 1 CRY STAL
VBAT
D5 DIODE
D6 DIODE
C4 CAP
5V
D7 DIODE
C5 CAP
D8 DIODE
Q3 NPN BCE
Q4 NPN BCE
LS2
RELAY SPDT
3 54 1
ISO1 OPTO ISOLATOR-A
R10 330
R11 330
C3 CAP
R3 2k2
R18 RESISTOR
GND
LCD_D6
R22 2k2
D9 LED
J5 CON16
Mạch điều khiển thiết bị gồm các phần:
- VDK PSOC bộ điều khiển trung tâm
- Mạch điều khiển relay
3.2.2 Mạch giao tiếp máy tính:
Trang 36Q6 NPN BCE
D11 LED
R23 RESISTOR
5V
R24
RESISTOR
nRESET 3V3
MISO nSS IRQ
2 4 6 8 10 12
Q5 NPN BCE
R19 RESISTOR R20
RESISTOR
D10 3V9
C4 CAP C5 CAP
3V3
5V
J5
CON2 1 2
Module CYWUSB được nối trực tiếp tới các chân của cổng song song theo so đồ trên
3.3 Lưu đồ thuật toán:
3.3.1 Chương trình chính:
Trang 37Giải thích:
- Khởi tạo hệ thống: sẽ khởi tạo các module cần thiêt, bao gồm:
o Khởi tạo LCD
o Khởi tạo I2C
o Khởi tạo SPI
o Khởi tạo module Wireless
o Set chế độ nhận cho Wireless
- Việc kiểm tra dữ liệu từ Wireless được thực hiện bằng cách đọc giá trị trong
thanh ghi trạng thái của Wireless Module (REG_RX_INT_STAT)
- Đọc DS1307 và hiển thị LCD dùng ham API của module I2Cm và LCD, các
hàm API này do PSOC Designer cung cấp
Begin
Khởi tạo hệ thống
Có data từ wireless
Thực hiện lênh
từ máy tính
Đọc DS1307, hiển thị thời gian
Có hẹn giờ
Có phím nhấn
Điều khiển thiết bị
Thực hiện chương trình cài đặt
Trang 38- Sau đó giá trị thời gian hiện thời được so sánh với giá trị hẹn giờ cài đặt, nếu
đúng giờ hẹn, các thiết bị được hẹn giờ sẽ được bật hay tắt tùy theo cài đặt
- Kiểm tra phím: nếu có phím nhấn, chương trình sẽ thực hiện phần cài đặt trực tiếp tại mạch, chương trình cài đặt bao gồm: chương trình điều chỉnh giờ,
chương trình, hiển thị menu để điều khiển thiết bị và thông tin về thiết bị
3.3.2 Chương trình cài đặt giờ:
Begin
Đọc DS1307, hiển thị ,i=6
Key == 4
(phím SET)
Chờ phím nhấn
Chuyển vị trí con trỏ, i
Key = =2 (phím tăng)
Key == 3 (Phím giảm)
Tăng giá trị mục hiện thời (mục i)
i==FFH (-1)
End
Trang 39- Hàm tăng và giảm mục hiện thời (mục i)( ngày, tháng, năm,…) sẽ căn cứ vào
giá trị của i để tăng hoặc giảm thích hợp hàm: inc_field(i),dec_field(i) sẽ tăng hoặc giảm mục I 1 đơn vị, hàm này cúng có so sánh tùy theo giá trị hiện thời
đang là giờ phút giây… sẽ cho phép giá trị tăng (giảm) trong phạm vi cho phép (ví dụ: 0<phút< 60…), và hiệu chỉnh số BCD (dữ liệu đọc từ DS1307 ở dạng
BCD)
3.3.3 Chương trình hiển thị menu:
Hàm hiển thị menu (void hien_thi_menu(const char* const menu[],BYTE n,BYTE
menu_thiet_bi)) sẽ hiển thị menu, khi người sử dụng phím 2, hoặc 3 sẽ chuyển mục
con (menu con) Mode se lưu giá trị vị trí mục được chọn
Trang 403.3.4 Chương trình hiển thị và cài đặt trên PSOC:
hien_thi_menu(men uchinh,5,0);
Begin
Xoa_cai_dat();
hien_thi_menu(men uthongtin,10,0);
hien_thi_menu(men ucaidat,5,0);
hien_thi_menu(menut hietbi,6,thiet_bi);
cai_dat_thiet_bi(thi et_bi,mode);