1. Trang chủ
  2. » Giáo Dục - Đào Tạo

SỬ DỤNG USART để KIỂM TRA KÝ TỰ NHẬP VÀO VÀ ĐIỀU KHIỂN LED

22 38 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÀI TẬP LỚN MƠN KỸ THUẬT VI XỬ LÝ ĐỀ TÀI 15: SỬ DỤNG USART ĐỂ KIỂM TRA KÝ TỰ NHẬP VÀO VÀ ĐIỀU KHIỂN LED TÊN NHÓM 15 THÀNH VIÊN NHÓM NGUYỄN MẠNH VIỆT – B19DCVT433 Thái Bình – 11/2021 Phân chia cơng việc: Nguyễn Mạnh Việt : Phụ trách tìm tài liệu, viết báo cáo, phụ trách code mô proteus MỤC LỤC LỜI NĨI ĐẦU………………………………………………….……………… CHƯƠNG I Tìm hiểu chung giao tiếp USART…………….……………… 1.1 USART gì? 1.2 Các thông số quan trọng giao tiếp USART……….………….… 1.3 USART với STM32………………………………….………… … CHƯƠNG II.Làm việc với USART qua ghi…………….…………… … 2.1 Các ghi quan trọng…………………………………………… 2.1.1 Thanh ghi SR……………………………………………… 11 2.1.2 Thanh ghi DR……………………………………………… 13 2.1.3 Thanh ghi 14 BRR…………………………………………… 2.1.4 Thanh ghi CR1……………………………………………… 2.2 Quá trình truyền nhận USART……………………………………… 2.3 Các bước cấu USART…………………………………… hình cho CHƯƠNG III Mơ proteus………………………………………… LỜI NĨI ĐẦU Trong thời kì cơng nghệ 4.0, với lên đời sống xã hội, đồ dùng điện tử phần thiếu đời sống đại từ máy vi tính, đồng hồ, đèn led,… Chúng xuất nơi bên cạnh chúng Mặc dù tiếp cận thường xuyên, biết cách sử dụng biết cách vận hành tưởng đơn giản chúng Nhằm giải vấn đề đem lại kỹ định cho sinh viên việc làm quen giao tiếp với linh kiện điện tử, Học viện Công nghệ Bưu Viễn thơng đem mơn Kỹ thuật Vi xử lý vào trình dạy học sinh viên Học viện, đáp ứng nhu cầu công việc tương lai Kỹ thuật vi xử lý môn học thú vị bổ ích chương trình giảng dạy Học viện Cơng nghệ Bưu Viễn thơng Nó giúp chúng em có kiến thức chuyên ngành định, giúp chúng em tự tin, vững bước khỏi mái trường! Tuy nhiên, số đơn vị học trình q thời gian học tập hồn tồn hình thức trực tuyến nên nỗ lực cố gắng chắn trình độ hiểu biết kỹ môn học em cịn nhiều hạn chế Vì vậy, Báo cáo chúng em khó tránh khỏi thiếu xót nhiều chỗ chưa chuẩn xác, kính mong giảng viên mơn xem xét góp ý giúp Báo cáo em hoàn thiện Em xin chân thành cám ơn! Sinh viên Nguyễn Mạnh Việt CHƯƠNG I TÌM HIỂU CHUNG VỀ GIAO TIẾP USART 1.1 USART gì? USART (Universal Synchronous/ Asynchronous Receiver/ Transmitter) truyền nhận nối tiếp đồng cận đồng Được dùng việc giao tiếp hai thiết bị Đây giao tiếp đơn giản phổ biến, vi mạch có sẵn vi điều khiển dùng để giao tiếp với thiết bị ngoại vi 1.1.1 Truyền nhận nối tiếp gì? Hình 1.1 Sơ đồ truyền nhận nối tiếp Truyền nhận nối tiếp  là trình gửi dữ liệu tuần tự theo từng bit, qua một kênh truyền thơng (communication channel) hoặc bus máy tính Với truyền nhận nối tiếp, xung clock ta gửi bit liệu 1.1.2 Đồng cận đồng Đồng Khái niệm “đồng bộ” ám báo trước q trình truyền Giả sử có hai thiết bị (T1 T2) kết nối với đường liệu (data) đường truyền xung nhịp (clock) Cứ lần T1 muốn gửi bit liệu, T1 điều khiển đường xung nhịp từ mức thấp lên mức cao để báo cho T2 sẵn sàng để nhận bit Bằng cách “báo trước” này, tất bit liệu truyền nhận dễ dàng có sai lệch q trình truyền Tuy nhiên cách địi hỏi đường truyền cho trình (send or receiver) Hình 1.2 Sơ đồ minh hoạ truyền thông nối tiếp đồng b Cận đồng Khác với truyền thông đồng bộ, truyền thông cận đồng sử dụng đường truyền liệu mà không cần xung nhịp để báo trước Tất liệu chuẩn hoá thành khung liệu Giả sử T1 T2 giao tiếp với nhau, chúng thoả thuận khoảng thời gian 1ms có bit liệu truyền Như T2 cần đọc liệu lần 1ms sau kết hợp chúng lại Nhờ truyền thơng khơng đồng sử dụng tài ngun Khung truyền liệu chuẩn hoá với start bit, data bit, stop bit Điều để giao tiếp, thiết bị nhận liệu biết liệu đâu kết thúc vị trí Từ kết hợp lại xác để khơng xảy sai lệch liệu Hình 1.3 Sơ đồ minh hoạ truyền thông nối tiếp cận đồng 1.2 Các thông số quan trọng giao tiếp USART - Baud rate: Để việc truyền nhận liệu không đồng xảy thành cơng thiết bị tham gia phải thống khoảng thời gian dành cho bit truyền Hay nói cách khác, tốc độ truyền phải cài đặt trước, tốc độ gọi tốc độ Baud Theo định nghĩa, tốc độ Baud số bit truyền giây - Frame (khung truyền): Do truyền thông nối tiếp mà không đồng dễ xảy sai lệch liệu q trình truyền thơng tin theo kiểu phải tuân theo quy cách định Bên cạnh tốc độ Baud, khung truyền yếu tố quan trọng tạo nên thành công truyền nhận Khung truyền bao gồm quy định số bit lần truyền (data bits), bit báo hiệu bắt đầu kết thúc liệu (start bit, stop bit), bit kiểm tra,… - Start bit: Là bit truyền khung truyền, bit có chức báo cho thiết bị nhận biết có gói liệu truyền tới - Data bit: Là thông tin mà cần gửi nhận - Parity bit: Là bit kiểm tra liệu truyền có khơng cách đếm số dãy nhị phân liệu truyền khung truyền Nếu số chẵn Parity chẵn bật, ngược lại Parity lẻ bật Đây bit bắt buộc không thiết phải xuất khung truyền - Stop bit: Là bit báo hiệu cho thiết bị nhận gói liệu gửi xong Khung truyền phổ biến : Start bit – Data bit – Stop bit 1.3 USART với STM32 Hình 1.4 Chức chân Pin STM32 STM32 thiết kế cổng dùng cho số hoạt động giao tiếp định Để giao tiếp USART, ta nối chân TX RX USART với chân Pin thích hợp STM 32 CHƯƠNG II LÀM VIỆC VỚI USART QUA THANH GHI 2.1 Các ghi quan trọng 2.1.1 Thanh ghi SR (Status Register) Hình 2.1 Sơ đồ ghi SR Thanh ghi SR ghi trạng thái, bit cần ý: TXE : Báo hiệu ghi liệu trống Bit cho biết liệu đệm TDR đưa vào Transmit Shift Register bắt đầu truyền Bit TXE tạo tín hiệu ngắt bit TXEIE set. Bit luôn reset cách ghi vào ghi liệu 0: TDR chưa làm trống 1: TDR làm trống liệu ghi vào ghi USART_DR mà khơng làm ảnh hưởng đến liệu trước TC : Báo hiệu q trình truyền hồn tất Bit TC set phần cứng set lên MCU hoàn thành xong trình truyền liệu bit TXE set Bit tạo tín hiệu ngắt bit TCIE ghi USART_CR1 set Bit reset cách ghi vào hoạt động đọc ghi USART_SR sau ghi giá trị vào USART_DR 0: Quá trình truyền chưa hồn tất 1: Q trình truyền hồn thành RXNE: Báo hiệu liệu đọc khơng trống Bit thiết lập phần cứng nội dung ghi dịch chuyển RDR chuyển đến ghi USART_DR Một ngắt tạo RXNEIE = ghi USART_CR1 Nó xóa cách đọc USART_DR Cờ RXNE xóa cách viết số vào 0: Không nhận liệu 1: Dữ liệu nhận sẵn sàng để đọc FE: Kiểm tra lỗi khung truyền 0: Không phát lỗi khung 1: Lỗi khung ký tự ngắt phát 2.1.2 Thanh ghi DR (Data Register) Hình 2.2 Sơ đồ ghi DR Thanh ghi DR ghi liệu, chứa bit truyền nhận Thực tế ghi gồm hai ghi TDR RDR Thanh ghi TDR có chức ghi, dùng truyền Thanh ghi RDR có chức đọc liệu, dùng thu Khi lập trình ta gọi chung tên chúng tuỳ theo trường hợp đọc hay ghi tới mà máy tính xử lý xác 2.1.3 Thanh ghi BRR (Baud rate register) Hình 2.3 Sơ đồ ghi BRR Từ bit 15 bit giá trị nguyên số truyền vào ghi BRR Từ bit bit giá trị sau dấu “.” giá trị truyền Cụ thể giao tiếp hai thiết bị với nhau, để nhận xác liệu gửi hai thiết bị phải nhận truyền tốc độ Tuy nhiên, giá trị ghi BRR tốc độ Baud rate, dùng để USART tính tốn tốc độ truyền Cụ thể với công thức sau: BAUD RATE= Trong đó: f d BRR f tần số hoạt động d BRR giá trị 10 ghi BRR 2.1.4 Thanh ghi CR1 (Control register 1) Hình 2.3 Sơ đồ ghi CR1 Thanh ghi CR1 ghi điều khiển, gồm bit quan trọng sau: UE: Bật USART Khi bit bị xóa, định mức đầu USART dừng lại kết thúc trình truyền byte để giảm tiêu thụ điện Bit thiết lập xóa phần mềm 0: Đã tắt chức định mức trước USART kết đầu 1: USART bật M: Độ dài khung liệu Bit xác định độ dài từ 0: Bit bắt đầu, bit liệu, n bit dừng 1: Bit bắt đầu, bit liệu, n bit dừng TXEIE: Bật ngắt TXE 0: Ngắt bị chặn 1: Một ngắt USART tạo TXE = ghi USART_SR TCIE: Ngắt truyền xong 0: Ngắt bị chặn 1: Một ngắt USART tạo TC = ghi USART_SR RXNEIE: Bật ngắt RXNE 0: Ngắt bị chặn 1: Một ngắt USART tạo ORE = RXNE = ghi USART_SR TE: Kích hoạt Transmitter 11 Bit cho phép Transmitter hoạt động 0: Tắt Transmitter 1: Bật Transmitter RE: Kích hoạt Receiver Bit cho phép nhận tín hiệu hoạt động 0: Tắt Receiver 1: Bật Receiver 12 2.2 Quá trình truyền nhận liệu Để giao tiếp chiều USART, MCU cần phải kết nối với thiết bị bên ngồi chân chân TX (chân truyền liệu bên ngoài) chân RX (chân nhận liệu từ bên ngoài) Chân TX MCU nối với chân RX thiết bị ngược lại chân RX MCU nối với chân TX thiết bị ngoài. Chân SW_RX dùng để nhận liệu chế độ single-wire Hình 2.4 Sơ đồ khối ghi/đọc liệu USART Về trình truyền USART  Một byte liệu từ đường bus lưu đệm TDR Khi bit cho phép truyền (TE) set, liệu đưa xuống ghi Transmit Shift Register bit có trọng số thấp (LSB) gửi chân TX MCU Sau truyền byte, ghi TDR làm trống byte truyền Ở chế độ liệu ghi USART_DR liệu đệm TDR Hình 2.5 Sơ đồ trình truyền USART 13 Về trình nhận USART  Khi có liệu truyền từ thiết bị bên ngồi, bit có trọng số thấp frame data truyền qua chân RX MCU lưu vào ghi Receive Shift Register Khi byte nhận xong, bit RXNE (Read data register not empty) set lên 1, liệu chứa ghi Receive Shift Register đưa đến đệm RDR, liệu lúc sẵn sàng để đọc Nếu bit RXNE bit RXNEIE (RXNE interrupt enable) cùng set lên tín hiệu ngắt sinh Bit RXNE reset có hoạt động đọc liệu ghi USART_DR ghi bit vào 14 2.3 Các bước cấu hình cho USART B1 Cấp clock cho port sử dụng giao tiếp USART B2 Chọn chân chế độ mode cho chân USART B3 Bật USART cách set bit UE ghi USART_CR1 lên B4 Lập trình bit M USART_CR1 để xác định độ dài từ B5 Lập trình số lượng bit dừng USART_CR2 B6 Chọn kích hoạt DMA (DMAT) USART_CR3 Giao tiếp nhiều đệm thực Định cấu hình ghi DMA giải thích giao tiếp đa đệm B7 Chọn tốc độ truyền mong muốn cách sử dụng ghi USART_BRR B8 Set bit TE RE USART_CR1 lên phép thu nhận tín hiệu từ thiết bị bên ngồi B9 Cấu hình cho ngắt cách setbit RXNEIE TXEIE, USART ngắt có hoạt động truyền nhận tín hiệu 15 CHƯƠNG III MÔ PHỎNG TRÊN PROTEUS Vấn đề cần giải quyết: Sử dụng USART để ký tự lên hình Nếu ký tự gửi lên “ONLED” bật led PC13 Nếu “OFFLED” tắt led PC13 Các bước thực hiện: Dựa theo đề bài, ta cần làm việc với USART đèn led PC13 Đầu tiên ta cấu hình cho led PC13: B1: Cấp Clock cho port C B2: Chân PC13 nằm phần cao nên ta cấp chân PC13 cách kéo vị trí thứ ghi CRH mức Chọn mode General output push-pull Output mode, max speed 50 MHz Thứ hai, ta cần cấu hình cho USART 16 Cụ thể toán mà chúng em làm, chúng em sử dụng giao tiếp qua USART1 Như hình, sử dụng chân PA9 (USART1_TX) chân PA10 (USART1_RX) Nối chân TX STM32 với chân RX thiết vị ngược lại: Code sau: Trong ta sử dụng ngắt nên set bit AFIO ghi RCC, với bit USART, bit GPIO để giao tiếp USART Cấp chân PA9, PA10, chọn mode cho chân Tại chân PA9, chế độ mode alternate function push-pull Tại chân ta truyền vào mã 10-11 = 0xB Tại chân PA10, chế độ mode Input-floating (Cấu hình I/O ngõ vào để nổi) Tại chân ta truyền vào mã 01-00 = 0x4 Các bước sau ( dựa vào mục 2.3) Các bước B3 Bật USART cách set bit UE ghi USART_CR1 lên B4 Lập trình bit M USART_CR1 để xác 17 Tham số data bit định độ dài từ B5 Lập trình số lượng bit dừng USART_CR2 B6 Chọn kích hoạt DMA (DMAT) USART_CR3 Giao tiếp nhiều đệm thực Định cấu hình ghi DMA giải thích giao tiếp đa đệm B7 Chọn tốc độ truyền mong muốn cách sử dụng ghi USART_BRR B8 Set bit TE RE USART_CR1 lên phép thu nhận tín hiệu từ thiết bị bên ngồi  USART_CR1_M = stop-bit  USART_CR2_STOP = 00 Không sử dụng B9 Cấu hình cho ngắt cách setbit RXNEIE TXEIE, USART ngắt có hoạt động truyền nhận tín hiệu Set RXNEIE cho phép ngắt nhận USART_CR1_RXNEIE = Ta có code sau: NVIC => ISER[1] xử lý ngắt với USART1 18 BRR = 72MHz/9600 = 7500 = 0x1D4C USART_CR1_TE = USART_CR1_RE =1 Tiếp theo ta khai báo biến nhận kí tự từ thiết bị ngoại vi kiểm tra kí tự đó: Data_in chuỗi kí tự nhập từ bàn phím Ta kiểm tra chúng với chuỗi kí tự lệnh onled offled xem có trùng không Biến sp trỏ data_in 19 Nếu chuỗi data_in trùng với lệnh ONLED OFFLED ta trả giá trị 1, trả giá trị Như vậy, điều cuối mà ta cần thực xem kí tự nhận vào đưa hướng giải cho lệnh mà thơi Lúc câu hỏi đặt làm để biết ta nhận xong lệnh? Ở em quy định với người điều khiển nhập xong lệnh gồm chuỗi kí tự, họ phải ấn Enter để “báo” cho máy biết lệnh nhập xong lệnh cho máy xử lý lệnh Sau xử lý xong lệnh, trỏ sp data_in phải đưa vị trí để sẵn sàng nạp lệnh Nhưng dừng lại bước này, ta thấy có vấn đề phát sinh kí tự câu lệnh trước cịn Điều nhìn khơng phải vấn đề to tát nạp lệnh ta ghi đè nên biến mà khơng ảnh hưởng phải khơng? Có ảnh hưởng câu trả lời cho câu hỏi Ta xét ví dụ cụ thể: 20 STT Lệnh Data_in Thực thi L1 ONFLED O N F L E D Không thực thi L2 OF O F F L E D Tắt led PC13 Chính xác, hai lệnh không tác động lên led PC13, led PC13 lại bị tắt lệnh thứ 2? Nguyên nhân mảng data_in chưa làm Kí tự “O” “F” lệnh thứ hai ghi đè lên “O” “N” lệnh trước Nhưng kí tự “FLED” cịn đó, kết hợp với hai kí tự “O”, “N” vừa nhận để tạo chuỗi “OFFLED” Và dẫn đến kết tắt led PC13 Vậy nên ta cần làm chuỗi data_in trước bắt đầu nhận lệnh Nhưng cần clear từ data_in[0] đến data_in[6] thơi lệnh thực thi dài OFFLED có kí tự (Kết thúc data_in[5] mà thôi) Thiết kế mạch Proteus 21 ... USART để ký tự lên hình Nếu ký tự gửi lên “ONLED” bật led PC13 Nếu “OFFLED” tắt led PC13 Các bước thực hiện: Dựa theo đề bài, ta cần làm việc với USART đèn led PC13 Đầu tiên ta cấu hình cho led. .. liệu ghi USART_ DR ghi bit vào 14 2.3 Các bước cấu hình cho USART B1 Cấp clock cho port sử dụng giao tiếp USART B2 Chọn chân chế độ mode cho chân USART B3 Bật USART cách set bit UE ghi USART_ CR1... ngắt USART tạo TXE = ghi USART_ SR TCIE: Ngắt truyền xong 0: Ngắt bị chặn 1: Một ngắt USART tạo TC = ghi USART_ SR RXNEIE: Bật ngắt RXNE 0: Ngắt bị chặn 1: Một ngắt USART tạo ORE = RXNE = ghi USART_ SR

Ngày đăng: 09/12/2021, 19:51

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN