board.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
24 #include <stdint.h>
25 
26 /* RIOT includes */
27 #include <motor_driver.h>
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
37 void _native_LED_GREEN_OFF(void);
38 void _native_LED_GREEN_ON(void);
39 void _native_LED_GREEN_TOGGLE(void);
40 void _native_LED_RED_OFF(void);
41 void _native_LED_RED_ON(void);
42 void _native_LED_RED_TOGGLE(void);
43 
44 #define LED0_ON (_native_LED_RED_ON())
45 #define LED0_OFF (_native_LED_RED_OFF())
46 #define LED0_TOGGLE (_native_LED_RED_TOGGLE())
47 #define LED1_ON (_native_LED_GREEN_ON())
48 #define LED1_OFF (_native_LED_GREEN_OFF())
49 #define LED1_TOGGLE (_native_LED_GREEN_TOGGLE())
52 #if defined(MODULE_MTD) || DOXYGEN
57 #ifndef MTD_PAGE_SIZE
58 #if defined(MODULE_FATFS) || defined(MODULE_LWEXT4)
59 #define MTD_PAGE_SIZE (512)
60 #else
61 #define MTD_PAGE_SIZE (256)
62 #endif
63 #endif
64 #ifndef MTD_SECTOR_SIZE
65 #if defined(MODULE_FATFS) || defined(MODULE_LWEXT4)
66 #define MTD_SECTOR_SIZE (512)
67 #else
68 #define MTD_SECTOR_SIZE (4096)
69 #endif
70 #endif
71 #ifndef MTD_SECTOR_NUM
72 #if defined(MODULE_FATFS) || defined(MODULE_LWEXT4)
73 #define MTD_SECTOR_NUM (32768)
74 #else
75 #define MTD_SECTOR_NUM (2048)
76 #endif
77 #endif
80 #ifndef MTD_WRITE_SIZE
81 #define MTD_WRITE_SIZE (1)
82 #endif
83 #ifndef MTD_NATIVE_FILENAME
84 #define MTD_NATIVE_FILENAME "MEMORY.bin"
85 #endif
89 #define MTD_0 mtd_dev_get(0)
90 #endif
91 
96 #ifndef FS_NATIVE_DIR
97 #define FS_NATIVE_DIR "native"
98 #endif
101 #if defined(MODULE_SPIFFS) || DOXYGEN
106 /* SPIFFS config flags */
107 #ifndef SPIFFS_READ_ONLY
108 #define SPIFFS_READ_ONLY (0)
109 #endif
110 #ifndef SPIFFS_SINGLETON
111 #define SPIFFS_SINGLETON (0)
112 #endif
113 #ifndef SPIFFS_HAL_CALLBACK_EXTRA
114 #define SPIFFS_HAL_CALLBACK_EXTRA (1)
115 #endif
116 #ifndef SPIFFS_CACHE
117 #define SPIFFS_CACHE (1)
118 #endif
119 
120 #if SPIFFS_SINGLETON == 1
121 /* MTD config if singleton is used */
122 #ifndef SPIFFS_CFG_PHYS_SZ
123 #define SPIFFS_CFG_PHYS_SZ(ignore) (MTD_SECTOR_SIZE * MTD_SECTOR_NUM)
124 #endif
125 #ifndef SPIFFS_CFG_PHYS_ERASE_SZ
126 #define SPIFFS_CFG_PHYS_ERASE_SZ(ignore) (MTD_SECTOR_SIZE)
127 #endif
128 #ifndef SPIFFS_CFG_PHYS_ADDR
129 #define SPIFFS_CFG_PHYS_ADDR(ignore) (0)
130 #endif
131 #ifndef SPIFFS_CFG_LOG_PAGE_SZ
132 #define SPIFFS_CFG_LOG_PAGE_SZ(ignore) (MTD_PAGE_SIZE)
133 #endif
134 #ifndef SPIFFS_CFG_LOG_BLOCK_SZ
135 #define SPIFFS_CFG_LOG_BLOCK_SZ(ignore) (MTD_SECTOR_SIZE)
136 #endif
137 #endif
138 
139 #if SPIFFS_HAL_CALLBACK_EXTRA == 0
140 /* Default MTD device if no callback parameter */
141 #ifndef SPIFFS_MTD_DEV
142 #define SPIFFS_MTD_DEV (MTD_0)
143 #endif
144 #endif
146 #endif
147 
148 #if MODULE_PERIPH_QDEC
156 void native_motor_driver_qdec_simulation( \
157  const motor_driver_t motor_driver, uint8_t motor_id, \
158  int32_t pwm_duty_cycle);
159 
160 /* C++ standard do not support designated initializers */
161 #if !(defined __cplusplus) && (defined MODULE_PERIPH_QDEC)
162 
167 static const motor_driver_config_t motor_driver_config[] = {
168  {
169  .pwm_dev = 0,
170  .mode = MOTOR_DRIVER_1_DIR_BRAKE,
171  .mode_brake = MOTOR_BRAKE_LOW,
172  .pwm_mode = PWM_LEFT,
173  .pwm_frequency = 20000U,
174  .pwm_resolution = 1000U,
175  .nb_motors = 2,
176  .motors = {
177  {
178  .pwm_channel = 0,
179  .gpio_enable = GPIO_PIN(0, 0),
180  .gpio_dir0 = GPIO_PIN(0, 0),
181  .gpio_dir1_or_brake = GPIO_PIN(0, 0),
182  .gpio_dir_reverse = 0,
183  .gpio_enable_invert = 0,
184  .gpio_brake_invert = 0,
185  },
186  {
187  .pwm_channel = 1,
188  .gpio_enable = GPIO_PIN(0, 0),
189  .gpio_dir0 = GPIO_PIN(0, 0),
190  .gpio_dir1_or_brake = GPIO_PIN(0, 0),
191  .gpio_dir_reverse = 1,
192  .gpio_enable_invert = 0,
193  .gpio_brake_invert = 0,
194  },
195  },
196  .cb = native_motor_driver_qdec_simulation,
197  },
198 };
199 
200 #define MOTOR_DRIVER_NUMOF ARRAY_SIZE(motor_driver_config)
202 #endif
203 
208 #define CONFIG_ZTIMER_USEC_TYPE ZTIMER_TYPE_PERIPH_TIMER
209 #define CONFIG_ZTIMER_USEC_DEV TIMER_DEV(0)
210 /* on native, anything can happen... */
211 #define CONFIG_ZTIMER_USEC_MIN (64)
214 #endif /* __cplusplus */
215 
216 #ifdef __cplusplus
217 }
218 #endif
219 
#define GPIO_PIN(x, y)
Define a CPU specific GPIO pin generator macro.
Definition: periph_cpu.h:45
unsigned int motor_driver_t
Default motor driver type definition.
Definition: motor_driver.h:155
@ MOTOR_DRIVER_1_DIR_BRAKE
Single GPIO for direction, \ Single GPIO for BRAKE.
Definition: motor_driver.h:119
@ MOTOR_BRAKE_LOW
Low stage brake.
Definition: motor_driver.h:127
@ PWM_LEFT
left aligned
Definition: periph_conf.h:220
High-level driver for DC motors.
Describe DC motor driver with PWM device and motors array.
Definition: motor_driver.h:167
pwm_t pwm_dev
PWM device driving motors.
Definition: motor_driver.h:168