Apakah mikrokontroler yang diaktifkan CAN cukup untuk menggerakkan bus CAN?


45

Ada sejumlah modul BISA dibangun ke dalam mikrokontroler hari ini. The PIC18F2480 adalah contoh dari itu. Apakah mikrokontroler (dengan built-in CAN) mampu mengemudikan bus CAN sendiri atau apakah transceiver / controller eksternal CAN diperlukan?

Saya percaya CAN memiliki lapisan perangkat lunak dan perangkat keras dan sepertinya mikrokontroler yang diaktifkan-CAN ini tampaknya hanya memiliki perangkat lunak, tetapi tidak menyatakan bahwa CAN dapat atau tidak dapat menggerakkan bus CAN seperti apa adanya.

Saya mencari untuk menghubungkan lebih dari enam mikrokontroler melalui bus CAN dan ingin tahu apakah saya memerlukan transceiver di semua itu atau apakah barang bawaan dapat menangani komunikasi dari perspektif perangkat lunak dan perangkat keras.

Asumsikan bahwa saya akan memiliki resistor terminasi yang diperlukan dan komponen diskrit kecil lainnya (tutup, resistor, dll.)

Jawaban:


55

Ini pertanyaan yang sangat bagus. Sebagai aturan umum, CAN memerlukan transceiver untuk setiap node:

masukkan deskripsi gambar di sini

Namun, dalam keadaan tertentu, Anda benar-benar dapat pergi tanpa transceiver! Keadaan tersebut adalah:

  • Panjang bus pendek (kurang dari 1 meter)
  • Lebih disukai semua mikrokontroler menggunakan PCB yang sama, atau tumpukan PCB.
  • Kecepatan bit rendah
  • Lingkungan tidak terlalu berisik

Ini bukan aturan yang sulit. Anda mungkin lolos dengan bit rate maksimum (1MB / s) jika Anda memiliki bus sangat pendek (10cm).

Untuk mencapai ini, Anda perlu tahu sedikit tentang apa yang dilakukan transceiver. Seperti kebanyakan transceiver, mereka dapat menampilkan tinggi atau rendah ke bus (mewakili 1 dan 0), tetapi 0 dapat mendominasi 1. IE Jika dua transceiver mencoba untuk berbicara pada saat yang sama, dan satu mengatakan 1 dan yang lainnya mengatakan 0, maka 0 akan menang. Kami dapat menciptakan kembali situasi yang sama hanya menggunakan dioda:

BISA sederhana

Lihat catatan aplikasi Seimens AP2921: Komunikasi On-Board via CAN tanpa Transceiver

Tapi ada sesuatu yang lebih menarik: PIC sebenarnya memiliki dukungan perangkat keras untuk transceiverless BISA!

Daftar CIOCON

Anda dapat mengkonfigurasi pin CAN TX sehingga berperilaku dengan cara yang persis sama dengan transceiver. Ini berarti Anda dapat memasang bus CAN tanpa dioda. Anda masih membutuhkan resistor.

Lebih sederhana BISA


2
Jawaban yang benar-benar fantastis. Saya sangat menghargai waktu yang Anda ambil untuk membalas. Saya mungkin harus pergi dengan transceiver karena mungkin ada banyak suara listrik, dan meskipun semuanya akan disimpan dalam "kotak" mereka akan berada di beberapa PCB. Terima kasih lagi!
efox29

@ efox29 - Sama-sama. Tentunya lebih baik menggunakan transceiver jika Anda bisa.
Rocketmagnet

Pengaturan transceiverless itu baru bagi saya dan terlihat sangat menarik untuk mengatur jaringan pengendali sederhana jarak jauh. Bagus!
0x6d64

@ 0x6d64 - Jika Anda membutuhkannya lama, jangan lupa untuk menggunakan bit rate rendah, dan laju perubahan tegangan membatasi tepi.
Rocketmagnet

1
Perhatikan bahwa ini akan berfungsi jika semua perangkat di bus menggunakan konfigurasi yang sama, dan menggunakan bus CAN kawat tunggal. Jika Anda ingin berinteraksi dengan hal lain yang sebenarnya "asli" ISO CAN dan menggunakan bus dua kawat, mode ini tidak akan berfungsi.
Jon Watte

10

The LPC11Cxx keluarga mikrokontroler (ARM Cortex-M0 berdasarkan) meliputi transceiver CAN on-chip.


3
Iya. Baik. OP bertanya tentang PIC18. Ini tidak terlalu membantu.
Federico Russo

4
@FedericoRusso dia memberi contoh dengan PIC18, dan timrorr telah memberikan solusi dengan driver bawaan. Apa yang salah dengan itu?
clabacchio

8
@FedericoRusso - Jangan terlalu anal. Jawaban ini sangat menarik.
Rocketmagnet

1
@Rocketmagnet: Jadi T: "Bagaimana saya melakukan X?" A: "Do Y." tidak apa-apa? (Dari jawaban Anda sendiri)
Federico Russo

2
@FedericoRusso - Jika pertanyaan telah dijawab dengan baik untuk kepuasan OP, dan seseorang menyebutkan beberapa informasi terkait yang menarik, tentu saja, mengapa tidak?
Rocketmagnet

9

Ya, Anda membutuhkan trans. Pin CAN pada mikro diterima dan dikirim. Bus CAN itu sendiri menggunakan twisted-pair dengan sinyal diferensial pada dua kabel yang disebut TINGGI dan RENDAH.

Salah satu tugas transceiver adalah mengambil level logika yang Anda tampilkan pada TX pin dan mengubahnya menjadi sinyal bus CAN:

  • logika '1' diwakili dengan tidak mengemudikan bus, sehingga garis TINGGI dan RENDAH "mengambang" ke 2.5V - disebut "bit resesif" dalam terminologi CAN.
  • logika '0' diwakili dengan menggerakkan garis TINGGI tinggi dan garis RENDAH rendah - disebut "bit dominan" karena akan menimpa bit resesif yang sedang dikirim.

Yang lain adalah mengambil apa yang ada di bus, dan mengubahnya kembali menjadi level logika untuk mengirim kembali dari pin RX ke mikro Anda.


8

Anda memerlukan chip transceiver CAN antara CPU dan bus CAN. Lihat MCP2551.

Pembaruan 17 Agu 2017:

Saya di konferensi Microchip Masters sekarang. Saya diberitahu oleh para insinyur Microchip bahwa salah satu suku cadang baru yang dihasilkan dari akuisisi Atmel lebih murah dan lebih baik daripada MCP2551.


1
Microchip merekomendasikan 2561 daripada 2551 sekarang. NXP juga memiliki beberapa chip CAN yang menarik. Kebanyakan MCU membutuhkan transceiver.
Ludwig Schreier

2

Perangkat analog memiliki contoh rangkaian transceiver CAN yang menggunakan penguat diferensial.
Saya belum mencoba ini, saya hanya menyadarinya. Juga tertarik jika itu bisa diimplementasikan dengan op-amp

sirkuit analog

Keuntungan menggunakan transceiver IC CAN khusus adalah mereka akan menangani arbitrase untuk Anda dan Anda tidak perlu khawatir mengganggu bus. Jika Anda hanya mengamati bus dan itu bukan lingkungan yang kritis, sirkuit mungkin baik-baik saja. Sementara mcp2551 sangat populer, ada banyak opsi untuk chip antarmuka.

Evolusi baru adalah jenis chip Basis Sistem yang mencakup pengaturan tegangan, mode daya, dan perlindungan ESD dari bus.

Seperti yang dikatakan timorr di atas, LXC11C24 NXP adalah unik karena prosesor menyertakan CAN transceiver. Papan demo dengan ini hanya $ 19. Solusi berbiaya rendah lainnya adalah dengan menggunakan papan demo Cypress PSoC5 seharga $ 9,38, CY8CKIT-059. PSoC5 tidak memiliki kontroler CAN; ia melangkah lebih jauh: controller diimplementasikan dalam blok universal seperti-FPGA. Register pengendali dikonfigurasikan melalui GUI IDE, membuat penyaringan dan R&D cukup mudah.

Metode kunci yang saya temukan ketika meneliti lembar data adalah MCU TTL diberi label CAN-Tx dan CAN-Rx sedangkan jalur data transceiver ke bus selalu diberi label CAN-H dan CAN-L. Saya tidak suka diagram dalam jawaban lain di mana TxRx ditampilkan terhubung ke bus; ini bertentangan dengan konvensi dan berkontribusi pada kebingungan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.