คำถามติดแท็ก can

CAN ย่อมาจาก Controller Area Network และเป็นบัสที่มักใช้ในงานยานยนต์ เป็นโปรโตคอลที่แตกต่างกันสองสายและทำงานกับอัตราการส่งข้อมูลตั้งแต่ 10 kbits / วินาทีถึง 1 Mbits / วินาที

5
ไมโครคอนโทรลเลอร์ที่เปิดใช้งาน CAN นั้นเพียงพอต่อการขับ CAN บัสได้หรือไม่
วันนี้มีโมดูล CAN จำนวนมากที่สร้างขึ้นในไมโครคอนโทรลเลอร์ PIC18F2480เป็นตัวอย่างของการที่ ไมโครคอนโทรลเลอร์ตัวนั้น (ที่มี CAN ในตัว) สามารถขับ CAN บัสได้ด้วยตัวเองหรือไม่จำเป็นต้องใช้ตัวรับส่งสัญญาณ / คอนโทรลเลอร์ภายนอก? ฉันเชื่อว่า CAN มีทั้งซอฟต์แวร์และฮาร์ดแวร์เลเยอร์และด้วยลักษณะของมันไมโครคอนโทรลเลอร์ที่เปิดใช้งาน CAN เหล่านี้ดูเหมือนจะมีเพียงซอฟต์แวร์ แต่ไม่ได้ระบุว่าสามารถหรือไม่สามารถขับรถบัส CAN ได้ตามที่เป็นอยู่ ฉันต้องการเชื่อมต่อไมโครคอนโทรลเลอร์มากกว่าหกตัวผ่านทาง CAN บัสและต้องการทราบว่าฉันต้องการตัวรับส่งสัญญาณทั้งหมดหรือไม่หรือสิ่งที่มีอยู่ในตัวสามารถจัดการการสื่อสารจากมุมมองของซอฟต์แวร์และฮาร์ดแวร์ได้หรือไม่ สมมติว่าฉันจะต้องมีตัวต้านทานการเลิกจ้างที่จำเป็นและส่วนประกอบที่ไม่ต่อเนื่องขนาดเล็กอื่น ๆ (หมวกตัวต้านทาน ฯลฯ )
45 can 

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

3
สถานที่ที่ถูกต้องในการแนบโล่สำหรับคู่บิด
ฉันมี PCBs สองตัวเชื่อมต่อกันด้วยสายเคเบิลที่มี 5 สายย่อย: กำลังไฟ 6v ผ่านสายโคแอกเชียลตามสั่ง (คล้ายกับที่พบในอุปกรณ์จ่ายไฟแล็ปท็อป) LVDS 2x 100mbps ผ่านความต้านทานคู่ 100ohm สกรีนคู่ สามารถ 2x 1mbps ผ่านสายคู่บิด 120ohm เดียวกัน สาย LVDS แต่ละสายจะสิ้นสุดที่ RX end ด้วยตัวต้านทาน 100 โอห์ม พวกเขามีหน้าจอเกียดด้วยสายท่อระบายน้ำ สายเคเบิล CAN แต่ละสายจะสิ้นสุดที่ปลายทั้งสองด้านด้วยตัวต้านทาน 120 โอห์ม พวกเขามีหน้าจอเกียดด้วยสายท่อระบายน้ำ กำลังไฟ 24 โวลต์ที่แยกได้จะถูกส่งไปยังบอร์ดด้านซ้ายซึ่งจะเปลี่ยนเป็น 6v (ไม่แยก) บอร์ดทั้งสองมีตัวควบคุม DCDC 3.3v ของตัวเอง (ไม่แยกตัว) สำหรับอุปกรณ์อิเล็กทรอนิกส์ในท้องถิ่น คำถามของฉัน: ควรเชื่อมต่อโล่ใดที่ปลายด้านหนึ่ง? ฉันคิดว่าโล่ …

6
โปรโตคอลการ จำกัด / การซิงโครไนซ์เทคนิคแบบอนุกรม
เนื่องจากการสื่อสารแบบซีเรียลแบบอะซิงโครนัสแพร่กระจายอย่างกว้างขวางในอุปกรณ์อิเล็กทรอนิกส์ทุกวันนี้ฉันเชื่อว่าพวกเราหลายคนได้พบคำถามเช่นนี้เป็นครั้งคราว พิจารณาอุปกรณ์อิเล็กทรอนิกส์Dและคอมพิวเตอร์PCที่เชื่อมต่อกับสายอนุกรม (RS-232 หรือคล้ายกัน) และจำเป็นต้องมีการแลกเปลี่ยนข้อมูลอย่างต่อเนื่อง Ie PCกำลังส่งเฟรมคำสั่งแต่ละเฟรมX msและDกำลังตอบกลับด้วยรายงานสถานะ / เฟรม telemetry แต่ละรายการY ms(สามารถส่งรายงานเป็นการตอบสนองต่อคำขอหรือเป็นอิสระ - ไม่สำคัญเลยที่นี่) กรอบการสื่อสารสามารถมีข้อมูลไบนารีใด ๆ โดยพลการ สมมติว่าเฟรมการสื่อสารเป็นแพ็กเก็ตที่มีความยาวคงที่ ปัญหา: เนื่องจากโปรโตคอลมีความต่อเนื่องด้านการรับอาจหลุดการซิงโครไนซ์หรือเพียงแค่ "เข้าร่วม" ที่อยู่ตรงกลางของเฟรมที่ส่งต่อเนื่องดังนั้นมันจะไม่รู้ว่าจุดเริ่มต้นของเฟรม (SOF) นั้นอยู่ที่ไหน ข้อมูลมีความหมายที่แตกต่างกันไปตามตำแหน่งของ SOF ข้อมูลที่ได้รับจะเสียหายและอาจเกิดขึ้นตลอดไป ทางออกที่ต้องการ รูปแบบการลด / ประสานที่เชื่อถือได้ในการตรวจจับ SOF ด้วยเวลาการกู้คืนสั้น ๆ (เช่นไม่ควรใช้เวลามากกว่านั้นพูด 1 เฟรมเพื่อซิงโครไนซ์อีกครั้ง) เทคนิคที่มีอยู่ฉันรู้ (และใช้บางส่วน) ของ: 1) ส่วนหัว / การตรวจสอบ - SOF เป็นค่าไบต์ที่กำหนดไว้ล่วงหน้า ตรวจสอบผลรวมในตอนท้ายของเฟรม จุดเด่น:เรียบง่าย …
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

3
อัตราบัส CAN บัส (ข้อความ) สูงสุดที่ 125 kbit / s คืออะไร?
รถบัส CAN ของฉันทำงานที่ 125 kbit / s และใช้รูปแบบเฟรมแบบขยายโดยเฉพาะ ฉันอยากรู้ว่าอัตราเฟรม CAN สูงสุดที่ฉันสามารถส่งได้คือเท่าไหร่ สมมติว่าความยาวข้อมูลอยู่ที่แปดไบต์เสมอ ตามหน้า Wikipedia นี้แต่ละเฟรมมีความยาวเฟรมสูงสุดเป็น(1+11+1+1+18+1+2+4+64+15+1+1+1+7) = 128บิต: โดยคำนึงถึงระยะห่างระหว่างเฟรมอย่างน้อยสามบิตอัตราแพ็กเก็ตสูงสุดต่ำกว่า 125 kbit / s ควรเป็น: 125000 / ( 128 + 3) = 954เฟรมต่อวินาที แต่ในการทดสอบของฉันฉันไม่สามารถสูงได้ อัตราเฟรมสูงสุดที่ฉันสามารถทำได้ (ด้วยข้อมูลทั้งแปดไบต์) คือประมาณ 850 เฟรมต่อวินาที มีอะไรผิดปกติในการคำนวณหรือวิธีทดสอบของฉัน

3
สามารถออกใบอนุญาตรถบัส
มองไปรอบ ๆ เพื่อหาวิธีแก้ปัญหาที่เป็นไปได้สำหรับการสื่อสารทางไกลระหว่างไมโครคอนโทรลเลอร์หลายตัวฉันพบ CAN บัส อย่างไรก็ตามมันบอกว่ามีค่าธรรมเนียมใบอนุญาตสำหรับการใช้งานโปรโตคอล CAN ใด ๆ แผนของฉันคือการใช้ไมโครคอนโทรลเลอร์คอนโทรลเลอร์ CAN (MCP2515) และตัวรับส่งสัญญาณ CAN (MCP2561) สำหรับแต่ละโหนดเพื่อสื่อสารบนเครือข่าย ฉันต้องจ่ายค่าธรรมเนียมใบอนุญาต CAN หรือไม่หรือผู้ผลิตคอนโทรลเลอร์และตัวรับส่งสัญญาณสามารถชำระเงินได้หรือไม่ ขอบคุณล่วงหน้า
14 can  legal  licensing 

3
การส่งข้อความที่แตกต่างด้วย SAME ID บน CAN บัส
การตัดสินโดยอนุญาโตตุลาการสามารถทำได้ด้วย ID และโหนดใด ๆ บนบัสสามารถส่งผ่านด้วย ID ใด ๆ (โดยปกติแล้วมันไม่ควร แต่โหนดที่น่ารังเกียจสามารถทำได้) จะเกิดอะไรขึ้นถ้าสองโหนดที่แตกต่างกันเชื่อมต่อกับ CAN บัสเดียวกันส่งข้อความด้วย ID เดียวกัน แต่ไบต์ข้อมูลต่างกัน ความคิดของฉัน: มันจะสร้างขยะบนรถบัส ใครก็ตามที่มีบิตที่โดดเด่นเหล่านั้นเท่านั้นที่จะได้รับการถ่ายทอด
12 can 

3
MCP2551 เป็นตัวแปลง UART-to-CAN หรือไม่
ฉันต้องการสร้าง CAN บัสดมกลิ่น 250 kbit / s โดยใช้คอมพิวเตอร์ของฉัน หลังจากการวิจัยบางอย่างฉันพบว่าMCP2551เป็นตัวปรับแรงดันไฟฟ้าระดับหนึ่งสำหรับเลเยอร์ทางกายภาพของ CAN โปรดระลึกไว้เสมอว่าฉันสงสัยว่าการตั้งค่านี้สามารถใช้งานได้หรือไม่ ฉันแค่ต้องการบันทึกข้อความที่แลกเปลี่ยนเพื่อการทดสอบอัตโนมัติไม่ใช่ส่วนหนึ่งของการสื่อสาร: PC <-> USB-UART (อาจเป็น CP2102 เพราะฉันมีอยู่แล้ว) <-> MCP2551 <-> CAN บัส หากไม่มีสัญญาณประเภทใดที่จะต้องเข้าสู่ MCP2551 เพื่อให้ฉันเป็นส่วนหนึ่งของรถบัส
12 usb  microchip  can 

4
การใช้เลเยอร์โปรโตคอล CAN ในซอฟต์แวร์
พื้นหลัง ฉันกำลังพัฒนาโครงการที่ต้องการรายละเอียดของไมโครคอนโทรลเลอร์ขนาดเล็กของ: 8 ADCs 12 บิต, 10kHz RAM ขนาด 1kB 48-QFN หรือมีขนาดเล็กกว่า โปรโตคอลการสื่อสารที่ป้องกันเสียงรบกวนและแก้ไขข้อผิดพลาด 20kbps ข้อกำหนดการประมวลผลสัญญาณค่อนข้างต่ำและส่วนใหญ่สามารถส่งออกไปยังตัวประมวลผลหลักในระบบ สามคุณสมบัติแรกนั้นง่ายต่อการตอบสนองและสามารถทำได้ในปริมาณที่น้อยกว่า $ 2 อย่างไรก็ตามการสื่อสารจะเกิดขึ้นในสภาพแวดล้อมที่มีเสียงดังมากดังนั้นเครือข่ายที่มีเสียงดังเช่น LIN และ I2C จึงไม่ทำงาน ข้อโต้แย้งเพิ่มเติมต่อ LIN คือฉันต้องการเรียกใช้ทั้งหมดที่ 5V หรือ 3.3V และตัวรับส่งสัญญาณ LIN ต้องการ 12V และต้องมีตัวควบคุมเพิ่มเติมหรือสายต่อบอร์ดเซ็นเซอร์ ตอนแรกฉันเลือก CAN สำหรับงานนี้ อย่างไรก็ตามคอนโทรลเลอร์สามารถเพิ่มค่าใช้จ่ายได้เป็นอย่างมากและฉันอยากรู้ว่าซอฟต์แวร์นี้สามารถทำได้หรือไม่ CAN Physical Layer ข้อมูลจำเพาะของ CAN จะกำหนด Data Link และ Physical Layer ของโมเดลอ้างอิงเครือข่าย …

1
CAN บัสสมบูรณ์สัญญาณ
ช่องทางคือ CAN_H (สีแดง), CAN_L (สีน้ำเงิน) และ CAN_H-CAN_L (สีน้ำตาล) สามารถสังเกตได้ในแผนภาพด้านล่างที่ CAN_H-CAN_L มีรูปร่างของสัญญาณที่ยอมรับได้ อย่างไรก็ตามทั้ง CAN_H และ CAN_L ดูฉันไม่ดี และจริง ๆ แล้วอุปกรณ์ไม่ได้ทำงานในสภาพแวดล้อมที่มีเสียงดัง ฉันมีสองคำถาม: คุณคิดว่าความสมบูรณ์ของสัญญาณเป็นปัญหาที่นี่หรือไม่? CAN_H-CAN_L บางครั้งมีระดับแรงดันไฟฟ้าสูงถึง 1.65 V (ส่วนด้านซ้าย) ในขณะที่บางครั้งมันมีระดับสูงที่ 2.06 V (ด้านขวา) คุณคิดว่านี่เป็นปัญหาหรือไม่?

5
รหัสสีสำหรับ CAN Bus คืออะไร
ฉันต้องการทราบว่ามีการระบุรหัสสีสำหรับการเดินสายการสื่อสาร CAN Bus หรือไม่ใน ISO-11898-1 (ฉันไม่สามารถเข้าถึงไฟล์ได้ฟรี) ฉันมองหาเอกสารอย่างเป็นทางการโดยไม่มีโชค เมื่อฉันถามเพื่อนร่วมงานของฉันเกี่ยวกับมันพวกเขาทุกคนเห็นด้วยกับสี (สีเหลืองและสีเขียว) แต่พวกเขาไม่เห็นด้วยถ้าเป็น: สีเหลืองสำหรับ CAN-H สีเขียวสำหรับ CAN-L หรือแทน: สีเขียวสำหรับ CAN-H สีเหลืองสำหรับ CAN-L

2
เปิดใช้งานอินเตอร์รัปต์ แต่ไม่มี ISR
ฉันอยากจะรู้ว่าจะเกิดอะไรขึ้นถ้าเปิดใช้งานอินเทอร์รัปต์ (ตัวอย่าง: Arbitration Lost Interrupt ใน CAN โมดูลของ LPC1778 ของ NXP) แต่ไม่มีการกำหนด ISR สำหรับการอินเตอร์รัป เมื่อการขัดจังหวะเกิดขึ้นฉันรู้ว่าการตั้งค่าการขัดจังหวะตามลำดับจะได้รับการตั้งค่า แต่เนื่องจากฉันไม่ได้กำหนด ISR ใด ๆ จะไม่มีที่อยู่ใด ๆ ของเวกเตอร์ออฟเซ็ตขัดจังหวะที่เก็บไว้สำหรับการควบคุมการถ่ายโอน เป็นรูทีนหลักและฉันสามารถรีเซ็ตการตั้งค่าอินเตอร์รัปต์โดยการสำรวจในรูทีนหลัก (นี่คือสิ่งที่ฉันกำลังคิด) จะมีเวลาแฝงใด ๆ เมื่อ CPU รู้ว่าไม่มี ISR ที่จะข้ามไปหรือไม่ ทางออกใด ๆ ที่อาจเกิดขึ้นสามารถช่วยฉันได้จริงๆ ขอบคุณ ปรับปรุง: ฉันเปิดใช้งาน CAN อินเตอร์รัปต์บน uC ของฉันได้ แต่ไม่ได้กำหนด ISR เมื่อฉันทำการทดสอบลูปแบ็คภายในรหัสที่ป้อนลงในลูปไม่สิ้นสุด นี่คือรหัส disassembly ของ infinite loop ที่ถูกเรียกใช้งานบน …

3
การเลือกเลเยอร์เครือข่ายผ่าน CAN บัส
ฉันวางแผนที่จะใช้ CAN บัสในแอพพลิเคชั่นระบบอัตโนมัติทางอุตสาหกรรม แต่ฉันมีเวลาตัดสินใจยากที่จะใช้เลเยอร์เครือข่าย ใครบ้างที่นี่มีคำแนะนำใด ๆ สำหรับโพรโทคอลเลเยอร์ที่สูงกว่าเพื่อใช้ผ่าน CAN ที่ให้แนวทางสำหรับการกำหนด ID ข้อความและวิธีจัดรูปแบบแพ็กเก็ตข้อมูลหรือไม่ ฉันควรพัฒนาเลเยอร์เครือข่ายที่เป็นกรรมสิทธิ์ของตัวเองหรือใช้มาตรฐานที่มีอยู่อย่าง CANopen หรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.