Forum: µC & Digital Electronics HMI Protocol for CAN BUS

Author: Annika (Guest)
Posted on:

Rate this post
0 useful
not useful
Hi .*,

I need to design a HMI protocol for ECUS in cars which are connected to 
a CAN bus.
I have basically 3 tasks to consider.

The system is consisted of some Application control units and a HMI 
control unit and these all are connected to a same CAN bus.

1- I have to make simultaneous communication of application CUs with HMI 
   - In my idea this is not possible since CAN protocol does not support 
the Simultaneous communication on a same BUS. What I can do is to add 
more CAN buses. one for each of Application CUs to be able to receive 
more than one message at a time.

2- I need to control the access to the HMI so at each time HMI can 
process the request of one of the Application CUs.

   - I believe CSMA/CD which is designed in the Datalink Layer of CAN 
makes this possible for me and gives the HMI enough time to process task 
of each CU.

3- Here is the part which I'm really confused. I have to design it in a 
way that the answer from HMI goes to the corresponding Application CU.
   - CAN ID of each message is different and I can't get how a message 
can go to a wrong Control Unit. Maybe the problem is here that How does 
HMI understands if the driver pushes OK button , this OK belongs to 
which task (MP3 or navigation or ...)

Also I see a conflict in first and second task. make communication 
simultaneous but the HMI can process only one task at a time.

I have a question to this myself. How does the communication happens in 
vehicles at all? Is it like this that HMI sends a message every 2ms and 
inside is the status of the buttons on the HMI? Is it possible to embed 
status of all buttons in HMI in one message? If possible then how is it 
possible that all CUs read it and know which bit in the message belongs 
to their task. Or maybe the communication is totally different and each 
CU sends a CAN request frame to the HMI and HMI responds to that? or 
maybe some other methods are used?

Please Let me know where you think I'm making mistake and also your 


Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.