2 * Copyright © 2012 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25 #define AO_HSE_BYPASS 0
27 #define AO_SYSCLK 72000000
28 #define AO_HCLK 72000000
29 #define AO_APB1CLK 36000000
30 #define AO_APB2CLK 72000000
31 #define AO_ADCCLK 12000000
33 /* PLLMUL is 9, PLLXTPRE (pre divider) is 2, so the
34 * overall PLLCLK is 16 * 9/2 = 72MHz (used as SYSCLK)
36 * HCLK is SYSCLK / 1 (HPRE_DIV) = 72MHz (72MHz max)
37 * USB is PLLCLK / 1.5 (USBPRE)= 48MHz (must be 48MHz)
38 * APB2 is HCLK / 1 (PPRE2_DIV) = 72MHz (72MHz max)
39 * APB1 is HCLK / 2 (PPRE1_DIV) = 36MHz (36MHz max)
40 * ADC is APB2 / 6 (ADCPRE) = 12MHz (14MHz max)
43 #define AO_RCC_CFGR_USBPRE STM_RCC_CFGR_USBPRE_1_5
44 #define AO_RCC_CFGR_PLLMUL STM_RCC_CFGR_PLLMUL_9
45 #define AO_RCC_CFGR_PLLXTPRE STM_RCC_CFGR_PLLXTPRE_2
46 #define AO_RCC_CFGR_PPRE2_DIV STM_RCC_CFGR_PPRE2_DIV_1
47 #define AO_RCC_CFGR_PPRE1_DIV STM_RCC_CFGR_PPRE1_DIV_2
48 #define AO_RCC_CFGR_HPRE_DIV STM_RCC_CFGR_HPRE_DIV_1
49 #define AO_RCC_CFGR_ADCPRE STM_RCC_CFGR_ADCPRE_6
52 #define AO_CC1200_FOSC 40000000
55 #define USE_INTERNAL_FLASH 1
56 #define USE_EEPROM_CONFIG 1
57 #define USE_STORAGE_CONFIG 0
60 #define BEEPER_TIMER 3
61 #define BEEPER_CHANNEL 1
62 #define BEEPER_PORT (&stm_gpioc)
65 #define HAS_RADIO_RATE 1
66 #define HAS_TELEMETRY 0
68 #define HAS_STATIC_TEST 0
70 #define HAS_SPI_1 1 /* NHD-C12864LZ LCD Module */
71 #define SPI_1_PA5_PA6_PA7 1
72 #define SPI_1_MODE_OUTPUT STM_GPIO_CR_MODE_OUTPUT_10MHZ
73 #define SPI_1_PB3_PB4_PB5 0
74 #define SPI_1_PE13_PE14_PE15 0
76 #define HAS_SPI_2 1 /* CC1200 */
77 #define SPI_2_PB13_PB14_PB15 1
78 #define SPI_2_PD1_PD3_PD4 0
79 #define SPI_2_GPIO (&stm_gpiod)
83 #define SPI_2_MODE_OUTPUT STM_GPIO_CR_MODE_OUTPUT_10MHZ
89 #define PACKET_HAS_SLAVE 0
90 #define PACKET_HAS_MASTER 0
92 #define FAST_TIMER_FREQ 10000 /* .1ms for debouncing */
95 #define AO_ST7565_CS_PORT (&stm_gpioc) /* pin 1 */
96 #define AO_ST7565_CS_PIN 4
97 #define AO_ST7565_RESET_PORT (&stm_gpioc) /* pin 2 */
98 #define AO_ST7565_RESET_PIN 5
99 #define AO_ST7565_A0_PORT (&stm_gpioa) /* pin 3 */
100 #define AO_ST7565_A0_PIN 3
101 #define AO_ST7565_SPI_BUS AO_SPI_1_PA5_PA6_PA7
102 #define AO_ST7565_WIDTH 128
103 #define AO_ST7565_HEIGHT 64
104 #define AO_ST7565_BIAS ST7565_LCD_BIAS_1_9
107 * Radio is a cc1200 connected via SPI
110 #define AO_RADIO_CAL_DEFAULT 5695733
112 #define AO_CC1200_SPI_CS_PORT (&stm_gpiob)
113 #define AO_CC1200_SPI_CS_PIN 8
114 #define AO_CC1200_SPI_BUS AO_SPI_2_PB13_PB14_PB15
115 #define AO_CC1200_SPI stm_spi2
117 #define AO_CC1200_INT_PORT (&stm_gpiob)
118 #define AO_CC1200_INT_PIN (9)
120 #define AO_CC1200_INT_GPIO 2
121 #define AO_CC1200_INT_GPIO_IOCFG CC1200_IOCFG2
123 #define LOW_LEVEL_DEBUG 0
127 #define AO_LED_RED AO_LED_0 /* PC7 */
128 #define LED_0_PORT (&stm_gpioc)
131 #define AO_LED_AMBER AO_LED_1 /* PC8 */
132 #define LED_1_PORT (&stm_gpioc)
135 #define AO_LED_GREEN AO_LED_2 /* PC9 */
136 #define LED_2_PORT (&stm_gpioc)
139 #define AO_LED_BOX AO_LED_3 /* PA10 */
140 #define LED_3_PORT (&stm_gpioa)
143 #define AO_LED_PAD AO_LED_4 /* PA15 */
144 #define LED_4_PORT (&stm_gpioa)
147 #define AO_LED_DRAG AO_LED_5 /* PC12 */
148 #define LED_5_PORT (&stm_gpioc)
151 #define AO_LED_CONTINUITY_7 AO_LED_6 /* PC13 */
152 #define LED_6_PORT (&stm_gpioc)
155 #define AO_LED_CONTINUITY_6 AO_LED_7 /* PC14 */
156 #define LED_7_PORT (&stm_gpioc)
159 #define AO_LED_CONTINUITY_5 AO_LED_8 /* PC15 */
160 #define LED_8_PORT (&stm_gpioc)
163 #define AO_LED_CONTINUITY_4 AO_LED_9 /* PC2 */
164 #define LED_9_PORT (&stm_gpioc)
167 #define AO_LED_CONTINUITY_3 AO_LED_10 /* PC3 */
168 #define LED_10_PORT (&stm_gpioc)
171 #define AO_LED_CONTINUITY_2 AO_LED_11 /* PA0 */
172 #define LED_11_PORT (&stm_gpioa)
175 #define AO_LED_CONTINUITY_1 AO_LED_12 /* PA1 */
176 #define LED_12_PORT (&stm_gpioa)
179 #define AO_LED_CONTINUITY_0 AO_LED_13 /* PB1 */
180 #define LED_13_PORT (&stm_gpiob)
183 #define AO_LED_CONTINUITY_NUM 8
185 #define AO_LED_REMOTE_ARM AO_LED_14 /* PB3 */
186 #define LED_14_PORT (&stm_gpiob)
189 #define AO_LED_FIRE AO_LED_15 /* PB0 */
190 #define LED_15_PORT (&stm_gpiob)
194 * Use event queue for input devices
203 #define AO_QUADRATURE_COUNT 1
204 #define AO_QUADRATURE_DEBOUNCE 0
205 #define AO_QUADRATURE_SINGLE_CODE 1
207 #define AO_QUADRATURE_0_PORT &stm_gpiob
208 #define AO_QUADRATURE_0_A 12
209 #define AO_QUADRATURE_0_B 11
211 #define AO_QUADRATURE_SELECT 10
217 #define AO_BUTTON_COUNT 9
218 #define AO_BUTTON_MODE AO_EXTI_MODE_PULL_UP
220 #define AO_BUTTON_DRAG_MODE 0
221 #define AO_BUTTON_0_PORT &stm_gpioc
222 #define AO_BUTTON_0 1
224 #define AO_BUTTON_DRAG_SELECT 1
225 #define AO_BUTTON_1_PORT &stm_gpioc
226 #define AO_BUTTON_1 0
228 #define AO_BUTTON_SPARE1 2
229 #define AO_BUTTON_2_PORT &stm_gpiob
230 #define AO_BUTTON_2 4
232 #define AO_BUTTON_SPARE2 3
233 #define AO_BUTTON_3_PORT &stm_gpiob
234 #define AO_BUTTON_3 5
236 #define AO_BUTTON_SPARE3 4
237 #define AO_BUTTON_4_PORT &stm_gpiob
238 #define AO_BUTTON_4 6
240 #define AO_BUTTON_ARM 5
241 #define AO_BUTTON_5_PORT &stm_gpioa
242 #define AO_BUTTON_5 8
244 #define AO_BUTTON_FIRE 6
245 #define AO_BUTTON_6_PORT &stm_gpioa
246 #define AO_BUTTON_6 4
248 #define AO_BUTTON_SPARE4 7
249 #define AO_BUTTON_7_PORT &stm_gpiob
250 #define AO_BUTTON_7 7
252 #define AO_BUTTON_ENCODER_SELECT 8
253 #define AO_BUTTON_8_PORT &stm_gpiob
254 #define AO_BUTTON_8 10
262 #define AO_ADC_DUMP(p) \
263 printf("batt: %5d\n", (p)->v_batt)
265 #define HAS_ADC_SINGLE 1
266 #define HAS_ADC_TEMP 0
267 #define HAS_BATTERY_REPORT 1
269 #define AO_ADC_V_BATT 0
270 #define AO_ADC_V_BATT_PORT (&stm_gpioa)
271 #define AO_ADC_V_BATT_PIN 2
273 #define AO_ADC_PIN0_PORT AO_ADC_V_BATT_PORT
274 #define AO_ADC_PIN0_PIN AO_ADC_V_BATT_PIN
276 #define AO_ADC_SQ1 AO_ADC_V_BATT
281 * Voltage divider on ADC battery sampler
283 #define AO_BATTERY_DIV_PLUS 15 /* 15k */
284 #define AO_BATTERY_DIV_MINUS 27 /* 27k */
287 * ADC reference in decivolts
289 #define AO_ADC_REFERENCE_DV 33
291 #endif /* _AO_PINS_H_ */