summaryrefslogtreecommitdiff
path: root/doc/protocols/ihu-cpu.txt
blob: 6cd9b74ea0b3baab93515ae163561c76803186da (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Protocol Definition between IHU and CPU
=======================================


Introduction
------------

The two controllers use SPI to communicate with each other. In 
addition to the 4 Lines needed for SPI there are 2 extra connections
between IHU and CPU. One is for the IHU to reset the CPU. Holding
this pin low prevents the CPU from running and therefore keeps
power consumption at a minimum, after a low to high transition the CPU
has to perform a hardware reset.
The second line is used by the CPU to inform the IHU that it wishes 
to communicate. After this line goes high the IHU has to start the 
communication by starting the SPI clock.


Frames
------

The following chart shows a single frame which is used for communication

Fieldlength:   1      1      1        LEN          1
            +------+------+------+--------------+------+
Name        | 0xAA | MSG  | LEN  |    DATA      | CS   |
            +------+------+------+--------------+------+

Every message frame starts with 0xAA followed by a message code and 
the length of the following data. The length field might be zero if the 
message doesn't need any additional data. The last byte of every frame
contains a checksum. It is calculated by XORing every byte of the message.
The minimum frame length is 4 Bytes and the maximum is 260 Bytes.
The bytes have to be sent LSB first. Multi byte fields have to be sent
in little endian format.


Messages
--------

Messages are seperated in request and responses. Requests use upper case 
letters and replies use lower case.

 'F' - Finish up (IHU -> CPU)
 ~~~~~~~~~~~~~~~

 Sent by the IHU.

 This command tells the CPU that the IHU is planning to shut down
 the CPU after ?? ms. The CPU has to write pending flash pages and put 
 payload hardware into deep sleep. After finishing everything up the CPU
 has to go into power down. 
 This command doesn't send any data.

 Expected response: 'f'
 

 'P' - Ping, Time and Power Budget (IHU -> CPU)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Thic command is sent by the IHU every minute (??) and contains the
 following data:

  2Bytes Power Budget (see Power Management for details)
  4Bytes Timestamp (seconds since EPOCH)

 Expected response: 'p'


 'T' - Get Time (CPU -> IHU)
 ~~~~~~~~~~~~~~

 This command requests the current time. 

 Expected response: 't'



 'f' - Ack to finish up (CPU -> IHU)
 ~~~~~~~~~~~~~~~~~~~~~~

 Sent as an aknowledge to a preceding 'F'.


 'p' - Ack to finish up (CPU -> IHU)
 ~~~~~~~~~~~~~~~~~~~~~~

 Sent as an aknowledge to a preceding 'P'.

 
 't' - Get Time (IHU -> CPU)
 ~~~~~~~~~~~~~~

 Sends the current timestamp after a preceding 'T' request.
 This message sends the 4 Byte timestamp (seconds since EPOCH)
 as data.