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_USB_PULLUP 1
71 #define AO_USB_PULLUP_PORT (&stm_gpioa)
72 #define AO_USB_PULLUP_PIN 10
74 #define HAS_SPI_1 1 /* NHD-C12864LZ LCD Module */
75 #define SPI_1_PA5_PA6_PA7 1
76 #define SPI_1_PA6_DISABLE 1
77 #define SPI_1_MODE_OUTPUT STM_GPIO_CR_MODE_OUTPUT_10MHZ
78 #define SPI_1_PB3_PB4_PB5 0
79 #define SPI_1_PE13_PE14_PE15 0
81 #define HAS_SPI_2 1 /* CC1200 */
82 #define SPI_2_PB13_PB14_PB15 1
83 #define SPI_2_PD1_PD3_PD4 0
84 #define SPI_2_GPIO (&stm_gpiod)
88 #define SPI_2_MODE_OUTPUT STM_GPIO_CR_MODE_OUTPUT_10MHZ
94 #define PACKET_HAS_SLAVE 0
95 #define PACKET_HAS_MASTER 0
97 #define FAST_TIMER_FREQ 10000 /* .1ms for debouncing */
100 #define AO_ST7565_CS_PORT (&stm_gpioc) /* pin 1 */
101 #define AO_ST7565_CS_PIN 4
102 #define AO_ST7565_RESET_PORT (&stm_gpioc) /* pin 2 */
103 #define AO_ST7565_RESET_PIN 5
104 #define AO_ST7565_A0_PORT (&stm_gpioa) /* pin 3 */
105 #define AO_ST7565_A0_PIN 3
106 #define AO_ST7565_SPI_BUS AO_SPI_1_PA5_PA6_PA7
107 #define AO_ST7565_WIDTH 128
108 #define AO_ST7565_HEIGHT 64
109 #define AO_ST7565_BIAS ST7565_LCD_BIAS_1_9
112 * Radio is a cc1200 connected via SPI
115 #define AO_RADIO_CAL_DEFAULT 5695733
117 #define AO_CC1200_SPI_CS_PORT (&stm_gpiob)
118 #define AO_CC1200_SPI_CS_PIN 8
119 #define AO_CC1200_SPI_BUS AO_SPI_2_PB13_PB14_PB15
120 #define AO_CC1200_SPI stm_spi2
122 #define AO_CC1200_INT_PORT (&stm_gpiob)
123 #define AO_CC1200_INT_PIN (9)
125 #define AO_CC1200_INT_GPIO 2
126 #define AO_CC1200_INT_GPIO_IOCFG CC1200_IOCFG2
128 #define LOW_LEVEL_DEBUG 0
132 #define AO_LED_RED AO_LED_0 /* PC7 */
133 #define LED_0_PORT (&stm_gpioc)
136 #define AO_LED_AMBER AO_LED_1 /* PC8 */
137 #define LED_1_PORT (&stm_gpioc)
140 #define AO_LED_GREEN AO_LED_2 /* PC9 */
141 #define LED_2_PORT (&stm_gpioc)
144 #define AO_LED_BOX AO_LED_3 /* PA9 */
145 #define LED_3_PORT (&stm_gpioa)
148 #define AO_LED_PAD AO_LED_4 /* PA15 */
149 #define LED_4_PORT (&stm_gpioa)
152 #define AO_LED_DRAG AO_LED_5 /* PC12 */
153 #define LED_5_PORT (&stm_gpioc)
156 #define AO_LED_CONTINUITY_7 AO_LED_6 /* PC13 */
157 #define LED_6_PORT (&stm_gpioc)
160 #define AO_LED_CONTINUITY_6 AO_LED_7 /* PC14 */
161 #define LED_7_PORT (&stm_gpioc)
164 #define AO_LED_CONTINUITY_5 AO_LED_8 /* PC15 */
165 #define LED_8_PORT (&stm_gpioc)
168 #define AO_LED_CONTINUITY_4 AO_LED_9 /* PC2 */
169 #define LED_9_PORT (&stm_gpioc)
172 #define AO_LED_CONTINUITY_3 AO_LED_10 /* PC3 */
173 #define LED_10_PORT (&stm_gpioc)
176 #define AO_LED_CONTINUITY_2 AO_LED_11 /* PA0 */
177 #define LED_11_PORT (&stm_gpioa)
180 #define AO_LED_CONTINUITY_1 AO_LED_12 /* PA1 */
181 #define LED_12_PORT (&stm_gpioa)
184 #define AO_LED_CONTINUITY_0 AO_LED_13 /* PB1 */
185 #define LED_13_PORT (&stm_gpiob)
188 #define AO_LED_CONTINUITY_NUM 8
190 #define AO_LED_REMOTE_ARM AO_LED_14 /* PB3 */
191 #define LED_14_PORT (&stm_gpiob)
194 #define AO_LED_FIRE AO_LED_15 /* PB0 */
195 #define LED_15_PORT (&stm_gpiob)
199 * Use event queue for input devices
208 #define AO_QUADRATURE_COUNT 1
209 #define AO_QUADRATURE_DEBOUNCE 0
210 #define AO_QUADRATURE_SINGLE_CODE 1
212 #define AO_QUADRATURE_0_PORT &stm_gpiob
213 #define AO_QUADRATURE_0_A 12
214 #define AO_QUADRATURE_0_B 11
216 #define AO_QUADRATURE_SELECT 10
222 #define AO_BUTTON_COUNT 9
223 #define AO_BUTTON_MODE AO_EXTI_MODE_PULL_UP
225 #define AO_BUTTON_DRAG_MODE 0
226 #define AO_BUTTON_0_PORT &stm_gpioc
227 #define AO_BUTTON_0 1
229 #define AO_BUTTON_DRAG_SELECT 1
230 #define AO_BUTTON_1_PORT &stm_gpioc
231 #define AO_BUTTON_1 0
233 #define AO_BUTTON_SPARE1 2
234 #define AO_BUTTON_2_PORT &stm_gpiob
235 #define AO_BUTTON_2 4
237 #define AO_BUTTON_SPARE2 3
238 #define AO_BUTTON_3_PORT &stm_gpiob
239 #define AO_BUTTON_3 5
241 #define AO_BUTTON_SPARE3 4
242 #define AO_BUTTON_4_PORT &stm_gpiob
243 #define AO_BUTTON_4 6
245 #define AO_BUTTON_ARM 5
246 #define AO_BUTTON_5_PORT &stm_gpioa
247 #define AO_BUTTON_5 8
249 #define AO_BUTTON_FIRE 6
250 #define AO_BUTTON_6_PORT &stm_gpioa
251 #define AO_BUTTON_6 4
253 #define AO_BUTTON_SPARE4 7
254 #define AO_BUTTON_7_PORT &stm_gpiob
255 #define AO_BUTTON_7 7
257 #define AO_BUTTON_ENCODER_SELECT 8
258 #define AO_BUTTON_8_PORT &stm_gpiob
259 #define AO_BUTTON_8 10
267 #define AO_ADC_DUMP(p) \
268 printf("batt: %5d\n", (p)->v_batt)
270 #define HAS_ADC_SINGLE 1
271 #define HAS_ADC_TEMP 0
272 #define HAS_BATTERY_REPORT 1
274 #define AO_ADC_V_BATT 0
275 #define AO_ADC_V_BATT_PORT (&stm_gpioa)
276 #define AO_ADC_V_BATT_PIN 2
278 #define AO_ADC_PIN0_PORT AO_ADC_V_BATT_PORT
279 #define AO_ADC_PIN0_PIN AO_ADC_V_BATT_PIN
281 #define AO_ADC_SQ1 AO_ADC_V_BATT
286 * Voltage divider on ADC battery sampler
288 #define AO_BATTERY_DIV_PLUS 15 /* 15k */
289 #define AO_BATTERY_DIV_MINUS 27 /* 27k */
292 * ADC reference in decivolts
294 #define AO_ADC_REFERENCE_DV 33
296 #define AO_LCO_SEARCH_API
298 #endif /* _AO_PINS_H_ */