This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Need M0/M3/M4 supplier recommendation, CAN Bus

So, I'm just now migrating to ARM from PIC. I hate most things about Microchip's implementation of CAN, but I do love the ruggedness of those chips. Since I do far more work on CAN than analog I'm confident that Cortex is what I'm looking for.

However... Of the major suppliers NXP, Ti, Freescale, STM, SiliconLabs, etc, I'm not sure who to go with.

1. Does it matter? I'm pretty sure I'll be using Keil, so is there any signifigcant different between X and Y brand Cortex chip?

2. I work in automotive. Basically, the only requirements I have in a brand of ARM is that I need a small cheap on with 1 can controller and a USB device (host ideal). As well as a "big" chip that has two can bus ports and 1 USB host/device. That's it really. I think STM is winning so far. Ti doesn't have a range of M0/+. Freescale seems expensive and limited for dual CAN. NXP looks good but limited in selection at least compared to STM32Fxx series. Anything else I should look at?

3. If anyone else has made the transition from 8bit Microchip/Atmel to 32bit ARM and has any advice, I'd love to hear it! I have yet to work on a RTOS as the PIC doesn't have a lot of great options, so I've coded sort of schedulers, my own ADC, SPI, and CAN drivers. I know how to read SFRs and datasheets, but there is a whole generation or two gap here I'm jumping. So anything that comes to mind would be welcome.

4. RTOS. CMSIS or something as I understand it allows cross brand chip use, but at a higher overhead. I haven't looked into this a ton yet. Is there a specific RTOS that you Keil users like over others? I work in automotive but AutoSAR and even OSEK are undesirable for my uses. I'd really like something I could trace through. But I also need to convince the CFO of every purchase, so costs needs to be reasonable.

4. (CAN BUS SPECIFIC) Does anyone work with Keil + Cortex + CAN Bus? Is this a solid system? In this scenario who's driver would I likely start with? Something the mfg puts out? Something Keil has? My own? Is there something else that might be better? Microchip's CAN implementation is so bad, that I really can't imagine anything worse, but I need to find an arc that has first party and community support.

Thanks! J

Parents
  • Wha?

    It does matter. Some chips have better support with Keil, or have better libraries.
    Keil has 4.x and 5.x toolchains/libraries. Chip manufacturers have several libraries for the same MCU. All these are quite annoying to me.

    Ok, so it appears that STM32Fxx chips line up with what I'm looking for, how are they in relation to redundant libraries and Keil support?

    you don't need an automotive grade MCU, and are not bound to a specific CAN solution?
    Yes, I do work in automotive, using CAN mostly. That does not mean I work for a big 3/4 and make OE modules that are verified parts of the OE interior or powertrain network. The issue with Freescale is they seem to have 1 or 2 chips in their "automotive" section and neither have dual CAN. Makes me wonder how they are coming up with calling them "automotive" chips at all. I need 2x CAN and USB for bigger projects and at least 1 CAN and SPI for smaller projects

    Keil has its own RTOS.
    Ah, right. And I would assume that the support for it inside the IDE is excellent then :) How is the trace? Costs? Compared to other RTOS?

    Keil + Cortex + CAN Bus, sounds like it is not for automotive.

    If your device is one member of a CAN bus, why don't you just use a MCU that other members use? So that you can use the same CAN solution/library? If you don't use something like Vector or Mecel provided CAN solutions, I think it is better that you use your own CAN driver.

    I'm honestly not sure how you got there. Automotive doesn't mean OE module.

    I would not say my devices are explicitly members of the network. Sometimes they are, sometimes not. Sometimes diagnostic. Sometimes they piggy back on the factory bus to relay messages to two of my modules. I'm not sure if you've ever worked with the big 3 (or 4 depending on how you feel about Toyota) but there is no working with them for network modules. Closed system by design. Even IF I used the same chip, same terrible code from Vector, had a team of German engineers, got the same validation, these modules would be in the same "outsider" status. Vector, heh, no thanks on that noise ;)

Reply
  • Wha?

    It does matter. Some chips have better support with Keil, or have better libraries.
    Keil has 4.x and 5.x toolchains/libraries. Chip manufacturers have several libraries for the same MCU. All these are quite annoying to me.

    Ok, so it appears that STM32Fxx chips line up with what I'm looking for, how are they in relation to redundant libraries and Keil support?

    you don't need an automotive grade MCU, and are not bound to a specific CAN solution?
    Yes, I do work in automotive, using CAN mostly. That does not mean I work for a big 3/4 and make OE modules that are verified parts of the OE interior or powertrain network. The issue with Freescale is they seem to have 1 or 2 chips in their "automotive" section and neither have dual CAN. Makes me wonder how they are coming up with calling them "automotive" chips at all. I need 2x CAN and USB for bigger projects and at least 1 CAN and SPI for smaller projects

    Keil has its own RTOS.
    Ah, right. And I would assume that the support for it inside the IDE is excellent then :) How is the trace? Costs? Compared to other RTOS?

    Keil + Cortex + CAN Bus, sounds like it is not for automotive.

    If your device is one member of a CAN bus, why don't you just use a MCU that other members use? So that you can use the same CAN solution/library? If you don't use something like Vector or Mecel provided CAN solutions, I think it is better that you use your own CAN driver.

    I'm honestly not sure how you got there. Automotive doesn't mean OE module.

    I would not say my devices are explicitly members of the network. Sometimes they are, sometimes not. Sometimes diagnostic. Sometimes they piggy back on the factory bus to relay messages to two of my modules. I'm not sure if you've ever worked with the big 3 (or 4 depending on how you feel about Toyota) but there is no working with them for network modules. Closed system by design. Even IF I used the same chip, same terrible code from Vector, had a team of German engineers, got the same validation, these modules would be in the same "outsider" status. Vector, heh, no thanks on that noise ;)

Children