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

Thí nghiệm vi điều khiển buổi 4 truyền thông can

13 4 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

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 1,21 MB

Nội dung

  ĐẠI HỌC BÁCH KHOA –  ĐHQG-HCM  KHOA CƠ KHÍ  BỘ MƠN CƠ ĐIỆN TỬ   THÍ NGHIỆM VI ĐIỀU KHIỂN  BUỔI 4: TRUYỀN THƠNG CAN L07 - NHĨM A - HK222 Giảng viên hướng dẫn: ThS LƯƠNG THANH NHẬT  Sinh viên thực hiện  Mã số sinh viên Hồ Đình Bách  2010145 Phạm Hồng Khanh  2011381  Nguyễn Văn Vũ Lân  2013606 Bùi Sơn Nhật Minh  2011605 Lê Nhựt Trường  2014911 Thành phố Hồ Chí Minh - 2023     CƠ SỞ LÝ THUYẾT  I Kết nối phần cứng  Board UMB1P.0-15376 V 1.0 Động DC giảm tốc độ  Module điều khiển động DC L298N    Hình 1 –   Module giao tiếp CAN MCP2515   Hình 2 –  Sơ   đồ nguyên lý     Hình 3 –  Sơ  Hình 4 –  K ết  nối đồ giao tiếp phần cứng   module CAN với board MCU Kết nối node với dây theo mơ hình CAN_H CAN_H, CAN_L CAN_L Mỗi board module CAN cung cấp cặp cổng CAN_H  CAN_L  Hình 5 –   Kết nối mạng node CAN       II Hướng dẫn lập trình   Hình 6 –  Các module sử dụng dự án điều khiển động cơ    Hình 7 –  Cấu hình Pin Manager Gird View dự án    Hình 8 –  Cấu hình SPI Module dự án       Hình 9 –  Cấu hình EUSART Module dự án   Hình 10 –  Cấu hình Interrupt module dự án        Hình 11 –  Cấu hình I/O dự án     THÍ NGHIỆM VÀ KẾT QUẢ   Bài Giao tiếp CAN kit vi điều khiển  Lần lượt nhấn nút 1, 2, kit số 1 LED 1, 2, k it số sáng tương ứng.  Code #include "mcc_generated_files/mcc.h" #include #define RESET_INS 0b11000000 #define READ 0b00000011 #define WRITE 0b00000010 #define READ_STATUS 0b10100000 #define RX_STATUS 0b10110000 #define BIT_MODIFY 0b00000101 #define READ_RX_BUFFER_SID0 0b10010000 #define READ_RX_BUFFER_DT0 0b10010010 #define READ_RX_BUFFER_DT1 0b10010110 #define READ_RX_BUFFER_SID1 0b10010100 #define LOAD_TX_BUFFER_SID0 0b01000000 #define LOAD_TX_BUFFER_DT0 0b01000001 #define LOAD_TX_BUFFER_SID1 0b01000010 #define LOAD_TX_BUFFER_DT1 0b01000011 #define LOAD_TX_BUFFER_SID2 0b01000100 #define LOAD_TX_BUFFER_DT2 0b01000101 #define REQUEST_TO_SEND_TXBUFF0 0b10000001 #define REQUEST_TO_SEND_TXBUFF1 0b10000010 #define REQUEST_TO_SEND_TXBUFF2 0b10000100 #define BIT_MODIFY 0b00000101 uint8_t press = 0; uint8_t receive = 0; uint8_t sendframe1[8] = "abcdefgh"; uint8_t sendframe2[8] = "ijklmnop"; uint8_t sendframe3[8] = "qrstuvwx";     uint8_t receiveframe[9]={0,0,0,0,0,0,0,0,0}; volatile uint8_t receive_flag = 0; uint8_t receive_pre = 0; void Reset_sensor (void) { SPI1_Open(SPI1_DEFAULT); CS_SetLow(); SPI1_ExchangeByte(RESET_INS); CS_SetHigh(); SPI1_Close(); } void Set_sensor (uint8_t reg, uint8_t data) { SPI1_Open(SPI1_DEFAULT); CS_SetLow(); SPI1_ExchangeByte(WRITE); SPI1_ExchangeByte(reg); SPI1_ExchangeByte(data); CS_SetHigh(); SPI1_Close(); } void Read_sensor (uint8_t reg, uint8_t *data) { SPI1_Open(SPI1_DEFAULT); CS_SetLow(); SPI1_ExchangeByte(READ); SPI1_ExchangeByte(reg); *data = SPI1_ExchangeByte(0x00);     CS_SetHigh(); SPI1_Close(); } void Bit_Modify(uint8_t Address, uint8_t mask, uint8_t dataset) { SPI1_Open(SPI1_DEFAULT); CS_SetLow(); SPI1_ExchangeByte(BIT_MODIFY); SPI1_ExchangeByte(Address); SPI1_ExchangeByte(mask); SPI1_ExchangeByte(dataset); CS_SetHigh(); SPI1_Close(); } void REQUEST_TO_SEND_BUFF (uint8_t buff) { uint8_t bufftemp; switch (buff) { case 0:  bufftemp = REQUEST_TO_SEND_TXBUFF0;  break; case 1:  bufftemp = REQUEST_TO_SEND_TXBUFF1;  break; case 2:  bufftemp = REQUEST_TO_SEND_TXBUFF2;  break; default:      break; } SPI1_Open(SPI1_DEFAULT); CS_SetLow(); SPI1_ExchangeByte(bufftemp); CS_SetHigh(); SPI1_Close(); } void Send_messenger (uint8_t *data, uint8_t buff, uint8_t length) { Set_sensor(0x30, 0x03); // Clear TXREQ Set_sensor(0x35, length); for(uint8_t i = ; i

Ngày đăng: 19/05/2023, 19:30

w