Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.
The CAN can translate more length than RS485 and
his speed is more than RS485, CAN can have 125 node in the net.CAN can tranlate 1000M more than 5k/s,and 100M at 500K.
Hello,
the key difference between the RS485 and the CANbus is the controller. The controller of CANbus is much more sophisticated that a UART and it manages in an autonomous way the access to the bus, errors, error states, etc.
If you want a system that should be very reliable and whose functionality is very dependent of the communication it is better a solution more based on hardware like CANbus.
Better if you can also use a good library.
I have had a pleasing experience in automotive.
There is a good course of Infineon about CANbus in www.techonline.com.
It depends on what you intend to do. For a master slave network type, it's easier to use RS485. Less hardware, a little overhead in software. SNAP is a good protocol for start. But if you need that some nodes talk by themselves (without interogation) then without collision detection the RS485 is more then trouble. Of course you can use a "token ring" type protocol or something similar but it have limitations regarding bandwith and reability. At this point CAN is a better option. There are hidden problems regarding CAN usage, if you intend to implement your own layer protocol. A good option is to study the implementation of "CAN open". There is even a fully detailed micro (or mini I don't remeber now) CANOpen with source files that can be used for some simple networks.
I think CAN is usefull both in dificult applications and simple applications.
In dificult applications (big network, many commands) you need to use CAN high level protocol (CanOpen for example), and in simple applications (small network, few commands) you can use CAN as is. RS485 is network variant of RS232 and very primitive. CAN is more advanced (read BOSCH specification) and have many features like arbitration, automatic CRC, priorities, automatic packet resending if error, receive acknowledges, etc..
But there is one problem - you must use uC with on-chip CAN, or use external CAN controller. It will make your system more expensive.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.