20.2 C
London
Thứ Hai, Tháng 7 21, 2025
Trang chủMCUSTM32 cơ bảnModbus RTU STM32 (Phần 2)

Modbus RTU STM32 (Phần 2)

phần 1 mình đã trình bày lý thuyết về giao thức Modbus. Phần này mình sẽ hướng dẫn các bạn cách thêm thư viện FreeModbus và sử dụng trong chương trình STM32.

Công cụ phát triển

Các bạn cần cài đặt các công cụ này để có thể thực hiện được project:

  • STM32CubeMX – Công cụ sinh code tự động
  • KeilC V5 – Công cụ biên dịch, lập trình, nạp chương trình cho STM32 và debug
  • Modbus Poll – Công cụ test truyền thông Modbus

Cấu hình STM32CubeMX, sinh code sang KeilC

Các bạn có thể có rất nhiều cách lập trình cho STM32.

Ví dụ như sử dụng bộ thư viện chuẩn Std, cấu hình và tạo project trực tiếp trên KeilC mà không cần qua STM32CubeMX. Cách này sẽ phức tạp hơn và mất thời gian hơn, không trực quan bằng sinh code từ STM32CubeMX, nên dùng cho những ai đã có kinh nghiệm.

Hay dùng công cụ Arduino IDE. Cách này mình không khuyến khích các bạn học lập trình, vì sẽ không hiểu sâu được vấn đề. Chỉ phù hợp cho bạn nào mới tiếp cận về lập trình.

Do vậy, mình sẽ sử dụng công cụ STM32CubeMX để triển khai project cho STM32F1, giúp các bạn dễ tiếp cận, hiểu được vấn đề để có thể áp dụng trên các dòng chip khác của STM32.

Cấu hình clock

Sử dụng thạch anh ngoại 8Mhz (nếu sử dụng thạch anh nội, phần này không cần cấu hình)

Qua bộ nhân chia tần số, tần số clock hệ thống bây giờ là 72Mhz

Cấu hình UART

Baudrate: 19200

Enable Interrupt

TX: PA2

RX: PA3

DIR: PA4 (Đây là chân điều khiển truyền hay nhận dữ liệu, được cấu hình ở mode GPIO Output)

Bật ngắt UART:

Cấu hình Timer

Timer 4 sử dụng làm bộ hẹn giờ cho giao thức Modbus

Bật ngắt Timer 4:

Enable FreeRTOS

Ở đây mình sử dụng RTOS cho chương trình Modbus. Sau này việc thêm vào các task để xử lý tác vụ khác sẽ dễ dàng vì không làm ảnh hưởng đến task chạy Modbus

Chọn Serial wire

Chọn Timer 3 (hoặc 1 Timer nào khác chưa được sử dụng tùy theo bạn)

Chế độ của các GPIO

PA4: Chân (DIR) điều khiển IC truyền thông RS485 để xác định chế độ là truyền hay nhận

PA11: Chân điều khiển LED (chân demo)

PB7: Chân nhận nút nhấn (chân demo)

PC13: Chân điều khiển led(chân demo)

Sinh code sang KeilC

Đặt tên Project

Chọn đường dẫn lưu project

Chọn IDE phát triển, phiên bản IDE

Thêm các thư viện cần thiết

Sau khi chọn xong các bạn nhấn Generate Code và mở project vừa tạo

Thêm thư viện FreeModbus

Thư viện FreeModbus được mình thêm vào trong Middlewares\Third_Party của dự án:

Trong cây thư mục của dự án, các bạn tạo 1 group để chứa các file .c của thư viện Modbus và tạo thêm 1 file mbtask.c để chứa hàm xử lý dữ liệu Modbus

Thêm đường dẫn để KeilC biết nơi để thư viện để biên dịch

Rồi! Xong phần tạo project ban đầu. Tiếp theo sẽ đến phần chỉnh sửa thư viện FreeModbus, viết chương trình Demo chạy trêN STM32F103C8T6 và cách triển khai trên các dòng chíp khác. Tất cả có trong phần 3

5/5 - (1 bình chọn)
BÀI VIẾT LIÊN QUAN

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

BÀI VIẾT NỔI BẬT