Site icon TAPIT

Giao tiếp CAN STM32 – Thực hành cơ bản

Nối tiếp nội dung tổng quan về Giao tiếp CAN, bài viết này sẽ cung cấp các hướng dẫn cách thực hành cơ bản CAN bus với Vi điều khiển STM32. Nhiều dòng vi điều khiển STM32 tích hợp CAN Controller, chúng ta cần thêm phần cứng CAN Transceiver – MCP2551 để thử nghiệm. Hai vi điều khiển STM32 được thiết lập để giao tiếp bằng CAN thông qua module MCP2551 và UART được sử dụng để thể hiện dữ liệu lên màn hình máy tính.

1. Phần cứng 

Hình 1.1: Điện áp logic – dòng điện của chân MCP2551 – @MCP datasheet

Hình 1.2: Điện áp logic của chân STM32 được dùng để CAN – @STM32F103 Datasheet


Hình 1.3: Sơ đồ chân của MCP2551

Hình 1.4: Sơ đồ chân của STM32

2. Phần mềm

2.1. Giản đồ quá trình hoạt động của ECU gửi và ECU nhận trong thí nghiệm

Hình 2.1: Giản đồ thực thi của ECU gửi

Hình 2.2: Giản đồ thực thi của ECU nhận

2.2. Cấu hình trên STM32CubeIDE

ECU gửi

Hình 2.3: Cấu hình UART

Hình2.4: Cấu hình xung cho hệ thống
Ảnh 2.5: Cấu hình CAN

ECU Nhận

Hình 2.6: Cấu hình ngắt trên CAN

2.3. Thực hành viết mã code

ECU gửi

B1: Khai báo và khởi tạo các biến: 

Hình 2.7: Khởi tạo biến và struct

B2: Cấu hình các thông tin của gói tin gửi đi

Hình 2.8: Cấu hình gói tin trước khi ECU thực hiện gửi

Trong đó:

B3: Trong vòng lặp của main(), liên tục gửi gói tin canTX và đảo trạng thái của LED trong khoản thời gian 1s

Hình 2.9: Code trong hàm while để gửi gói tin

ECU nhận

B1: Khai báo và khởi tạo các biến

Hình 2.10: Khởi tạo biến và Struct

B2: Cho phép yêu cầu ngắt và hàm Callback

Hình 2.11: Bật yêu cầu ngắt khi nhận được gói tin thông qua giao tiếp CAN

Hình 2.12: Hàm nhận Callback của CAN

Hình 2.13: Code trong hàm nhận Callback của CAN chỉ chấp nhận tin nhắn từ ECU có ID 0x023

 

B3: Cấu hình CAN Filter

Hình 2.14: Cấu hình CAN Filter

Hình 2.15: Quá trình thực hiện so sánh để lấy ID 0x03

Hình 2.16: Ghi các giá trị ID vào vị trí các thanh ghi (STM32F103x Reference Manual [12])

B4: Cuối cùng, kết nối và nạp code 2 ECU và kiểm tra chương trình trong thực tế bằng cách quan sát kết quả thông qua UART, ở đây bài thực hành sử dụng phần mềm Hercules:


Hình 2.17. Thiết lập phần cứng trong thí nghiệm

Hình 2.18 Dữ liệu nhận được ở ECU nhận gửi lên phần mềm hercules trên máy tính thông qua UART

Như vậy, bài viết đã cung cấp các hướng dẫn để có thể thử nghiệm giao tiếp CANbus giữa hai vi điều khiển STM32. Chúc các bạn thành công! 


Chúc các bạn thành công!
Nhóm tác giả : Lê Hữu Bảo Thuận, Trần Đình Hoàng Long
Hướng dẫn : Nguyễn Huỳnh Nhật Thương