Chương 1: Tổng quan, giới thiệu sơ lược về đề tài, giới hạn đề tài đã thực hiện. Chương 2: Cơ sở lý thuyết, tình bày về các nguyên tắc đã tìm hiểu để xây dựng module trong đề tài và cấu tạo cũng như tính năng linh kiện được sử dụng trong đề tài. Chương 3: Thiết kế hệ thống, trình bày về cách thức hoạt động của hệ thống, các module sử dụng trong hệ thống và nguyên lý mà nó hoạt động, các bước thiết kế các module và liên kết chúng lại để xây dựng hệ thống, Chương 4: Kết quả, trình bày về kết quả mà em đã làm đươc và kết quả thực nghiệm. Chương 5: Kết luận và hướng phát triển, là nhận xét của em về kết quả thu được của hệ thống, cũng như đưa ra hướng khắc phục các nhược điểm của đề tài hiện tại, hướng phát triển cho hệ thống trong tương lai.
9 do an CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. PHƯƠNG THỨC HOẠT ĐỘNG CỦA UART Các máy tính/vi điều khiển thường truyền tín hiệu theo hai cách: Song song và nối tiếp. Trong kênh truyền song song, khi truyền một gói dữ liệu n-bit thì ta cần n đường truyền, mỗi bit trong gói dữ liệu sẽ đi trên một đường truyền. Trong kênh truyền nối tiếp, ta chỉ cần một đường truyền để truyền tuần tự n bit của gói dữ liệu.
Như vậy, để truyền một gói dữ liệu trong kênh truyền song song ta tốn một khoản thời gian tbit, trong kênh truyền nối tiếp để truyền n bit ta tốn khoản thời gian n*tbit : Hình 2.1 Kênh truyền nối tiếp Các loại kênh truyền dữ liệu nối tiếp: Các kênh truyền được gọi là simplex (đơn công), hay half duplex(bán song công), hay full duplex (song công) tùy thuộc vào kiểu mà mình kết nối. 10 do an – Kênh truyền nối tiếp simplex chỉ truyền được theo một hướng duy nhất trên một đường truyền xác định.2 Kênh truyền nối tiếp simplex – Kênh truyền nối tiếp half –duplex chỉ có một trường truyền nhưng dữ liệu có thể truyền theo 2 hướng, tuy nhiên trong một lúc, dữ liệu chỉ đi được theo 1 hướng. – Kênh truyền nối tiếp full – duplex có 2 đường truyền dữ liệu riêng biệt, một Hình 2.2 Kênh truyền nối tiếp half - duplex đường truyền và một đường nhận, cho phép dữ liệu truyền nhận theo 2 hướng cùng lúc.3 Kênh truyền nối tiếp full - duplex 11 do an Đồng bộ dữ liệu trong các kênh truyền nối tiếp – Tất cả các kênh truyền nối tiếp đều yêu cầu tín hiệu clock nhằm thiết lập tốc độ tín hiệu truyền nhận dữ liệu giữa các bên cho khớp với nhau. Tùy thuộc vào vào cách sử dụng tín hiệu clock như thế nào mà chúng ta có định nghĩa về kênh truyền đồng bộ hay kênh truyền không đồng bộ.
– Kênh truyền không đồng bộ sử dụng bộ tạo tín hiệu clock độc lập ở mỗi thiết bị, dữ liệu được truyền theo một khung truyền và tốc độ baud được thống nhất bởi bên truyền và bên nhận. Còn đối với kênh truyền đồng bộ sẽ có những tín hiệu clock được truyền đồng thời với dữ liệu trên một đường truyền nối giữa hai thiết bị. Khung truyền và một số khái niệm, thuật ngữ Khung truyền dữ liệu (data frame) – Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nối tiếp là một dãy các số 0 và 1, và rất khó để hiểu được ý nghĩa của các dữ liệu ấy nếu bên phát và bên thu không cùng thống nhất về một tập các luật, một thủ tục, về cách dữ liệu được đóng gói, bao nhiêu bit tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc. Bên cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi truyền và nhận.
Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data hay thứ tự truyền các bit trên đường truyền cũng được quy định bởi khung truyền. Hình ảnh cấu trúc dữ liệu trong truyền thông nối tiếp bất đồng bộ: Hình 2.4 Truyền nối tiếp bất đồng bộ 12 do an – Start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Start là bit bắt buộcphải có trong khung truyền, và nó là một bit thấp (0). – Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.
Số lượng bit data tùy thuộc vào các loại vi điều khiển khác nhau, thường thì data có 8bit. Trong truyền thông nối tiếp UART, bit có trọng số nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có trọng số lớn nhất (MSB – Most Significant Bit, bit bên trái). Tuy nhiên thứ tự truyền này có thể được cài đặt bởi người dùng. – Parity là bit dùng để kiểm tra dữ liệu truyền có đúng không (một cách tương đối).
Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn nghĩa là số lượng số “1” trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số lượng các số “1” trong parity lẻ luôn là số lẻ. Thí dụ: nếu dữ liệu của bạn là 10111011 nhị phân, có tất cả 6 bit có giá trị “1” trong dữ liệu này, nếu quy định parity chẵn được dùng, bit parity sẽ mang giá trị 0 để đảm bảo tổng các số “1” là số chẵn (6 số 1).
Nếu parity lẻ được yêu cầu thì giá trị của parity bit là 1. Sau khi truyền chuỗi dữ liệu kèm theo cả bit parity trên, bên nhận thu được và kiểm tra lại tổng số số “1” (bao gồm cả bit parity), nếu vi phạm quy định parity đã đặt trước thì ta khẳng định là dữ liệu nhận được là sai, còn nếu không vi phạm thì cũng không khẳng định được điều gì (mang tính tương đối). Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền. – Stop bits là 01 hoặc nhiều bit báo cho thiết bị nhận rằng một gói dữ liệu đã được gởi xong.
Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bit bắt buộc xuất hiện trong khung truyền. Ví dụ về gói dữ liệu 0x7B với lựa chọn kiểm tra bít chẵn: Hình 2.5 ví dụ truyền nối tiếp bất đồng bộ 13 do an Tốc độ bit và tốc độ baud – Có hai thuật ngữ thường dùng trong truyền số liệu là tốc độ bit (bit rate) và tốc độ baud (baud rate) thường bị nhầm lẫn. Tốc độ bit là số bit được truyền trong một giây, Tốc độ baud là số đơn vị tín hiệu trong một giây cần có để biểu diễn số bit vừa nêu.
Khi nói về hiệu quả của máy tính, thì tốc độ bit luôn là yếu tố quan trọng. Tuy nhiên, trong truyền số liệu ta lại cần quan tâm đến hiệu quả truyền dẫn dữ liệu từ nơi này đến nơi khác, như thế khi dùng ít đơn vị tín hiệu cần có, thì hiệu quả càng cao, và băng thông truyền càng thấp; như thế thì cần chú ý đến tốc độ baud. Tốc độ baud xác định băng thông cần thiết để truyền tín hiệu.Tốc độ bit là tốc độ baud nhân với số bit trong mỗi đơn vị tín hiệu. Tốc độ baud schia cho số bit biểu diễn trong mỗi đơn vị truyền.
Tốc độ bit là số bit trong mỗi giây. Tốc độ baud là số đơn vị tín hiệu trong mỗi giây. Tốc độ baud thường bé hơn hay bằng tốc độ bit. – Một ý niệm tương đồng có thể giúp hiểu rõ vấn đề này; baud tương tư như xe khách, còn bit tương tự như số hành khách.
Một chuyến xe mang một hoặc nhiều hành khách. Nếu 1000 xe di chuyển từ điểm này sang điểm khác chỉ mang một hành khách (thí dụ lái xe) thì mang được 1000 hành khách. Tuy nhiên, với số xe này, mỗi xe mang 4 người, thì ta vận chuyển được 4000 hành khách. Chú ý là chính số xe, chứ không phải số hành khách, là đơn vị lưu thông trên đường, tức là tạo nhu cầu về độ rộng của xa lộ.
Nói cách khác, tốc độ baud xác định băng thông cần thiết, chứ không phải số bit. NGUYÊN TÁC GIAO TIẾP SPI Giao tiếp SPI được hãng motorola giới thiệp ở giữa năm 1980 và được sử dụng trong các dòng vi điều khiển của họ. Ngày nay giao tiếp SPI được sử dụng phổ biến để giao tiếp với các vi điều khiển, eeprom, IC thời gian thực. SPI là giao thức nối tiếp đồng bộ đa mục đích (general-purpose synchronous serial interface), trong khi thực hiện giao tiếp SPI dữ liệu truyền và nhận được diễn ra một các đồng thời.
Một xung clock đồng bộ dùng để dịch và lấy mẫu thông tin trên hai đường dữ liệu. 14 do an Thiết bị giao tiếp SPI sử dụng mối quan hệ master- slaver (chủ-tớ), do thiết bị tớ không được định địa chỉ nên khi giao tiếp một master với nhiều slaver ta cần đường chọn chíp CS, để chọn slave nào cần truyền nhận dữ liệu. Vậy số bus cho giao tiếp này là 3 + (1. Các cách kết nối cơ bản: Hình 2.1 Sơ đồ kết nối SPI Giao tiếp 1 master - 1 slave Tên và chức năng của các chân MOSI (Master Output Slave Input.):Chân này được sử dụng để truyền dữ liệu khi thiết bị được cấu hình là master và là chân nhận dữ liệu khi cấu hình là slave MISO (Master Input Slave Output): Chân này được sử dụng để nhận dữ liệu khi khi thiết bị được cấu hình là Master và truyền dữ liệu khi cấu hình bởi slave SS: Tín hiệu này được tạo bởi Master để lựa chọn thiết bị slave muốn truyền nhận, Đối với thiết bị master chân này được cấu hình là chân xuất (output) và là chân nhập (input) với slave SCK: Chân SCK cấp xung đồng bộ để truyền nhận dữ liệu với một Slave nào đó được chọn 15 do an Hình 2.2 Sơ đồ nguyên lý kết nối SPI Cả Master và Slave đều có thanh ghi dịch nối tiếp ở bên trong.
Thiết bị Master bắt đầu việc trao đổi dữ liệu bằng cách truyền đi một Byte vào thanh ghi dịch của nó, sau đó Byte dữ liệu sẽ được đưa sang Slave theo đường tín hiệu MOSI (SDI), Slave sẽ truyền dữ liệu nằm trong thanh ghi dịch của chính nó ngược trở về Master thông qua đường tín hiệu MISO (SDO). Bằng cách này, dữ liệu của hai thanh ghi sẽ được trao đổi với nhau.