ไมโครคอนโทรลเลอร์ที่เปิดใช้งาน CAN นั้นเพียงพอต่อการขับ CAN บัสได้หรือไม่


45

วันนี้มีโมดูล CAN จำนวนมากที่สร้างขึ้นในไมโครคอนโทรลเลอร์ PIC18F2480เป็นตัวอย่างของการที่ ไมโครคอนโทรลเลอร์ตัวนั้น (ที่มี CAN ในตัว) สามารถขับ CAN บัสได้ด้วยตัวเองหรือไม่จำเป็นต้องใช้ตัวรับส่งสัญญาณ / คอนโทรลเลอร์ภายนอก?

ฉันเชื่อว่า CAN มีทั้งซอฟต์แวร์และฮาร์ดแวร์เลเยอร์และด้วยลักษณะของมันไมโครคอนโทรลเลอร์ที่เปิดใช้งาน CAN เหล่านี้ดูเหมือนจะมีเพียงซอฟต์แวร์ แต่ไม่ได้ระบุว่าสามารถหรือไม่สามารถขับรถบัส CAN ได้ตามที่เป็นอยู่

ฉันต้องการเชื่อมต่อไมโครคอนโทรลเลอร์มากกว่าหกตัวผ่านทาง CAN บัสและต้องการทราบว่าฉันต้องการตัวรับส่งสัญญาณทั้งหมดหรือไม่หรือสิ่งที่มีอยู่ในตัวสามารถจัดการการสื่อสารจากมุมมองของซอฟต์แวร์และฮาร์ดแวร์ได้หรือไม่

สมมติว่าฉันจะต้องมีตัวต้านทานการเลิกจ้างที่จำเป็นและส่วนประกอบที่ไม่ต่อเนื่องขนาดเล็กอื่น ๆ (หมวกตัวต้านทาน ฯลฯ )

คำตอบ:


55

นี่เป็นคำถามที่ดีมาก ตามกฎทั่วไปสามารถต้องการตัวรับส่งสัญญาณสำหรับทุกโหนด:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างไรก็ตามภายใต้สถานการณ์บางอย่างคุณสามารถหนีออกไปได้โดยไม่ต้องมีผู้รับส่งสัญญาณ! สถานการณ์เหล่านั้นคือ:

  • ความยาวบัสสั้น (น้อยกว่า 1 เมตร)
  • โดยเฉพาะอย่างยิ่งไมโครคอนโทรลเลอร์ทั้งหมดอยู่ใน PCB เดียวกันหรือ PCB แบบสแต็ก
  • อัตราบิตต่ำ
  • สภาพแวดล้อมไม่มีเสียงดังเกินไป

นี่ไม่ใช่กฎที่ยาก คุณอาจหนีด้วยอัตราบิตสูงสุด (1MB / s) ถ้าคุณมีรถบัสสั้นจริง ๆ (10 ซม.)

เพื่อให้บรรลุสิ่งนี้คุณต้องรู้เพียงเล็กน้อยเกี่ยวกับสิ่งที่ตัวรับส่งสัญญาณทำ เช่นเดียวกับตัวรับส่งสัญญาณส่วนใหญ่พวกเขาสามารถส่งออกสูงหรือต่ำไปที่รถบัส (แทน 1 และ 0) แต่ 0 สามารถครอง 1 IE ถ้าตัวรับส่งสัญญาณสองพยายามที่จะพูดในเวลาเดียวกันและอย่างใดอย่างหนึ่งบอกว่า 1 และอื่น ๆ กำลังบอกว่า 0 จากนั้น 0 จะชนะ เราสามารถสร้างสถานการณ์เดียวกันได้อีกครั้งโดยใช้ไดโอด:

ง่าย ๆ

ดูบันทึกแอปพลิเคชัน Seimens AP2921: การสื่อสารบนเครื่องผ่าน CAN โดยไม่ต้องรับส่งสัญญาณ

แต่นี่คือสิ่งที่น่าสนใจยิ่งขึ้น: PIC มีการรองรับฮาร์ดแวร์สำหรับ CAN transceiverless จริง ๆ !

CIOCON ลงทะเบียน

คุณสามารถกำหนดค่า CAN TX เพื่อให้ทำงานในลักษณะเดียวกับตัวรับส่งสัญญาณ หมายความว่าคุณสามารถต่อสาย CAN บัสได้โดยไม่ต้องใช้ไดโอด คุณจะต้องมีตัวต้านทาน

ง่ายกว่า CAN


2
คำตอบที่ยอดเยี่ยมอย่างแน่นอน ฉันซาบซึ้งอย่างยิ่งกับเวลาที่คุณตอบ ฉันอาจต้องไปกับตัวรับส่งสัญญาณเพราะอาจมีสัญญาณรบกวนทางไฟฟ้าจำนวนมากและแม้ว่าทุกอย่างจะถูกเก็บไว้ในกล่อง "พวกเขาจะอยู่ในหลาย pcbs ขอบคุณอีกครั้ง!
efox29

@ efox29 - ไม่เป็นไร มันจะดีกว่าถ้าคุณใช้ตัวรับส่งสัญญาณ
Rocketmagnet

การตั้งค่า transceiverless นั้นใหม่สำหรับฉันและดูน่าสนใจมากสำหรับการตั้งค่าเครือข่ายตัวควบคุมอย่างง่ายในระยะทางไกลกว่า ดี!
0x6d64

@ 0x6d64 - หากคุณต้องการนานอย่าลืมใช้อัตราบิตต่ำและอัตราการฆ่าจะ จำกัด ขอบ
Rocketmagnet

1
โปรดทราบว่าวิธีนี้จะใช้งานได้หากอุปกรณ์ทั้งหมดในบัสใช้การกำหนดค่าเดียวกันและใช้บัส CAN สายเดี่ยว หากคุณต้องการเชื่อมต่อกับสิ่งอื่นที่เป็น ISO จริง "จริง" และใช้บัสสองสายโหมดนี้จะไม่ทำงาน
Jon Watte

10

LPC11Cxxครอบครัวของไมโครคอนโทรลเลอร์ (ARM Cortex-M0 based) รวมถึงการรับส่งสัญญาณ CAN บนชิป


3
ใช่. ขวา. OP ถามเกี่ยวกับ PIC18 มันไม่ได้มีประโยชน์จริงๆ
Federico Russo

4
@FedericoRusso เขายกตัวอย่างกับ PIC18 และ timrorr ได้มอบโซลูชันพร้อมไดรเวอร์ในตัว เกิดอะไรขึ้นกับสิ่งนั้น?
clabacchio

8
@FedericoRusso - อย่าเป็นทางทวารหนัก คำตอบนี้น่าสนใจมาก
Rocketmagnet

1
@Rocketmagnet: ดังนั้นQ: "ฉันจะทำ X ได้อย่างไร?" A: "Do Y. " ตกลงหลังจากทั้งหมดหรือไม่ (จากคำตอบของคุณเอง)
Federico Russo

2
@FedericoRusso - หากคำถามได้รับการตอบรับอย่างดีต่อความพึงพอใจของ OP และมีคนพูดถึงข้อมูลที่เกี่ยวข้องที่น่าสนใจบางอย่างทำไมล่ะ?
Rocketmagnet

9

ใช่คุณต้องมีผู้ชักนำ หมุด CAN บนไมโครจะรับและส่งสัญญาณ CAN บัสนั้นใช้ twisted-pair พร้อมสัญญาณที่ต่างกันบนสายสองเส้นที่เรียกว่า HIGH และ LOW

หนึ่งในงานของตัวรับส่งสัญญาณคือการใช้ระดับตรรกะที่คุณนำเสนอบนเข็มหมุด TX แล้วเปลี่ยนเป็นสัญญาณบัส CAN:

  • ตรรกะ '1' ถูกแทนด้วยการไม่ขับรถบัสดังนั้น HIGH และ LOW lines "float" ถึง 2.5V - เรียกว่า "recessive bit" ในคำศัพท์ CAN
  • ตรรกะ '0' ถูกแทนด้วยการขับ high HIGH high และ LOW line low - เรียกว่า "dominant bit" เนื่องจากมันจะแทนที่บิต recessive ใด ๆ ที่ถูกส่ง

อีกอันคือนำสิ่งที่อยู่บนรถบัสแล้วเปลี่ยนกลับเป็นระดับตรรกะเพื่อส่งกลับจาก RX pin ไปยังไมโครของคุณ


8

คุณต้องการชิปตัวรับส่งสัญญาณ CAN ระหว่าง CPU และ CAN บัส ตรวจสอบ MCP2551

อัปเดต 17 ส.ค. 2560:

ฉันอยู่ในการประชุม Microchip Masters ตอนนี้ ฉันถูกบอกว่าแบนโดยวิศวกรของ Microchip ว่าหนึ่งในชิ้นส่วนใหม่ที่เป็นผลมาจากการซื้อ Atmel นั้นทั้งราคาถูกกว่าและดีกว่า MCP2551


1
Microchip กำลังแนะนำ2561ในช่วงปี 2551 นี้ NXP มีชิป CAN ที่น่าสนใจเช่นกัน MCUs ส่วนใหญ่ต้องการตัวรับส่งสัญญาณ
Ludwig Schreier

2

อุปกรณ์อะนาล็อกมีวงจรส่งสัญญาณ CAN ตัวอย่างโดยใช้เครื่องขยายเสียงที่แตกต่างกัน
ฉันไม่ได้ลองสิ่งนี้ แต่เพิ่งรู้ สนใจด้วยหากสามารถนำไปใช้กับ op-amp ได้

วงจรของอะนาล็อก

ข้อดีของการใช้ตัวรับส่งสัญญาณ IC โดยเฉพาะคือพวกเขาจะจัดการอนุญาโตตุลาการสำหรับคุณและคุณไม่ต้องกังวลกับการรบกวนรถบัส หากคุณเพียงสังเกตรถบัสและไม่ใช่สภาพแวดล้อมที่ผิดปกติวงจรอาจไม่ทำงาน ในขณะที่ mcp2551 เป็นที่นิยมมากมีตัวเลือกมากมายสำหรับชิปอินเตอร์เฟซ

วิวัฒนาการใหม่คือชิปประเภท System Base ซึ่งรวมถึงการควบคุมแรงดันไฟฟ้าโหมดพลังงานและการป้องกัน ESD จากบัส

เช่นเดียวกับ timorr ที่กล่าวข้างต้น LCP11C24 ของ NXP มีความโดดเด่นในตัวประมวลผลซึ่งรวมถึงตัวรับส่งสัญญาณ CAN กระดานสาธิตที่มีราคาเพียง $ 19 อีกโซลูชันที่มีต้นทุนต่ำคือใช้บอร์ดสาธิต Cypress PSoC5 $ 9.38 ซึ่งเป็นรุ่น CY8CKIT-059 PSoC5 ไม่มีคอนโทรลเลอร์ CAN มันดำเนินต่อไปอีกหนึ่งตัวควบคุมนั้นจะถูกนำไปใช้งานในบล็อคอเนกประสงค์คล้าย FPGA รีจิสเตอร์ของคอนโทรลเลอร์ถูกกำหนดค่าผ่าน GUI ของ IDE ทำให้การกรองและการวิจัยและพัฒนาทำได้ง่ายมาก

วิธีการสำคัญที่ฉันพบเมื่ออ่านแผ่นข้อมูลคือ mcu TTL มีข้อความกำกับว่า CAN-Tx และ CAN-Rx ในขณะที่สายข้อมูลของเครื่องรับส่งสัญญาณไปยังบัสนั้นจะมีป้ายกำกับว่า CAN-H และ CAN-L เสมอ ฉันไม่ชอบไดอะแกรมในคำตอบอื่นที่แสดงให้เห็นว่า TxRx เชื่อมต่อกับรถบัส สิ่งนี้ขัดกับการประชุมและก่อให้เกิดความสับสน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.