Monday, August 4, 2014

Which CPU can I use for CAN???

With solid requirements a designers job is simpler - choosing the components that meet the needs, at the lowest cost.  But when the requirements are opened ended, it is tougher.  The past few days I have been looking into ways to get CAN and a small micro-controller together, still not sure I have the full answer.

I think 1st I want to limit things to what can be used with the Arduino IDE.   Given the home-brew nature of this project, Arduino's low cost (free) tools, combined with some per-defined wrappers /  libs makes thing a little more easier for a wider range of people.  With this as a framework, I think there are three viable approaches:

1) Use Arduino UNO ATmega328p CPU + MCP2515 CAN controller
2) Use Arduino Due ATSAM3X8EA CPU, it has dual integrated CAN controllers.
3) Use Atmel AT90CAN32 CPU:  A kind of 'grown up' ATmega328 CPU, it has a single integrated CAN controller and  several more I/O ports.
Option #1 would be the lowest cost ($5.10  using Mouser pricing), and I think I can get all the current controller functionality supported if I shift around some ports and all but eliminate the expansion connector.

Option #2 is perhaps an overkill.  But the two CAN ports could come in useful to support a low-speed and a special low-latency bus.  The ATSAM3X8EA increases program space from 32K to a whopping 512K!  Downside: Cost - $13.51, perhaps a bit higher as I look more into what is truly needed for USB communication.

Something else?
Option #3 is somewhere in the middle.  Its cost is $7.10 - though it does not have the real killer capability as option #2, there are pin compatible versions available which increase the programming space from 32K to 64K and even 128K - for a price of course: $9.00 & $11.33 respectively.

In addition, each of the options will require some extra work in the power supply, and close care with power down modes - as with CAN the controller needs to be alive all the time looking for a call to start generating...

Clearly option #1 is the lowest cost, and its MCP2515 is somewhat supported in the Arduino community.  But I am kind of leaning towards option #3.  Though a little higher cost, it comes with more I/O capability that I could use to provide additional functions w/o an expansion board (ala, controlling external cooling pump & monitoring the watermaker pressures).  Though I could add those capabilities w an expansion board, but the time one purchases the I2C chips, the cost advantage of option #1 is lost.

#2 is such an overkill, and as well as the highest cost.  I also kind of wonder about the future of the Due.  Today I noted two new Arduino offerings, the Treo and the Zero.  Both are high power RISC machines, and I really wonder if the Due's popularity will be effected by them. . . .

No comments:

Post a Comment