board.h
上传用户:xukun0987
上传日期:2022-07-16
资源大小:216k
文件大小:21k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /* ----------------------------------------------------------------------------
  2.  *         ATMEL Microcontroller Software Support 
  3.  * ----------------------------------------------------------------------------
  4.  * Copyright (c) 2008, Atmel Corporation
  5.  *
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions are met:
  10.  *
  11.  * - Redistributions of source code must retain the above copyright notice,
  12.  * this list of conditions and the disclaimer below.
  13.  *
  14.  * Atmel's name may not be used to endorse or promote products derived from
  15.  * this software without specific prior written permission.
  16.  *
  17.  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
  18.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  19.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
  20.  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
  21.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  22.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
  23.  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  24.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  25.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  26.  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27.  * ----------------------------------------------------------------------------
  28.  */
  29. //------------------------------------------------------------------------------
  30. /// dir
  31. /// !Purpose
  32. /// 
  33. /// Definition and functions for using AT91SAM7X-related features, such
  34. /// has PIO pins, memories, etc.
  35. /// 
  36. /// !Usage
  37. /// -# The code for booting the board is provided by board_cstartup.S and
  38. ///    board_lowlevel.c.
  39. /// -# For using board PIOs, board characteristics (clock, etc.) and external
  40. ///    components, see board.h.
  41. /// -# For manipulating memories (remapping, SDRAM, etc.), see board_memories.h.
  42. //------------------------------------------------------------------------------
  43.  
  44. //------------------------------------------------------------------------------
  45. /// unit
  46. /// !Purpose
  47. /// 
  48. /// Definition of AT91SAM7X-EK characteristics, AT91SAM7X-dependant PIOs and
  49. /// external components interfacing.
  50. /// 
  51. /// !Usage
  52. /// -# For operating frequency information, see "SAM7X-EK - Operating frequencies".
  53. /// -# For using portable PIO definitions, see "SAM7X-EK - PIO definitions".
  54. /// -# Several USB definitions are included here (see "SAM7X-EK - USB device").
  55. //------------------------------------------------------------------------------
  56. #ifndef BOARD_H 
  57. #define BOARD_H
  58. //------------------------------------------------------------------------------
  59. //         Headers
  60. //------------------------------------------------------------------------------
  61. #if defined(at91sam7x128)
  62.     #include "at91sam7x128/AT91SAM7X128.h"
  63. #elif defined(at91sam7x256)
  64.     #include "at91sam7x256/AT91SAM7X256.h"
  65. #elif defined(at91sam7x512)
  66.     #include "at91sam7x512/AT91SAM7X512.h"
  67. #else
  68.     #error Board does not support the specified chip.
  69. #endif
  70. //------------------------------------------------------------------------------
  71. //         Definitions
  72. //------------------------------------------------------------------------------
  73. //------------------------------------------------------------------------------
  74. /// page "SAM7X-EK - Board Description"
  75. /// This page lists several definition related to the board description
  76. ///
  77. /// !Definitions
  78. /// - BOARD_NAME
  79. /// Name of the board.
  80. #define BOARD_NAME "AT91SAM7X-EK"
  81. /// Board definition.
  82. #define at91sam7xek
  83. /// Family definition.
  84. #define at91sam7x
  85. //------------------------------------------------------------------------------
  86. //------------------------------------------------------------------------------
  87. /// page "SAM7X-EK - Operating frequencies"
  88. /// This page lists several definition related to the board operating frequency
  89. /// (when using the initialization done by board_lowlevel.c).
  90. /// 
  91. /// !Definitions
  92. /// - BOARD_MAINOSC
  93. /// - BOARD_MCK
  94. /// Frequency of the board main oscillator.
  95. #define BOARD_MAINOSC           18432000
  96. /// Master clock frequency (when using board_lowlevel.c).
  97. #define BOARD_MCK               48000000
  98. //------------------------------------------------------------------------------
  99. //------------------------------------------------------------------------------
  100. // ADC
  101. //------------------------------------------------------------------------------
  102. /// ADC clock frequency, at 10-bit resolution (in Hz)
  103. #define ADC_MAX_CK_10BIT         5000000
  104. /// ADC clock frequency, at 8-bit resolution (in Hz)
  105. #define ADC_MAX_CK_8BIT          8000000
  106. /// Startup time max, return from Idle mode (in 祍)
  107. #define ADC_STARTUP_TIME_MAX       20
  108. /// Track and hold Acquisition Time min (in ns)
  109. #define ADC_TRACK_HOLD_TIME_MIN   600
  110. //------------------------------------------------------------------------------
  111. /// page "SAM7X-EK - USB device"
  112. /// This page lists constants describing several characteristics (controller
  113. /// type, D+ pull-up type, etc.) of the USB device controller of the chip/board.
  114. /// 
  115. /// !Constants
  116. /// - BOARD_USB_UDP
  117. /// - BOARD_USB_PULLUP_ALWAYSON
  118. /// - BOARD_USB_NUMENDPOINTS
  119. /// - BOARD_USB_ENDPOINTS_MAXPACKETSIZE
  120. /// - BOARD_USB_ENDPOINTS_BANKS
  121. /// - BOARD_USB_BMATTRIBUTES
  122. /// Chip has a UDP controller.
  123. #define BOARD_USB_UDP
  124. /// Indicates the D+ pull-up is always connected.
  125. #define BOARD_USB_PULLUP_ALWAYSON
  126. /// Number of endpoints in the USB controller.
  127. #define BOARD_USB_NUMENDPOINTS                  6
  128. /// Returns the maximum packet size of the given endpoint.
  129. #define BOARD_USB_ENDPOINTS_MAXPACKETSIZE(i)    ((((i) == 4) || ((i) == 5)) ? 256 : (((i) == 0) ? 8 : 64))
  130. /// Returns the number of FIFO banks for the given endpoint.
  131. #define BOARD_USB_ENDPOINTS_BANKS(i)            ((((i) == 0) || ((i) == 3)) ? 1 : 2)
  132. /// USB attributes configuration descriptor (bus or self powered, remote wakeup)
  133. #define BOARD_USB_BMATTRIBUTES                  USBConfigurationDescriptor_BUSPOWERED_NORWAKEUP
  134. //------------------------------------------------------------------------------
  135. //------------------------------------------------------------------------------
  136. /// page "SAM7X-EK - PIO definitions"
  137. /// This pages lists all the pio definitions contained in board.h. The constants
  138. /// are named using the following convention: PIN_* for a constant which defines
  139. /// a single Pin instance (but may include several PIOs sharing the same
  140. /// controller), and PINS_* for a list of Pin instances.
  141. ///
  142. /// !DBGU
  143. /// - PINS_DBGU
  144. /// 
  145. /// !LEDs
  146. /// - PIN_LED_0
  147. /// - PIN_LED_1
  148. /// - PIN_LED_2
  149. /// - PIN_LED_3
  150. /// - PINS_LEDS
  151. /// 
  152. /// !Push buttons
  153. /// - PIN_PUSHBUTTON_1
  154. /// - PIN_PUSHBUTTON_2
  155. /// - PIN_PUSHBUTTON_3
  156. /// - PIN_PUSHBUTTON_4
  157. /// - PINS_PUSHBUTTONS
  158. /// - PUSHBUTTON_BP1
  159. /// - PUSHBUTTON_BP2
  160. /// - PUSHBUTTON_BP3
  161. /// - PUSHBUTTON_BP4
  162. /// - LED_DS1
  163. /// - LED_DS2
  164. /// - LED_DS3
  165. /// - LED_DS4
  166. ///
  167. /// !Joystick buttons
  168. /// - PIN_JOYSTICK_UP
  169. /// - PIN_JOYSTICK_DOWN
  170. /// - PIN_JOYSTICK_LEFT
  171. /// - PIN_JOYSTICK_RIGHT
  172. /// - PIN_JOYSTICK_LCLIC, PIN_JOYSTICK_PUSH
  173. /// - PINS_JOYSTICK_MOVE, PINS_JOYSTICK_CLIC, PINS_JOYSTICK
  174. /// - JOYSTICK_UP
  175. /// - JOYSTICK_DOWN
  176. /// - JOYSTICK_LEFT
  177. /// - JOYSTICK_RIGHT
  178. /// - JOYSTICK_LCLIC, JOYSTICK_PUSH
  179. /// 
  180. /// !USART0
  181. /// - PIN_USART0_RXD
  182. /// - PIN_USART0_TXD
  183. /// - PIN_USART0_SCK
  184. /// 
  185. /// !SPI0
  186. /// - PIN_SPI0_MISO
  187. /// - PIN_SPI0_MOSI
  188. /// - PIN_SPI0_SPCK
  189. /// - PINS_SPI0
  190. /// - PIN_SPI0_NPCS0
  191. /// - PIN_SPI0_NPCS1
  192. ///
  193. /// !PWMC
  194. /// - PIN_PWMC_PWM0
  195. /// - PIN_PWMC_PWM1
  196. /// - PIN_PWMC_PWM2
  197. /// - PIN_PWMC_PWM3
  198. /// - PIN_PWM_LED0
  199. /// - PIN_PWM_LED1
  200. /// - CHANNEL_PWM_LED0
  201. /// - CHANNEL_PWM_LED1
  202. /// 
  203. /// !ADC
  204. /// - PIN_ADC_ADC0
  205. /// - PIN_ADC_ADC1
  206. /// - PIN_ADC_ADC2
  207. /// - PIN_ADC_ADC3
  208. /// - PINS_ADC
  209. ///
  210. /// !TWI
  211. /// - PINS_TWI
  212. ///
  213. /// !CAN
  214. /// - PIN_CAN_TRANSCEIVER_RS
  215. /// - PINS_CAN_TRANSCEIVER_TXD
  216. /// - PINS_CAN_TRANSCEIVER_RXD
  217. /// List of all DBGU pin definitions.
  218. #define PINS_DBGU  {0x18000000, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  219. /// LED #0 pin definition.
  220. #define PIN_LED_0  {1 << 19, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  221. /// LED #1 pin definition.
  222. #define PIN_LED_1  {1 << 20, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  223. /// LED #2 pin definition.
  224. #define PIN_LED_2  {1 << 21, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  225. /// LED #3 pin definition.
  226. #define PIN_LED_3  {1 << 22, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  227. /// List of all LEDs pin definitions.
  228. #define PINS_LEDS  PIN_LED_0, PIN_LED_1, PIN_LED_2, PIN_LED_3
  229. /// LED DS1 index.
  230. #define LED_DS1      0
  231. /// LED DS2 index.
  232. #define LED_DS2      1
  233. /// LED DS3 index.
  234. #define LED_DS3      2
  235. /// LED DS3 index.
  236. #define LED_DS4      3
  237. /// Push button #0 definition.
  238. #define PIN_PUSHBUTTON_1    {1 << 23, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEGLITCH | PIO_PULLUP}
  239. /// Push button #1 definition.
  240. #define PIN_PUSHBUTTON_2    {1 << 24, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEGLITCH | PIO_PULLUP}
  241. /// Push button #2 definition
  242. #define PIN_PUSHBUTTON_3    {1 << 21, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEGLITCH | PIO_PULLUP}
  243. /// Push button #3 definition.
  244. #define PIN_PUSHBUTTON_4    {1 << 22, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEGLITCH | PIO_PULLUP}
  245. /// List of all push button definitions.
  246. #define PINS_PUSHBUTTONS    PIN_PUSHBUTTON_1, PIN_PUSHBUTTON_2, PIN_PUSHBUTTON_3, PIN_PUSHBUTTON_4
  247. /// Push button #1 index.
  248. #define PUSHBUTTON_BP1   0
  249. /// Push button #2 index.
  250. #define PUSHBUTTON_BP2   1
  251. /// Push button #3 index.
  252. #define PUSHBUTTON_BP3   2
  253. /// Push button #4 index.
  254. #define PUSHBUTTON_BP4   3
  255. // Joystick definition.
  256. /// Joystick UP.
  257. #define PIN_JOYSTICK_UP    {1 << 21, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
  258. /// Joystick DOWN.
  259. #define PIN_JOYSTICK_DOWN  {1 << 22, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
  260. /// Joystick LEFT.
  261. #define PIN_JOYSTICK_LEFT  {1 << 23, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
  262. /// Joystick RIGHT.
  263. #define PIN_JOYSTICK_RIGHT {1 << 24, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
  264. /// Joystick LEFT clic.
  265. #define PIN_JOYSTICK_LCLIC {1 << 25, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
  266. /// Joystick PUSH button.
  267. #define PIN_JOYSTICK_PUSH  PIN_JOYSTICK_LCLIC
  268. /// List of all Joystick click definitions
  269. #define PINS_JOYSTICK_CLIC  PIN_JOYSTICK_LCLIC
  270. /// List of all Joystick movement direction definitions
  271. #define PINS_JOYSTICK_MOVE  PIN_JOYSTICK_UP, PIN_JOYSTICK_DOWN, 
  272.                             PIN_JOYSTICK_LEFT, PIN_JOYSTICK_RIGHT
  273. /// List of all Joystick definitions
  274. #define PINS_JOYSTICK  PINS_JOYSTICK_MOVE, 
  275.                        PINS_JOYSTICK_CLIC
  276. /// Joystick UP index.
  277. #define JOYSTICK_UP         0
  278. /// Joystick DOWN index.
  279. #define JOYSTICK_DOWN       1
  280. /// Joystick LEFT index.
  281. #define JOYSTICK_LEFT       2
  282. /// Joystick RIGHT index.
  283. #define JOYSTICK_RIGHT      3
  284. /// Joystick LEFT CLICK index.
  285. #define JOYSTICK_LCLIC      4
  286. /// Joystick PUSH button index.
  287. #define JOYSTICK_PUSH       4
  288. /// USART0 RXD pin definition.
  289. #define PIN_USART0_RXD  {1 << 0, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  290. /// USART0 TXD pin definition.
  291. #define PIN_USART0_TXD  {1 << 1, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  292. /// USART0 SCK pin definition.
  293. #define PIN_USART0_SCK  {1 << 2, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  294. /// USART0 RTS pin definition
  295. #define PIN_USART0_RTS  {1 << 3, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  296. /// USART0 CTS pin definition
  297. #define PIN_USART0_CTS  {1 << 4, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  298. /// SPI0 MISO pin definition.
  299. #define PIN_SPI0_MISO   {1 << 16, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  300. /// SPI0 MOSI pin definition.
  301. #define PIN_SPI0_MOSI   {1 << 17, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}
  302. /// SPI0 SPCK pin definition.
  303. #define PIN_SPI0_SPCK   {1 << 18, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}
  304. /// List of SPI0 pin definitions (MISO, MOSI & SPCK).
  305. #define PINS_SPI0       PIN_SPI0_MISO, PIN_SPI0_MOSI, PIN_SPI0_SPCK
  306. /// SPI0 chip select 0 pin definition.
  307. #define PIN_SPI0_NPCS0  {1 << 12, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}
  308. /// SPI0 chip select 1 pin definition.
  309. #define PIN_SPI0_NPCS1  {1 << 13, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_PULLUP}
  310. /// PWMC PWM0 pin definition.
  311. #define PIN_PWMC_PWM0  {1 << 19, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}
  312. /// PWMC PWM1 pin definition.
  313. #define PIN_PWMC_PWM1  {1 << 20, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}
  314. /// PWMC PWM2 pin definition.
  315. #define PIN_PWMC_PWM2  {1 << 21, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}
  316. /// PWMC PWM3 pin definition.
  317. #define PIN_PWMC_PWM3  {1 << 22, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}
  318. /// ADC_AD0 pin definition.
  319. #define PIN_ADC0_ADC0 {1 << 27, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_INPUT, PIO_DEFAULT}
  320. /// ADC_AD1 pin definition.
  321. #define PIN_ADC0_ADC1 {1 << 28, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_INPUT, PIO_DEFAULT}
  322. /// ADC_AD2 pin definition.
  323. #define PIN_ADC0_ADC2 {1 << 29, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_INPUT, PIO_DEFAULT}
  324. /// ADC_AD3 pin definition.
  325. #define PIN_ADC0_ADC3 {1 << 30, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_INPUT, PIO_DEFAULT}
  326. /// Pins ADC
  327. #define PINS_ADC PIN_ADC0_ADC0, PIN_ADC0_ADC1, PIN_ADC0_ADC2, PIN_ADC0_ADC3
  328. /// PWM pin definition for LED0
  329. #define PIN_PWM_LED0 PIN_PWMC_PWM1
  330. /// PWM pin definition for LED1
  331. #define PIN_PWM_LED1 PIN_PWMC_PWM2
  332. /// PWM channel for LED0
  333. #define CHANNEL_PWM_LED0 1
  334. /// PWM channel for LED1
  335. #define CHANNEL_PWM_LED1 2
  336. /// TWI pins definition.
  337. #define PINS_TWI  {0x00000C00, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  338. /// CAN Definition
  339. /// RS: Select input for high speed mode or silent mode
  340. #define PIN_CAN_TRANSCEIVER_RS  {1<<2, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
  341. /// TXD: Transmit data input
  342. #define PINS_CAN_TRANSCEIVER_TXD  {1<<20, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  343. /// RXD: Receive data output
  344. #define PINS_CAN_TRANSCEIVER_RXD  {1<<19, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
  345. //------------------------------------------------------------------------------
  346. //------------------------------------------------------------------------------
  347. /// page "SAM7X-EK - External components"
  348. /// This page lists definitions related to external on-board components.
  349. /// 
  350. /// !AT45 Dataflash Card
  351. /// - BOARD_AT45_A_SPI_BASE
  352. /// - BOARD_AT45_A_SPI_ID
  353. /// - BOARD_AT45_A_SPI_PINS
  354. /// - BOARD_AT45_A_SPI
  355. /// - BOARD_AT45_A_NPCS
  356. /// - BOARD_AT45_A_NPCS_PIN
  357. ///
  358. /// !AT45 Dataflash (serial onboard DataFlash)
  359. /// - BOARD_AT45_B_SPI_BASE
  360. /// - BOARD_AT45_B_SPI_ID
  361. /// - BOARD_AT45_B_SPI_PINS
  362. /// - BOARD_AT45_B_SPI
  363. /// - BOARD_AT45_B_NPCS
  364. /// - BOARD_AT45_B_NPCS_PIN
  365. ///
  366. /// !AT26 Serial Flash
  367. /// - BOARD_AT26_A_SPI_BASE
  368. /// - BOARD_AT26_A_SPI_ID
  369. /// - BOARD_AT26_A_SPI_PINS
  370. /// - BOARD_AT26_A_SPI
  371. /// - BOARD_AT26_A_NPCS
  372. /// - BOARD_AT26_A_NPCS_PIN
  373. ///
  374. /// !SD SPI
  375. /// - BOARD_SD_SPI_BASE
  376. /// - BOARD_SD_SPI_ID
  377. /// - BOARD_SD_SPI_PINS
  378. /// - BOARD_SD_NPCS
  379. ///
  380. /// !EMAC
  381. /// - BOARD_EMAC_PIN_PWRDN
  382. /// - BOARD_EMAC_MODE_RMII
  383. /// - BOARD_EMAC_PINS
  384. /// - BOARD_EMAC_PIN_TEST
  385. /// - BOARD_EMAC_PIN_RMII
  386. /// - BOARD_EMAC_PINS_PHYAD
  387. /// - BOARD_EMAC_PIN_10BT
  388. /// - BOARD_EMAC_PIN_RPTR
  389. /// - BOARD_EMAC_RST_PINS
  390. /// - BOARD_EMAC_RUN_PINS
  391. /// Base address of SPI peripheral connected to the dataflash.
  392. #define BOARD_AT45_A_SPI_BASE         AT91C_BASE_SPI0
  393. /// Identifier of SPI peripheral connected to the dataflash.
  394. #define BOARD_AT45_A_SPI_ID           AT91C_ID_SPI0
  395. /// Pins of the SPI peripheral connected to the dataflash.
  396. #define BOARD_AT45_A_SPI_PINS         PINS_SPI0
  397. /// Dataflahs SPI number.
  398. #define BOARD_AT45_A_SPI              0
  399. /// Chip select connected to the dataflash.
  400. #define BOARD_AT45_A_NPCS             1
  401. /// Chip select pin connected to the dataflash.
  402. #define BOARD_AT45_A_NPCS_PIN         PIN_SPI0_NPCS1
  403. /// Base address of SPI peripheral connected to the dataflash.
  404. #define BOARD_AT45_B_SPI_BASE         AT91C_BASE_SPI0
  405. /// Identifier of SPI peripheral connected to the dataflash.
  406. #define BOARD_AT45_B_SPI_ID           AT91C_ID_SPI0
  407. /// Pins of the SPI peripheral connected to the dataflash.
  408. #define BOARD_AT45_B_SPI_PINS         PINS_SPI0
  409. /// Dataflahs SPI number.
  410. #define BOARD_AT45_B_SPI              0
  411. /// Chip select connected to the dataflash.
  412. #define BOARD_AT45_B_NPCS             0
  413. /// Chip select pin connected to the dataflash.
  414. #define BOARD_AT45_B_NPCS_PIN         PIN_SPI0_NPCS0
  415. /// Base address of SPI peripheral connected to the serialflash.
  416. #define BOARD_AT26_A_SPI_BASE         AT91C_BASE_SPI0
  417. /// Identifier of SPI peripheral connected to the serialflash.
  418. #define BOARD_AT26_A_SPI_ID           AT91C_ID_SPI0
  419. /// Pins of the SPI peripheral connected to the serialflash.
  420. #define BOARD_AT26_A_SPI_PINS         PINS_SPI0
  421. /// Serialflash SPI number.
  422. #define BOARD_AT26_A_SPI              0
  423. /// Chip select connected to the serialflash.
  424. #define BOARD_AT26_A_NPCS             1
  425. /// Chip select pin connected to the serialflash.
  426. #define BOARD_AT26_A_NPCS_PIN         PIN_SPI0_NPCS1
  427. /// Base address of the SPI peripheral connected to the SD card.
  428. #define BOARD_SD_SPI_BASE   AT91C_BASE_SPI0
  429. /// Identifier of the SPI peripheral connected to the SD card.
  430. #define BOARD_SD_SPI_ID     AT91C_ID_SPI0
  431. /// List of pins to configure to access the SD card
  432. #define BOARD_SD_SPI_PINS   PINS_SPI0, PIN_SPI0_NPCS1
  433. /// NPCS number
  434. #define BOARD_SD_NPCS       1
  435. /// Board EMAC Power Down control pin
  436. #define BOARD_EMAC_PIN_PWRDN {(1<<18), AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  437. /// Board EMAC mode - RMII/MII ( 1/0 )
  438. #define BOARD_EMAC_MODE_RMII 0 // MII is the default mode
  439. /// The PIN list of PIO for EMAC
  440. #define BOARD_EMAC_PINS     {0x3FFFF, AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT}
  441. /// The power up reset latch PIO for PHY
  442. #define BOARD_EMAC_PIN_TEST   {(1<<15), AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  443. #define BOARD_EMAC_PIN_RMII   {(1<<16), AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  444. // We force the address
  445. //(1<<5) PHY address 0, (1<<6) PHY address 1, (1<<13) PHY address 2,
  446. //(1<<14) PHY address 3, (1<<4) PHY address 4
  447. #define BOARD_EMAC_PINS_PHYAD {(1<<6)|(1<<13)|(1<<14)|(1<<4),
  448.                                AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT},
  449.                               {(1<<5), AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT}
  450. #define BOARD_EMAC_PIN_10BT   {(1<<17), AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  451. #define BOARD_EMAC_PIN_RPTR   {(1<< 7), AT91C_BASE_PIOB, AT91C_ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}
  452. /// The PIN Configure list for EMAC on power up reset (MII)
  453. #define BOARD_EMAC_RST_PINS BOARD_EMAC_PINS_PHYAD, 
  454.                             BOARD_EMAC_PIN_TEST, BOARD_EMAC_PIN_RMII, 
  455.                             BOARD_EMAC_PIN_10BT, BOARD_EMAC_PIN_RPTR
  456. /// The runtime pin configure list for EMAC
  457. #define BOARD_EMAC_RUN_PINS BOARD_EMAC_PINS
  458. //------------------------------------------------------------------------------
  459. //------------------------------------------------------------------------------
  460. /// page "SAM7X-EK - Memories"
  461. /// This page lists definitions related to internal & external on-board memories.
  462. /// 
  463. /// !Embedded Flash
  464. /// - BOARD_FLASH_EFC
  465. /// - BOARD_FLASH_IAP_ADDRESS
  466. /// Indicates chip has an EFC.
  467. #define BOARD_FLASH_EFC
  468. /// Address of the IAP function in ROM.
  469. #define BOARD_FLASH_IAP_ADDRESS         0x300008
  470. //------------------------------------------------------------------------------
  471. //------------------------------------------------------------------------------
  472. /// page "SAM7X-EK - External components"
  473. /// This page lists the definitions related to external on-board components
  474. /// located in the board.h file for the SAM7X-EK.
  475. /// 
  476. /// !ISO7816
  477. /// - PIN_SMARTCARD_CONNECT
  478. /// - PIN_ISO7816_RSTMC
  479. /// - PINS_ISO7816
  480. /// Smartcard detection pin
  481. #define PIN_SMARTCARD_CONNECT   {1 << 5, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEFAULT}
  482. /// PIN used for reset the smartcard
  483. #define PIN_ISO7816_RSTMC       {1 << 7, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT}
  484. /// Pins used for connect the smartcard
  485. #define PINS_ISO7816            PIN_USART0_TXD, PIN_USART0_SCK, PIN_ISO7816_RSTMC
  486. //------------------------------------------------------------------------------
  487. #endif //#ifndef BOARD_H