Thứ Bảy, 1 tháng 12, 2018

12. UART trong LPC2148 Vi điều khiển ARM7- Giao tiếp nối tiếp

Trong hướng dẫn này, chúng tôi sẽ giao tiếp vi điều khiển và PC qua giao tiếp nối tiếp sử dụng UART trong LPC2148 ARM7 Microcontroller. Trước khi chúng tôi chuyển sang UART trong LPC2148 ARM7. Đầu tiên hãy thảo luận về UART. UART (Bộ nhận / phát không đồng bộ phổ quát) là một trong những phương thức giao tiếp sớm nhất được áp dụng cho máy tính (ở đâu đó vào những năm 1960). Thông tin được truyền một bit nhị phân tại một thời điểm; vì vậy nó là một phương thức giao tiếp nối tiếp. Các bit này được nhóm lại với nhau theo dạng ' Khung hình ' (một định dạng đã đặt) để truyền tải một mẩu dữ liệu có ý nghĩa (ví dụ: byte ký tự). UART là không đồng bộ bởi vì nó không yêu cầu một máy phát được cung cấp đồng hồ để đồng bộ hóa việc truyền và nhận dữ liệu.

serial-data-transfer-in-uart
Chuyển dữ liệu nối tiếp trong UART

Truyền dữ liệu nối tiếp trong UART

Chỉ vì không có tín hiệu đồng hồ cho mỗi lần, một bit bắt đầu được thêm vào trước tiên để cho người nhận biết lắng nghe dữ liệu. Người nhận theo dõi cho một logic HIGH rơi xuống logic LOW. Người nhận đồng bộ hóa đồng hồ bus của chính nó để tạo thành từ được gửi đi, với bit bằng không, bit ít quan trọng nhất (LSB) được gửi đầu tiên. Các bit được gửi dưới dạng các xung trên dây tại các khoảng thời gian cụ thể, đặt ở cả hai đầu của các liên kết đến các giá trị đã thỏa thuận trước đó. Người nhận nhìn vào điện áp trên dây tại những thời điểm này; nếu nó thấy logic cao, nó ghi lại một chữ số nhị phân 1 hoặc 0 nếu dòng là thấp. Người nhận kiểm tra nửa đường giữa đầu và cuối xung để đảm bảo nó không bỏ lỡ điện áp trên đường dây trong khoảng thời gian ngắn trong khi điện áp tăng hoặc giảm.
-sự truyền dữ liệu nối tiếp
Truyền dữ liệu nối tiếp trong UART
Nếu hai thiết bị sử dụng bit chẵn lẻ để kiểm tra lỗi thô sơ, thì tính toán đó sẽ được gửi và gửi tiếp theo, đồng bộ với dữ liệu đã được truyền cho đến thời điểm này. Cuối cùng, một bit dừng được gửi bởi bộ phát. Độ dài từ, tính khả dụng chẵn lẻ và loại, và số bit dừng tất cả phải được đồng ý trước để giao tiếp thành công vì UART sử dụng hai dây. Bộ phát của thiết bị-A được kết nối với bộ thu của thiết bị B và bộ thu của thiết bị A được kết nối với bộ phát của thiết bị-B. Đây là cách thiết bị có thể gửi dữ liệu đồng thời với nhau, một phương thức giao tiếp gọi là ' full duplex '.
-truyền thông thiết bị nối tiếp
Truyền thông thiết bị nối tiếp

GIỚI THIỆU: UART trong LPC2148 vi điều khiển ARM7

Như chúng ta đều biết UART được sử dụng rộng rãi trong giao thức truyền thông nối tiếp trong các ứng dụng dựa trên hệ thống nhúng. Hầu như tất cả các vi điều khiển đều có hỗ trợ UART trên chip. LPC2148 ARM7 core hỗ trợ hai UART trong đó, UART0 và UART1. UART0 có thể được sử dụng như UART mục đích chung và cũng có thể hỗ trợ lập trình ISP thông qua nó, trong khi UART1 có hỗ trợ modem bổ sung. Cả hai đều được xây dựng trong bộ tạo tốc độ truyền và truyền 16 byte và nhận các FIFO. Đối với UART0, TxD Pin ở P0.0 và RxD Pin ở P0.1 và tương tự cho UART1, TxD Pin ở P0.8 và RxD Pin là P0.9 như trong bảng dưới đây;
list-of-uart-in-lpc2148
Danh sách UART trong LPC2148

Bộ chuyển đổi mức RS232

Hầu hết các vi mạch hoạt động ở mức điện áp TTL hoặc CMOS không thể sử dụng để giao tiếp qua giao thức RS-232. Trong trường hợp này, điện áp hoặc bộ chuyển đổi mức là cần thiết có thể chuyển đổi TTL thành RS-232 và RS-232 thành các mức điện áp TTL. Bộ chuyển đổi mức RS-232 được sử dụng phổ biến nhất là chip MAX3232. Chip này bao gồm bơm phí có thể tạo ra các mức điện áp RS232 (-10V và + 10V) từ nguồn điện 5V. Nó cũng bao gồm hai bộ thu và hai bộ phát và có khả năng truyền thông UART full-duplex. Giao tiếp RS232 cho phép truyền dữ liệu điểm-điểm, thường được sử dụng trong các ứng dụng thu thập dữ liệu và truyền dữ liệu giữa vi điều khiển và PC.
Trong dự án ví dụ, chúng tôi sẽ sử dụng cáp RS232 (USB để nối tiếp chuyển đổi) để thực hiện giao tiếp giữa vi điều khiển LPC2148 và PC. Hãy chắc chắn để cài đặt trình điều khiển thích hợp trước khi bạn sử dụng nó.

Đăng ký Mô tả: UART trong LPC2148 ARM7

Trước khi chúng tôi sử dụng bất kỳ pin từ LPC2148 cho giao tiếp nối tiếp. Chúng ta phải cấu hình và khởi tạo UART0 Peripheral bằng cách thiết lập bit đăng ký. Hãy nhanh chóng sửa lại các chức năng của thanh ghi UART0 sẽ được sử dụng trong mã của chúng tôi sau này. Bạn nên mở tài liệu hướng dẫn sử dụng để thu thập thêm chi tiết về mỗi đăng ký nếu cần thiết ].
Đăng kýMô tả / chức năng
U0THRTransmit Hold Register: Thanh ghi này chứa dữ liệu ghi 8 bit có thể truyền qua UART0. Đây là ghi chỉ đăng ký.
U0RBRReceive Buffer Register: Thanh ghi này chứa dữ liệu nhận được 8 bit từ UART0. Dữ liệu này không là gì ngoài byte hàng đầu của Rx FIFO. Khi chúng tôi sử dụng dữ liệu 5, 6 hoặc 7 bit thì các bit còn lại được đệm bằng 0 theo mặc định. Đây là chỉ đọc đăng ký.
U0LCRLine Control Register: Giá trị hoặc thiết lập trong thanh ghi này cấu hình khối UART0. Vì đây là thanh ghi 8 bit. Có một số thông số được cấu hình thông qua thanh ghi này như độ dài từ, bit dừng, kích hoạt chẵn lẻ, chọn chẵn lẻ, kiểm soát ngắt, bit truy cập chia tách. Cài đặt đăng ký này đóng vai trò quan trọng trong khi khởi tạo UART0 trước khi sử dụng nó.
U0DLL & U0DLMU0DLL & U0DLM là thanh ghi bộ chia phát tín hiệu tốc độ UART0 tiêu chuẩn . Mỗi thanh ghi này chứa các giá trị 8 bit. Các thanh ghi này cùng nhau tạo thành một giá trị chia nhỏ 16 bit sẽ được sử dụng để tạo tốc độ truyền. Điều này sẽ được thảo luận thêm trong khi giải thích mã đối với ví dụ thế giới thực.
U0FDRFractional Divider Register: Đây là một thanh ghi rất quan trọng khác, đóng vai trò quan trọng trong việc tạo tốc độ truyền. Trong thanh ghi 8 bit này, bốn bit đầu tiên có nghĩa là Bit [3 đến 0] -DIVADDVAL: Đây là giá trị Ước lượng số nguyên. Nếu giá trị này bằng 0 thì bộ tạo tốc độ baud phân đoạn không có hiệu lực với tốc độ truyền UART0. Các bit 4 bit còn lại nghĩa là Bit [4 đến 7] -MULVAL: Giá trị này định nghĩa giá trị Multiplier Prescale. Ngay cả khi bộ tạo tốc độ baud phân đoạn không được sử dụng thì giá trị trong thanh ghi này phải lớn hơn hoặc bằng '1'.


Tính tốc độ truyền cho UART trong LPC2148 ARM7

Tốc độ truyền cho UART trong LPC2148 Vi điều khiển ARM7 có thể được tính bằng phương trình đã cho:
baudrate-calcul-in-lpc2148
Baudrate tính toán trong LPC2148

Dự án ví dụ:

Hãy nhìn vào ví dụ thế giới thực, nơi chúng ta sẽ gửi chuỗi từ LPC2148. Thông báo này sẽ được nhận và hiển thị trên bộ mô phỏng đầu cuối hoặc bộ điều khiển nối tiếp được cấu hình cho Cổng COM thích hợp của PC. Tôi tin rằng bây giờ bạn đã quen thuộc với cách thức hoạt động của UART. Trong chương trình của chúng tôi, chúng tôi sẽ sử dụng cấu hình sau đây để thiết lập giao tiếp phù hợp:
  • Tốc độ truyền = 9600 baud (với PCLK = 60Mhz)
  • Độ dài dữ liệu = 8 bit
  • Không có bit chẵn lẻ
  • và 1 Stop Bit
Để làm việc trên dự án này, chúng tôi cần những thứ sau đây để được thiết lập: 
Yêu cầu phần mềm: Cài đặt Keil uVision4, Flash Magic, PuTTY (thiết bị đầu cuối giả lập hoặc serial console) 
Yêu cầu phần cứng: LPC2148 Ban phát triển, cáp RS232 (USB Serial Converter), Power Adapter ( 9V-500mA).

Sơ đồ mạch: UART trong LPC2148 vi điều khiển ARM7

UART trong LPC2148 vi điều khiển ARM
Sơ đồ mạch-UART trong LPC2148 vi điều khiển ARM
kết nối giữa lpc2148 và PC
Kết nối giữa LPC2148 và PC

Mã nguồn: UART trong LPC2148 vi điều khiển ARM7

Chương trình cũng được nhận xét trong chính mã. Hãy chạy mã trên phần cứng thực để xem tác động của nó. Bây giờ chỉ cần biên dịch mã ở trên và tải tệp .HEX lên LPC2148. Chúng ta cần PuTTY (Terminal Emulator) để quan sát dữ liệu được gửi bởi LPC2148 Microcontroller trên UART0. Vì vậy, đây là cài đặt để cấu hình PuTTY cho UART với cổng COM thích hợp, bit dữ liệu và tốc độ truyền, v.v ...
QUAN TRỌNG: Sau khi tải tập tin .hex, Hãy chắc chắn rằng bạn không vào chế độ ISP. Chúng tôi sẽ sử dụng cùng một UART0 cho lập trình cũng như để nhận dữ liệu. Trong trường hợp nếu bạn đang sử dụng STK2148-UltraLite Board thì tắt công tắc SW7 để đọc chuỗi trên PuTTY.
PuTTy-Cấu hình-cho-UART0
Cấu hình PuTTy cho UART0
Khám phá cài đặt thêm
Open-PuTTY-to-Read-from-COM-Port
Mở PuTTY để đọc từ Cổng COM
Khi chúng tôi đã thực hiện xong tất cả các cài đặt, chỉ cần mở bảng điều khiển. Và chúng ta sẽ bắt đầu nhận chuỗi trên PuTTY, được gửi bởi LPC2148 Microcontroller. Đây là một đầu ra từ dự án của chúng tôi:
Đầu ra của UART trong LPC2148 vi điều khiển ARM7
Đầu ra của UART trong LPC2148 vi điều khiển ARM7
Đây là cách chúng ta có thể thực hiện giao tiếp nối tiếp bằng UART trong LPC2148 ARM7 Microcontroller để truyền chuỗi ký tự từ vi điều khiển sang PC. Tôi khuyên bạn nên sửa đổi mã để khám phá tính năng UART trong LPC2148. Tôi sẽ cố gắng hết sức để chia sẻ thêm một bài đăng nữa, nơi chúng tôi sẽ không chỉ nhận mà còn truyền tải dữ liệu. UART sẽ hữu ích cho các dự án tương lai của chúng tôi, nơi chúng tôi sẽ hiển thị dữ liệu ADC hoặc đầu ra của cảm biến trên bộ mô phỏng đầu cuối.

Không có nhận xét nào:

Đăng nhận xét

Bài đăng mới nhất

14. I2C trong LPC2148 vi điều khiển ARM7

Trong bài này, chúng ta sẽ tìm hiểu về cách lập trình I2C trong LPC2148 ARM7 Microcontroller.  Ngoài ra, chúng tôi sẽ giao diện nối tiếp EE...