1.. zephyr:board:: robokit1
2
3Overview
4********
5
6The TDK RoboKit1 is a development board for use primarily with ROS2 and provides a large
7number of small ground robotics useful sensors including chirp sensors for time of flight
8(e.g. ultrasonic obstacle detection).
9
10It pairs a 300MHz Cortex-M7 ATSAME70Q21 with an array of TDK sensors and pin headers useful for robotics.
11
12Hardware
13********
14
15- ATSAME70Q21 ARM Cortex-M7 Processor
16- 12 MHz crystal oscillator (Pres)
17- 32.768 kHz crystal oscillator
18- Micro-AB USB device
19- Micro-AB USB debug (Microchip EDBG) interface supporting CMSIS-DAP, Virtual COM Port and Data
20- JTAG interface connector
21- One reset pushbutton
22- One red user LED
23- TDK ICM 42688-P 6-Axis 32KHz IMU
24- TDK ICP-10111 Pressure Sensor
25- TDK NTC Thermistor for Temperature
26- AKM AK09918C Magnetometer
27- 2 TDK HVCi-4223 Cortex-M3 Dedicated Motor Controller
28- 3 TDK ICS-43434 Stereo Microphones
29- Connector for Industrial Dual IMU (TDK IIM-46230)
30- TDK CH101 Ultrasonic Range Sensor Array (9 Connectors, comes with 3)
31
32Supported Features
33==================
34
35The TDK RoboKit1 board supports the following hardware
36features:
37
38.. list-table::
39   : header-rows: 1
40
41   * - Peripheral
42     - Kconfig option
43     - Devicetree compatible
44   * - GPIO
45     - :kconfig:option:`CONFIG_GPIO_SAM`
46     - :dtcompatible:`atmel,sam-gpio`
47   * - USART
48     - :kconfig:option:`CONFIG_USART_SAM`
49     - :dtcompatible:`atmel,sam-usart`
50   * - UART
51     - :kconfig:option:`CONFIG_UART_SAM`
52     - :dtcompatible:`atmel,sam-uart`
53   * - SPI
54     - :kconfig:option:`CONFIG_SPI_SAM`
55     - :dtcompatible:`atmel,sam-spi`
56   * - I2C
57     - :kconfig:option:`CONFIG_I2C_SAM_TWIHS`
58     - :dtcompatible:`atmel,sam-i2c-twihs`
59   * - I2S
60     - :kconfig:option:`CONFIG_I2S_SAM_SSC`
61     - :dtcompatible:`atmel,sam-ssc`
62   * - ADC
63     - :kconfig:option:`CONFIG_ADC_SAM_AFEC`
64     - :dtcompatible:`atmel,sam-afec`
65   * - DAC
66     - :kconfig:option:`CONFIG_DAC_SAM`
67     - :dtcompatible:`atmel,sam-dac`
68   * - PWM
69     - :kconfig:option:`CONFIG_PWM_SAM`
70     - :dtcompatible:`atmel,sam-pwm`
71   * - CAN
72     - :kconfig:option:`CONFIG_CAN_SAM`
73     - :dtcompatible:`atmel,sam-can`
74   * - USB
75     - :kconfig:option:`CONFIG_USB_DC_SAM_USBHS`
76     - :dtcompatible:`atmel,sam-usbhs`
77   * - WATCHDOG
78     - :kconfig:option:`CONFIG_WDT_SAM`
79     - :dtcompatible:`atmel,sam-watchdog`
80   * - NVIC
81     - N/A
82     - :dtcompatible:`arm,v7m-nvic`
83   * - SYSTICK
84     - N/A
85     - N/A
86   * - COUNTER
87     - :kconfig:option:`CONFIG_COUNTER_SAM_TC`
88     - :dtcompatible:`atmel,sam-tc`
89   * - DMA
90     - :kconfig:option:`CONFIG_DMA_SAM_XDMAC`
91     - :dtcompatible:`atmel,sam-xdmac`
92   * - ENTROPY
93     - :kconfig:option:`CONFIG_ENTROPY_SAM_RNG`
94     - :dtcompatible:`atmel,sam-trng`
95   * - HWINFO (reset cause)
96     - :kconfig:option:`CONFIG_HWINFO_SAM_RSTC`
97     - :dtcompatible:`atmel,sam-rstc`
98   * - HWINFO (device id)
99     - :kconfig:option:`CONFIG_HWINFO_SAM`
100     - N/A
101
102The default configuration can be found in the Kconfig
103:zephyr_file:`boards/tdk/robokit1/robokit1_defconfig`.
104
105Connections and IOs
106===================
107
108The TDK RoboKit Hardware Guide has detailed information about board connections.
109
110System Clock
111============
112
113The SAM E70 MCU is configured to use the 12 MHz external oscillator on the board
114with the on-chip PLL to generate a 300 MHz system clock.
115
116Serial Port
117===========
118
119The ATSAME70Q21 MCU has five UARTs and three USARTs. One of the UARTs is
120configured for the console and is available as a Virtual COM Port via the USB2 connector.
121
122Programming and Debugging
123*************************
124
125Flashing the Zephyr project onto SAM E70 MCU requires the `OpenOCD tool`_.
126Both west flash and west debug commands should correctly work with both USB0 and USB1
127connected and the board powered.
128
129Flashing
130========
131
132#. Run your favorite terminal program to listen for output. Under Linux the
133   terminal should be :code:`/dev/ttyACM0`. For example:
134
135   .. code-block:: console
136
137      $ minicom -D /dev/ttyUSB0 -o
138
139   The -o option tells minicom not to send the modem initialization
140   string. Connection should be configured as follows:
141
142   - Speed: 115200
143   - Data: 8 bits
144   - Parity: None
145   - Stop bits: 1
146
147#. Connect the TDK RoboKit1 board to your host computer using the
148   USB debug port (USB1), USB2 for a serial console, and remaining micro USB for
149   power. Then build and flash the :zephyr:code-sample:`hello_world` application.
150
151   .. zephyr-app-commands::
152      :zephyr-app: samples/hello_world
153      :board: robokit1
154      :goals: build flash
155
156   You should see "Hello World! robokit1" in your terminal.
157
158Debugging
159=========
160
161You can debug an application in the usual way.  Here is an example for the
162:zephyr:code-sample:`hello_world` application.
163
164.. zephyr-app-commands::
165   :zephyr-app: samples/hello_world
166   :board: robokit1
167   :maybe-skip-config:
168   :goals: debug
169
170References
171**********
172
173TDK RoboKit1 Product Page:
174    https://invensense.tdk.com/products/robokit1-dk/
175
176.. _OpenOCD tool:
177    http://openocd.org/
178