CHƯƠNG 1: TỔNG QUAN Giới thiệu sơ lược và khái quát về đề tài cũng như mục tiêu và các phương pháp, đối tượng nghên cứu đối với yêu cầu hệ thống. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Nêu các lý thuyết cần thiết để sử dụng trong đề tài. CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG Trình bày sơ đồ hệ thống và giải thích hoạt động của hệ thống. Đưa ra các phương pháp lựa chọn phần cứng và xác định lựa chọn phù hợp với hệ thống.
Tính toán đưa ra giải thuật, thuật toán phần mềm. 3 CHƯƠNG 4: KẾT QUẢ THỰC HIỆN Trình bày kết quả đã thực hiện về phần cứng và phần mềm. CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận đề tài bằng những kết quả đạt được, đưa ra những mặt hạn chế mà chưa làm được hoặc còn thiếu xót từ đề tài qua đó đưa ra hướng phát triển cho hệ thống.1 Tổng quan về các chuẩn truyền 2.1 Chuẩn giao tiếp UART * Khái niệm: UART (Universal Asynchronous Receiver/Transmitter) là một giao thức truyền thông phần cứng dùng để giao tiếp không đồng bộ giữa các thiết bị. Giao tiếp với nhau thông qua việc nối chân Rx (nhận) và Tx (truyền) của 2 thiết bị với nhau: Hình 2.
1 Giao diện ghép nối giao thức UART. Vì không có xung CLK nên hai thiết bị sẽ phải thống nhất chung với nhau bằng tốc độ truyền nhận ví dụ như thống nhất tốc độ truyền nhận là 9600, bên gửi với tốc độ 9600 thì bên nhận cũng phải nhận với tốc độ 9600, bên nhận chỉ cần phát hiện được thời điểm bắt đầu nhận. Ngoài ra còn thống nhất về số bit dữ liệu sẽ nhận. Tốc độ truyền của UART được thiết lập ở các mức độ chuẩn như 9600, 19200, 115200 và nhiều tốc độ khác.
Tốc độ này được xác định bằng số bit được truyền mỗi giây và thường chọn tùy theo các yêu cầu hệ thống khác nhau. Hoạt động của UART: Hình 2. 2 truyền dữ liệu UART Dữ liệu truyền và nhận được gửi theo khung: - Start bit (luôn ở mức thấp): bắt đầu khung dữ liệu. 5 - Data bits (0-8): chứa dữ liệu thông tin gửi hoặc nhận theo truyền nhận LSB.
- Parity bit: kiểm tra bit chẵn hay lẻ để kiểm tra xem data có lỗi hay không. - Stop bit (luôn ở mức cao): kết thúc khung dữ liệu * Truyền thông nối tiếp: Các loại kênh chuyền dữ liệu nối tiếp: - Simplex: chế độ này chỉ truyền được một chiều duy nhất trên một đường truyền xác định, tức là dữ liệu chỉ di chuyển từ thiết bị này sang thiết bị khác một cách đơn hướng. 3 Kênh truyền nối tiếp simplex. - Half – duplex: ở chế độ này dữ liệu chỉ có thể đi một đường duy nhất tại một thời điểm.
Nhưng thiết bị lại có thể gửi hoặc nhận dữ liệu, chỉ được làm 1 nhiệm vụ là gửi hoặc nhận dữ liệu đối với một thiết bị. 4 Kênh truyền nối tiếp half – duplex. - Full – duplex: là chế độ cho phép dữ liệu truyền nhận theo hai hướng cùng một lúc và hai hướng này là 2 đường truyền dữ liệu riêng biệt, một đường truyền và một đường nhận. 5 Kênh truyền nối tiếp full – duplex.
* Truyền thông đồng bộ và không đồng bộ: Truyền thông đồng bộ: là quá trình dùng một đường dữ liệu và một đường xung nhịp để đồng bộ việc gửi và nhận dữ liệu với nhau. Khi gửi thì thiết bị bên gửi sẽ điều khiển xung nhịp để báo trước cho thiết bị nhận biết để quá trình nhận gửi hoạt động một cách chính xác. Truyền thông không đồng bộ: Trái ngược lại, ở truyền thông không đồng bộ cũng chỉ dùng một đường truyền dữ liệu nhưng mà không cần xung nhiệp riêng. Các dữ liệu được truyền đi qua các khung gồm các phần như Start bit, Data bits và Stop bit.2 Chuẩn giao tiếp SPI * Khái niệm: SPI (Serial Peripheral Interface) là một chuẩn truyền thông nối tiếp tốc độ cao.
Đây là kiểu truyền thông Master-Slave, trong đó có một chip Master điều phối quá trình truyền thông và các chip Slave được điều khiển bởi Master. Do đó, truyền thông chỉ xảy ra giữa Master và Slave. SPI hỗ trợ truyền song công (full duplex), nghĩa là quá trình truyền và nhận có thể xảy ra đồng thời tại cùng một thời điểm. Chuẩn giao tiếp SPI giữa Master và một Slave Các thành phần của SPI: SCLK (Serial Clock): đây là dây tạo tín hiệu xung CLK.
Xung này sẽ được tạo ra bởi Master để đồng bộ hóa dữ liệu, bên Slave chỉ việc đợi tín hiệu xung từ Master để thực hiện chứ bản thân nó không có khả năng tự tạo ra xung Clock. MISO (Master Input / Slave Output): dữ liệu sẽ được gửi Slave đến Master. Đối với Slave thì đây sẽ là chân output, còn với Master thì sẽ là chân input. MOSI (Master Output / Slave Input): dữ liệu sẽ được gửi từ Master đến Slave.
Đối với Master thì đây sẽ là chân output, còn với Slave thì sẽ là chân input. SS (Slave Select): chân chọn Slave do Master điều khiển. Làm việc ở mức cao khi nào muốn giao tiếp Slave thì Master sẽ gửi tín hiệu kéo xuống mức thấp, khi đó Slave sẽ được hoạt động. * Hoạt động của SPI: Trong chuẩn truyền thông SPI thì một Master có thể giao tiếp với một hoặc nhiều Slave.
Có hai cách để Master giao tiếp với nhiều Slave: - Nối song song các chân Slave select: 8. 7 Nối song song Slave select. Đối với hình 2.6 trên, ta thấy rằng chân SCLK sẽ nối chung từ Master đến các Slave. Tương tự như vậy chân MOSI cũng sẽ được nối chung từ Master đến các Slave.
Chân MISO sẽ nối chung từ các Slave về Master. Và để phân biệt được dữ liệu nào của Slave nào thì mỗi chân SS của Master sẽ được nối với từng Slave riêng và tất cả đều ở mức cao (các Slave đều không hoạt động) nếu muốn Slave nào hoạt động thì Master sẽ gửi tín hiệu kéo chân SS của Slave đó về mức thấp, khi đó Slave sẽ hoạt động. - Nối chuỗi các chân Slave select: Hình 2. 8 Nối chuỗi Slave select.7 giao thức sẽ hoạt động theo quy tắc như sau: Master sẽ gửi dữ liệu qua con Slave đầu tiên qua chân MOSI, khi Slave đầu tiên nhận được dữ liệu này thì nó sẽ đẩy dữ liệu qua đường MISO của chính nó.
Sau đó tín hiệu này sẽ được đẩy vào MOSI của Slave thứ hai rồi lại đẩy dữ liệu ra khỏi bằng chân MISO của nó. Tương tự vậy lại đưa dữ liệu và MOSI của Slave thứ ba rồi lại đẩy dữ liệu ra khỏi bằng MISO. Dữ liệu được đưa ra ở MISO của Slave thứ ba sẽ được đưa vào chân MISO của Master. Chân SS sẽ được nối chung lại với nhau.
Chính vì điều đó thì muốn Slave hoạt động thì cả ba Slave đều được kéo xuống mức thấp dẫn đến việc dữ liệu truyền đi lâu và có thể không nhận được nếu có Slave nào đó bị hư. Vì hai gói dữ liệu trên Master và Slave được gửi qua lại đồng thời, quá trình truyền dữ liệu này được gọi là "song công". 9 Truyền dữ liệu SPI Việc sử dụng SPI giúp truyền thông hiệu quả giữa các vi điều khiển và các thiết bị ngoại vi trong hệ thống nhúng, nhờ khả năng truyền dữ liệu tốc độ cao và tính linh hoạt trong cấu hình hoạt động.3 Chuẩn giao tiếp I2C * Khái niệm: I2C (Inter-Integrated Circuit) hay còn được gọi là giao thức hai dây, đây là giao thức giúp giao tiếp giữa các vi điều khiển với các module ngoại vi hay với các vi điều khiển khác bằng cách dùng hai dây đó là SDA và SCL. 10 Đây là chuẩn truyền thông đồng bộ bằng xung CLK tức cứ 1bit dữ liệu sẽ đi cùng 1bit xung CLK.
Chỉ có Master mới tạo được xung CLK chứ Slave không có khả năng tạo ra xung CLK. 10 Chuẩn giao tiếp I2C. * Địa chỉ và định địa chỉ: I2C sử dụng 7bit để định địa chỉ, cho phép định địa chỉ tới 128 thiết bị trên một bus, trong đó 16 địa chỉ được dành cho các mục đích đặc biệt, chỉ có 112 địa chỉ có thể sử dụng cho các thiết bị thông thường. Ngoài ra, I2C còn hỗ trợ chế độ 10bit địa chỉ, cho phép định địa chỉ tới 1024 thiết bị, nhưng thực tế chỉ có 1008 địa chỉ có thể sử dụng, còn lại 16 địa chỉ dùng cho mục đích riêng.
* Các thành phần và đặc điểm của I2C: I2C sử dụng hai đường truyền tín hiệu chính: SCL (Serial Clock Line): Đây là đường xung nhịp đồng hồ, dùng để đồng bộ hóa các tín hiệu trên bus. SDA (Serial Data Line): Đây là đường dữ liệu, dùng để truyền dữ liệu giữa các thiết bị. 11 Vì I2C sử dụng định địa chỉ nên có thể điều khiển nhiều Slave. Với địa chỉ 7 bit, sẽ có 128 (2^7) địa chỉ duy nhất.
Dù việc sử dụng địa chỉ 10bit không phổ biến, nó cung cấp tới 1.024 (2^10) địa chỉ duy nhất. Để kết nối nhiều slave đến một master duy nhất có thể dùng trở kéo lên 4,7K Ohm để kết nối các đường SDA và SCL với Vcc. 11 Chuẩn giao tiếp I2C One Master – Multi Slave * Tốc độ truyền của I2C: I2C hỗ trợ nhiều chế độ hoạt động khác nhau, bao gồm: Chế độ chuẩn (Standard Mode): Hoạt động ở tốc độ 100 Kbit/s. Chế độ tốc độ thấp (Low-speed Mode): Hoạt động ở tốc độ 10 Kbit/s.
Chế độ tốc độ cao (High-speed Mode): Hoạt động ở tốc độ lên đến 3. * Hoạt động của I2C: Các Slave trong giao thức I2C không thể trực tiếp giao tiếp với nhau được mà các ngoại vi hay vi điều khiển đóng vai trò là Slave thì nó sẽ chỉ chờ khi nào 12 Master sẽ gửi tín hiệu đến Slave tương ứng thì Slave đó mới giao tiếp với Master, giao thức đó có thể là truyền hoặc nhận dữ liệu. Và trong khi xây dựng hệ thống xử dụng giao thức I2C ta cần phải ấn định địa chỉ từng Slave sao cho không trùng với các Slave khác. Trong I2C, dữ liệu sẽ được truyền trong các gói tin (Message) và được chia thành các khung.
Gói tin gồm một Address Frame, Start Condition, Stop Condition, Read/Write Bi) và ACK/NACK (ACK/NACK Bit) giữa các Data Frame Hình 2. 12 Khung dữ liệu Message được truyền đi Start Condition: SDA chuyển từ mức điện áp cao xuống mức điện áp thấp trong khi SCL vẫn đang ở mức điện áp cao. Điều này do Master làm ra và bên Slave sẽ phát hiện ra sự thay đổi này để biết rằng Master chuẩn bị gửi data. Master sẽ gửi Address Frame là một chuỗi 7bit hoặc 10bit (thông thường là 8bit trong đó là 7bit địa chỉ và 1bit là yêu cầu đọc/ghi trong Slave này) đến cho Slave.