สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: วงจรเครื่องรับส่งสัญญาณ
- ขั้นตอนที่ 2: การอ่านและเขียนไปยัง CAN Bus
- ขั้นตอนที่ 3: เชื่อมต่อโหนด
- ขั้นตอนที่ 4: สร้าง PCB
- ขั้นตอนที่ 5: การขยายบอร์ด
- ขั้นตอนที่ 6: สั่งซื้อ PCB ของคุณจาก JLCPCB
- ขั้นตอนที่ 7: รับบอร์ดของคุณ
วีดีโอ: อินเตอร์เฟส STM32 CAN: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
Controller Area Network bus หรือ CAN bus เป็นโปรโตคอลการสื่อสารที่มีประสิทธิภาพมาก เนื่องจากมีความสามารถด้านความเร็วสูง ความน่าเชื่อถือในระยะไกล และการป้องกันสัญญาณรบกวน ด้วยเหตุผลเหล่านี้ การสื่อสาร CAN จึงเป็นมาตรฐานในเทคโนโลยียานยนต์และสภาพแวดล้อมที่มีเสียงรบกวนสูง อุปกรณ์บน CAN บัสเรียกว่าโหนด โหนดทั้งหมดบน CAN บัสเชื่อมต่อแบบขนาน หมายความว่าแต่ละโหนดเชื่อมต่อกับโหนดอื่นๆ ทั้งหมดในเครือข่าย บัส CAN เดียวสามารถมีโหนดได้สูงสุด 115 โหนดในคราวเดียว ขึ้นอยู่กับอัตราการส่งข้อความ แต่สำหรับแอปพลิเคชันส่วนใหญ่ ขอแนะนำให้มีอุปกรณ์สูงสุด 32 เครื่อง ขอแนะนำให้รักษาความยาวระหว่างโหนดแรกและโหนดสุดท้ายห่างกันไม่เกิน 40 เมตร
บทแนะนำทีละขั้นตอนนี้จะแสดงวิธีตั้งค่าโหนด CAN โดยใช้ไมโครคอนโทรลเลอร์ STM32 รวมถึงวงจรและโค้ด C อย่างง่ายเพื่ออ่านและเขียนไปยัง CAN บัส
เสบียง
สำหรับแต่ละโหนด CAN:
- 1x กระดานฝ่าวงล้อม STM32 (นิวคลีโอ, ยาเม็ดสีน้ำเงิน, อื่นๆ)
- 1x MCP2551 CAN ตัวรับส่งสัญญาณ IC
- ตัวเก็บประจุ 1x 0.1µF
- ตัวต้านทาน 1x120Ω
- ตัวต้านทาน 1x1kΩ
- อินพุตที่อ่านได้ 1+ รายการ (ปุ่ม สวิตช์ โพเทนชิออมิเตอร์ ฯลฯ) หรือเอาต์พุต (LED, MOSFET เป็นต้น)
- 1x ขั้วต่อ Dsub9
ขั้นตอนที่ 1: วงจรเครื่องรับส่งสัญญาณ
ในการสื่อสารกับ CAN บัส เราจะใช้ IC ตัวรับส่งสัญญาณ MCP2551 CAN IC ทำหน้าที่เป็นคู่ตัวส่ง/ตัวรับระดับกลางเพื่อเชื่อมต่อ STM32 กับ CAN บัส วงจรสำหรับติดตั้ง IC นี้ค่อนข้างง่าย แต่มีบางสิ่งที่ควรทราบ:
-
CAN_RX (พิน 4) และ CAN_TX (พิน 1) บนชิป MCP2551 สามารถไปที่พินบางตัวบน STM32 เท่านั้น
- บน STM32F1 Nucleo ให้เชื่อมต่อสาย RX เพื่อตรึง PB8 และสาย TX เพื่อตรึง PB9
- บนเม็ดสีฟ้า STM32F1 ให้เชื่อมต่อ RX เพื่อปักหมุด PA11 และ TX เพื่อปักหมุด PA12
- โปรดทราบว่าการกำหนดพินเหล่านี้มีทางเลือกอื่น ดูคู่มือไมโครคอนโทรลเลอร์เพื่อดูว่าพินใดบ้างที่มีความสามารถ CAN_RD และ CAN_TD
- หากใช้ Arduino หรือบอร์ดที่ไม่มีตัวสื่อสาร CAN ในตัว ชิป IC MCP2515 จะต้องแปลงโปรโตคอลข้อความอื่นเป็น CAN
- พิน CANL ควรเชื่อมต่อกับพิน CANL อื่นของโหนดบัสอื่น เช่นเดียวกับหมุด CANH
- ตัวต้านทาน 120Ω ข้ามพิน CANH และ CANL จำเป็นเฉพาะเมื่อโหนดนั้นเป็นโหนดปลายทางเท่านั้น ซึ่งหมายความว่าอยู่ปลายสายเชื่อมต่อแบบขนาน กล่าวอีกนัยหนึ่ง CAN บัสควรมีตัวต้านทาน 120Ω สองตัวเท่านั้น และควรอยู่ห่างจากกันมากที่สุด
- สุดท้ายนี้ ตัวต้านทาน 1kΩ บน RS (พิน 8) สามารถแลกเปลี่ยนเป็นตัวต้านทาน 10kΩ เพื่อควบคุมเวลาที่เพิ่มขึ้น/ลดลงของบิตข้อความ CAN ดูแผ่นข้อมูลชิป MCP2551 สำหรับรายละเอียดเพิ่มเติม
ขั้นตอนที่ 2: การอ่านและเขียนไปยัง CAN Bus
เมื่อวงจรตัวรับส่งสัญญาณเชื่อมต่อกับ STM32 แล้ว เราก็สามารถเริ่มเขียนข้อความไปยัง CAN บัสได้ คู่มือแนะนำนี้จะไม่เจาะลึกถึงรหัส STM32 อย่างไรก็ตาม อย่าลืมดูตัวอย่างโค้ดของเราที่นี่ การใช้ STM32 เป็นโหนด CAN จะต้องใช้ไฟล์ส่วนหัว CAN เราเขียนของเราเอง ซึ่งสามารถพบได้ใน github ของเราที่นี่ เราจะให้ภาพรวมคร่าวๆ ของกระบวนการอ่าน/เขียน
หากต้องการอ่านจาก CAN บัส เราต้องทราบ ID ของข้อความ CAN ก่อน ทุกข้อความควรมี ID ที่ไม่ซ้ำกัน โดย ID ที่ต่ำกว่าจะมีลำดับความสำคัญสูงกว่า ข้อมูลโค้ดที่แสดงที่นี่กำลังรอข้อความ CAN ที่มี ID 0x622 ในระบบของเรา หากบิตแรกของไบต์ที่ 6 สูง เราต้องการตั้งค่าพิน A10 ให้สูง
เมื่อเขียนข้อความ CAN เราต้องจำไว้ว่าข้อความ CAN เป็นแบบหลายไบต์ แต่ละข้อความที่เขียนต้องมี ID และความยาว ในตัวอย่างที่สองของโค้ดที่แสดง เราเขียนข้อมูลไปยังแต่ละไบต์ จากนั้นจึงส่งข้อความ (พารามิเตอร์ ID และความยาวถูกกำหนดไว้ก่อนหน้าในโค้ด)
ขั้นตอนที่ 3: เชื่อมต่อโหนด
เมื่อเชื่อมต่อโหนด CAN หลายโหนด ควรให้ความสนใจกับความยาวของสายเคเบิลอย่างระมัดระวัง โหนดที่ไกลที่สุดสองโหนดสามารถอยู่ห่างกันได้ถึง 40 เมตร โหนดกลางที่เชื่อมต่อกับรถบัสควรอยู่ในระยะ 50 ซม. ของสายรถประจำทางหลัก
การเชื่อมต่อ CAN เป็นไปตามมาตรฐานอุตสาหกรรมของการใช้ตัวเชื่อมต่อ Dsub9 กับสาย CANL ที่ขา 2 และสาย CANH บนพิน 7 บรรทัดตัวเลือก CANGND สามารถไปที่พิน 3
ขั้นตอนที่ 4: สร้าง PCB
เมื่อกำหนดเส้นทางสัญญาณ CAN บน PCB โปรดจำไว้ว่า CAN เป็นสัญญาณที่แตกต่างกัน ดังนั้น ควรปฏิบัติตามแนวทางการกำหนดเส้นทางสำหรับ CANH และ CANL อย่างระมัดระวัง
ขั้นตอนที่ 5: การขยายบอร์ด
รวมโหนดเพิ่มเติมเข้าด้วยกัน เพิ่มอินพุต/เอาต์พุต และเชื่อมต่อพิน CANH และ CANL ทั้งหมด โปรดทราบว่า STM32 แต่ละตัวหรือไมโครคอนโทรลเลอร์อื่นๆ ต้องใช้ชิป MCP2551 ของตัวเอง ไม่สามารถแบ่งปันได้
จากที่กล่าวมา ให้พยายามทำให้ PCB ของคุณเล็กกว่าที่แสดงที่นี่
ขั้นตอนที่ 6: สั่งซื้อ PCB ของคุณจาก JLCPCB
JLCPCB ให้บริการที่รวดเร็วและมีคุณภาพสูงในราคาที่สมเหตุสมผล รับ 5 กระดาน สีใดก็ได้พร้อมการปรับแต่งมากมายในราคาเพียง $2! และถ้าเป็นการสั่งซื้อครั้งแรก รับ 10 แผงในราคาเท่ากัน!
เพียงอัปโหลดเกอร์เบอร์ของคุณแล้วรับใบเสนอราคาทันที! ส่งคำสั่งซื้อของคุณและบอร์ดของคุณจะได้รับการตรวจสอบเพื่อการผลิตภายในหนึ่งชั่วโมง เมื่อคุณชำระเงินแล้ว คุณสามารถคาดหวังบอร์ดคุณภาพสูงของคุณได้ภายในสามวัน!
ตรวจสอบที่นี่
ขั้นตอนที่ 7: รับบอร์ดของคุณ
ขอแสดงความชื่นชมอย่างมากต่อ JLCPCB สำหรับการสนับสนุนโครงการนี้ JLCPCB (ShenzhenJLC Electronics Co., Ltd.) เป็นองค์กรต้นแบบ PCB ที่ใหญ่ที่สุดในประเทศจีนและเป็นผู้ผลิตไฮเทคที่เชี่ยวชาญด้านการสร้างต้นแบบ PCB อย่างรวดเร็วและการผลิต PCB แบบกลุ่มย่อย พวกเขาใจดีพอที่จะจัดหา PCB ใหม่ให้กับ UBC Solar สำหรับรถแข่งที่ขับเคลื่อนด้วยพลังงานแสงอาทิตย์ของเรา เราวางคำสั่งซื้อของเราในวันศุกร์และได้รับบอร์ดในวันพุธ!
แนะนำ:
Digital AC Dimmer อันทรงพลังโดยใช้ STM32: 15 ขั้นตอน (พร้อมรูปภาพ)
Digital AC Dimmer อันทรงพลังโดยใช้ STM32: โดย Hesam Moshiri, [email protected] โหลดสดกับเรา! เพราะมันมีอยู่ทุกหนทุกแห่งรอบตัวเราและอย่างน้อยเครื่องใช้ในบ้านก็มาพร้อมกับแหล่งจ่ายไฟหลัก อุปกรณ์อุตสาหกรรมหลายประเภทยังใช้ไฟฟ้ากระแสสลับแบบเฟสเดียว 220V-AC
STONE Display +STM32 +เครื่องชงกาแฟ: 6 ขั้นตอน
STONE Display +STM32 +เครื่องชงกาแฟ: ฉันเป็นวิศวกรซอฟต์แวร์ของ MCU เพิ่งได้รับโครงการเป็นเครื่องชงกาแฟ ความต้องการของครัวเรือนด้วยการทำงานของหน้าจอสัมผัส ฟังก์ชันดี อยู่เหนือการเลือกหน้าจออาจไม่ดีมาก โชคดีที่โครงการนี้ฉันสามารถ Dec
เริ่มพัฒนา STM32 บน Linux: 4 ขั้นตอน
เริ่มการพัฒนา STM32 บน Linux: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าการเริ่มต้นพัฒนาโปรแกรม STM32 บน Linux นั้นง่ายเพียงใด ฉันเริ่มใช้ Linux เป็นเครื่องหลักเมื่อ 2 ปีที่แล้วและไม่เคยผิดหวัง ทุกอย่างทำงานได้เร็วกว่าและดีกว่า windows แน่นอนคือเล
STM32 "Blue Pill" การเขียนโปรแกรมผ่าน Arduino IDE & USB: 8 ขั้นตอน
การเขียนโปรแกรม STM32 "Blue Pill" ผ่าน Arduino IDE และ USB: การเปรียบเทียบบอร์ดต้นแบบทั่วไปของ STM32F (เช่น Blue Pill) กับส่วนอื่นของ Arduino นั้นง่ายต่อการดูว่ามีทรัพยากรมากขึ้นเพียงใด ซึ่งเปิดโอกาสใหม่ๆ มากมายสำหรับโครงการ IOT ข้อเสียคือขาดการสนับสนุน จริงๆแล้วไม่ใช่เลย
ส่วนที่ 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: 16 ขั้นตอน
ส่วนที่ 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: จุดเน้นของคำแนะนำนี้คือไมโครคอนโทรลเลอร์ STM32 Nucleo แรงจูงใจในการสร้างโครงการประกอบจากกระดูกเปล่า สิ่งนี้จะช่วยให้เราเจาะลึกและเข้าใจโครงการ MSP432 Launchpad (TI-RSLK) ที่มี