Paparazzi UAS
v5.12_stable-4-g9b43e9b
Paparazzi is a free software Unmanned Aircraft System.
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
VN100.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2010 ENAC
3
*
4
* This file is part of paparazzi.
5
*
6
* paparazzi is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2, or (at your option)
9
* any later version.
10
*
11
* paparazzi is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with paparazzi; see the file COPYING. If not, write to
18
* the Free Software Foundation, 59 Temple Place - Suite 330,
19
* Boston, MA 02111-1307, USA.
20
*
21
*/
22
28
#ifndef VN100_H
29
#define VN100_H
30
31
#include "
std.h
"
32
33
/* VN-100 Registers */
34
#define VN100_REG_MODEL 1
35
#define VN100_REG_HWREV 2
36
#define VN100_REG_SN 3
37
#define VN100_REG_FWVER 4
38
#define VN100_REG_SBAUD 5
39
#define VN100_REG_ADOR 6
40
#define VN100_REG_ADOF 7
41
#define VN100_REG_YPR 8
42
#define VN100_REG_QTN 9
43
#define VN100_REG_QTM 10
44
#define VN100_REG_QTA 11
45
#define VN100_REG_QTR 12
46
#define VN100_REG_QMA 13
47
#define VN100_REG_QAR 14
48
#define VN100_REG_QMR 15
49
#define VN100_REG_DCM 16
50
#define VN100_REG_MAG 17
51
#define VN100_REG_ACC 18
52
#define VN100_REG_GYR 19
53
#define VN100_REG_MAR 20
54
#define VN100_REG_REF 21
55
#define VN100_REG_SIG 22
56
#define VN100_REG_HSI 23
57
#define VN100_REG_ATP 24
58
#define VN100_REG_ACT 25
59
#define VN100_REG_RFR 26
60
#define VN100_REG_YMR 27
61
#define VN100_REG_ACG 28
62
63
/* Data Size */
64
#define VN100_REG_MODEL_SIZE 12
65
#define VN100_REG_HWREV_SIZE 4
66
#define VN100_REG_SN_SIZE 12
67
#define VN100_REG_FWVER_SIZE 4
68
#define VN100_REG_SBAUD_SIZE 4
69
#define VN100_REG_ADOR_SIZE 4
70
#define VN100_REG_ADOF_SIZE 4
71
#define VN100_REG_YPR_SIZE (3*4)
72
#define VN100_REG_QTN_SIZE (4*4)
73
#define VN100_REG_QTM_SIZE (7*4)
74
#define VN100_REG_QTA_SIZE (7*4)
75
#define VN100_REG_QTR_SIZE (7*4)
76
#define VN100_REG_QMA_SIZE (10*4)
77
#define VN100_REG_QAR_SIZE (10*4)
78
#define VN100_REG_QMR_SIZE (13*4)
79
#define VN100_REG_DCM_SIZE (9*4)
80
#define VN100_REG_MAG_SIZE (3*4)
81
#define VN100_REG_ACC_SIZE (3*4)
82
#define VN100_REG_GYR_SIZE (3*4)
83
#define VN100_REG_MAR_SIZE (9*4)
84
#define VN100_REG_REF_SIZE (6*4)
85
#define VN100_REG_SIG_SIZE (10*4)
86
#define VN100_REG_HSI_SIZE (12*4)
87
#define VN100_REG_ATP_SIZE (4*4)
88
#define VN100_REG_ACT_SIZE (12*4)
89
#define VN100_REG_RFR_SIZE (9*4)
90
#define VN100_REG_YMR_SIZE (12*4)
91
#define VN100_REG_ACG_SIZE 4
92
93
#define VN100_DataSizeOfReg(_r) (_r##_SIZE)
94
95
/* Command IDs */
96
#define VN100_CmdID_ReadRegister 0x01
97
#define VN100_CmdID_WriteRegister 0x02
98
#define VN100_CmdID_WriteSettings 0x03
99
#define VN100_CmdID_RestoreFactorySettings 0x04
100
#define VN100_CmdID_Tare 0x05
101
#define VN100_CmdID_Reset 0x06
102
103
/* System Error */
104
#define VN100_Error_None 0
105
#define VN100_Error_HardFaultException 1
106
#define VN100_Error_InputBufferOverflow 2
107
#define VN100_Error_InvalidChecksum 3
108
#define VN100_Error_InvalidCommand 4
109
#define VN100_Error_NotEnoughParameters 5
110
#define VN100_Error_TooManyParameters 6
111
#define VN100_Error_InvalidParameter 7
112
#define VN100_Error_InvalidRegister 8
113
#define VN100_Error_UnauthorizedAccess 9
114
#define VN100_Error_WatchdogReset 10
115
#define VN100_Error_OutputBufferOverflow 11
116
#define VN100_Error_InsufficientBandwidth 12
117
118
/* Asynchronous Data Output Register */
119
#define VN100_ADOR_OFF 0
120
#define VN100_ADOR_YPR 1
121
#define VN100_ADOR_QTN 2
122
#define VN100_ADOR_QTM 3
123
#define VN100_ADOR_QTA 4
124
#define VN100_ADOR_QTR 5
125
#define VN100_ADOR_QMA 6
126
#define VN100_ADOR_QAR 7
127
#define VN100_ADOR_QMR 8
128
#define VN100_ADOR_DCM 9
129
#define VN100_ADOR_MAG 10
130
#define VN100_ADOR_ACC 11
131
#define VN100_ADOR_GYR 12
132
#define VN100_ADOR_MAR 13
133
#define VN100_ADOR_YMR 14
134
#define VN100_ADOR_RAB 251
135
#define VN100_ADOR_RAW 252
136
#define VN100_ADOR_CMV 253
137
#define VN100_ADOR_STV 254
138
#define VN100_ADOR_COV 255
139
140
/* Asynchronous Data Ouput Rate Register */
141
#define VN100_ADOF_1HZ 1
142
#define VN100_ADOF_2HZ 2
143
#define VN100_ADOF_4HZ 4
144
#define VN100_ADOF_5HZ 5
145
#define VN100_ADOF_10HZ 10
146
#define VN100_ADOF_20HZ 20
147
#define VN100_ADOF_25HZ 25
148
#define VN100_ADOF_40HZ 40
149
#define VN100_ADOF_50HZ 50
150
#define VN100_ADOF_100HZ 100
151
#define VN100_ADOF_200HZ 200
152
153
/* Serial Baud Rate Register */
154
#define VN100_Baud_9600 9600
155
#define VN100_Baud_19200 19200
156
#define VN100_Baud_38400 38400
157
#define VN100_Baud_57600 57600
158
#define VN100_Baud_115200 115200
159
#define VN100_Baud_128000 128000
160
#define VN100_Baud_230400 230400
161
#define VN100_Baud_460800 460800
162
#define VN100_Baud_921600 921600
163
164
/* Accelerometer Gain Type */
165
#define VN100_AccGain_2G 0
166
#define VN100_AccGain_6G 1
167
168
/* 32-bit Parameter Type */
169
typedef
union
{
170
uint32_t
UInt
;
171
float
Float
;
172
}
VN100_Param
;
173
174
/* SPI Buffer size */
175
#define VN100_SPI_BUFFER_SIZE 48
176
177
/* SPI Request Packet */
178
typedef
struct
{
179
uint8_t
CmdID
;
180
uint8_t
RegID
;
181
uint8_t
ZeroByte1
;
182
uint8_t
ZeroByte2
;
183
VN100_Param
Data[
VN100_SPI_BUFFER_SIZE
];
184
}
VN100_Req_Packet
;
185
186
/* SPI Response Packet */
187
typedef
struct
{
188
uint8_t
ZeroByte
;
189
uint8_t
CmdID
;
190
uint8_t
RegID
;
191
uint8_t
ErrID
;
192
VN100_Param
Data[
VN100_SPI_BUFFER_SIZE
];
193
}
VN100_Res_Packet
;
194
195
#define VN100_Packet_SetBaud(_b) { VN100_CmdID_WriteRegister, VN100_REG_SBAUD, 0, 0, { _b } }
196
#define VN100_Packet_SetADOR(_r) { VN100_CmdID_WriteRegister, VN100_REG_ADOR, 0, 0, { _r } }
197
#define VN100_Packet_SetaDOF(_f) { VN100_CmdID_WriteRegister, VN100_REG_ADOF, 0, 0, { _f } }
198
199
#define VN100_BytesOfWord(_w) { (uint8_t)(_w & 0xFF), (uint8_t)((_w & (0xFF<<8))>>8), (uint8_t)((_w & (0xFF<<16))>>16), (uint8_t)((_w & (0xFF<<24))>>24) }
200
#define VN100_WordOfBytes(_b) (((uint32_t)(_b[3])<<24)|((uint32_t)(_b[2])<<16)|((uint16_t)(_b[1])<<8)|(uint16_t)(_b[0]))
201
202
#endif
VN100_Res_Packet::ErrID
uint8_t ErrID
Definition:
VN100.h:191
VN100_SPI_BUFFER_SIZE
#define VN100_SPI_BUFFER_SIZE
Definition:
VN100.h:175
VN100_Res_Packet
Definition:
VN100.h:187
VN100_Param::UInt
uint32_t UInt
Definition:
VN100.h:170
VN100_Req_Packet
Definition:
VN100.h:178
uint32_t
unsigned long uint32_t
Definition:
types.h:18
VN100_Req_Packet::ZeroByte2
uint8_t ZeroByte2
Definition:
VN100.h:182
VN100_Req_Packet::CmdID
uint8_t CmdID
Definition:
VN100.h:179
std.h
VN100_Req_Packet::ZeroByte1
uint8_t ZeroByte1
Definition:
VN100.h:181
uint8_t
unsigned char uint8_t
Definition:
types.h:14
VN100_Res_Packet::RegID
uint8_t RegID
Definition:
VN100.h:190
VN100_Param
Definition:
VN100.h:169
VN100_Param::Float
float Float
Definition:
VN100.h:171
VN100_Res_Packet::ZeroByte
uint8_t ZeroByte
Definition:
VN100.h:188
VN100_Res_Packet::CmdID
uint8_t CmdID
Definition:
VN100.h:189
VN100_Req_Packet::RegID
uint8_t RegID
Definition:
VN100.h:180
sw
airborne
modules
ins
VN100.h
Generated on Sat Feb 9 2019 06:43:58 for Paparazzi UAS by
1.8.8