sam3.h
Go to the documentation of this file.
00001 00036 #ifndef SAM3_H 00037 #define SAM3_H 00038 00039 #include <cpu/detect.h> 00040 #include <cfg/compiler.h> 00041 00042 /* 00043 * Peripherals IDs. 00044 */ 00045 /*\{*/ 00046 #if CPU_CM3_SAM3N 00047 #define SUPC_ID 0 ///< Supply Controller (SUPC) 00048 #define RSTC_ID 1 ///< Reset Controller (RSTC) 00049 #define RTC_ID 2 ///< Real Time Clock (RTC) 00050 #define RTT_ID 3 ///< Real Time Timer (RTT) 00051 #define WDT_ID 4 ///< Watchdog Timer (WDT) 00052 #define PMC_ID 5 ///< Power Management Controller (PMC) 00053 #define EEFC0_ID 6 ///< Enhanced Flash Controller 00054 #define UART0_ID 8 ///< UART 0 (UART0) 00055 #define UART1_ID 9 ///< UART 1 (UART1) 00056 #define PIOA_ID 11 ///< Parallel I/O Controller A (PIOA) 00057 #define PIOB_ID 12 ///< Parallel I/O Controller B (PIOB) 00058 #define PIOC_ID 13 ///< Parallel I/O Controller C (PIOC) 00059 #define US0_ID 14 ///< USART 0 (USART0) 00060 #define US1_ID 15 ///< USART 1 (USART1) 00061 #define TWI0_ID 19 ///< Two Wire Interface 0 (TWI0) 00062 #define TWI1_ID 20 ///< Two Wire Interface 1 (TWI1) 00063 #define SPI0_ID 21 ///< Serial Peripheral Interface (SPI) 00064 #define TC0_ID 23 ///< Timer/Counter 0 (TC0) 00065 #define TC1_ID 24 ///< Timer/Counter 1 (TC1) 00066 #define TC2_ID 25 ///< Timer/Counter 2 (TC2) 00067 #define TC3_ID 26 ///< Timer/Counter 3 (TC3) 00068 #define TC4_ID 27 ///< Timer/Counter 4 (TC4) 00069 #define TC5_ID 28 ///< Timer/Counter 5 (TC5) 00070 #define ADC_ID 29 ///< Analog To Digital Converter (ADC) 00071 #define DACC_ID 30 ///< Digital To Analog Converter (DACC) 00072 #define PWM_ID 31 ///< Pulse Width Modulation (PWM) 00073 #elif CPU_CM3_SAM3X 00074 #define SUPC_ID 0 ///< Supply Controller (SUPC) 00075 #define RSTC_ID 1 ///< Reset Controller (RSTC) 00076 #define RTC_ID 2 ///< Real Time Clock (RTC) 00077 #define RTT_ID 3 ///< Real Time Timer (RTT) 00078 #define WDT_ID 4 ///< Watchdog Timer (WDT) 00079 #define PMC_ID 5 ///< Power Management Controller (PMC) 00080 #define EEFC0_ID 6 ///< Enhanced Flash Controller 00081 #define EEFC1_ID 7 ///< Enhanced Flash Controller 00082 #define UART0_ID 8 ///< UART 0 (UART0) 00083 #define SMC_SDRAMC_ID 9 ///< Satic memory controller / SDRAM controller 00084 #define SDRAMC_ID 10 ///< Satic memory controller / SDRAM controller 00085 #define PIOA_ID 11 ///< Parallel I/O Controller A 00086 #define PIOB_ID 12 ///< Parallel I/O Controller B 00087 #define PIOC_ID 13 ///< Parallel I/O Controller C 00088 #define PIOD_ID 14 ///< Parallel I/O Controller D 00089 #define PIOE_ID 15 ///< Parallel I/O Controller E 00090 #define PIOF_ID 16 ///< Parallel I/O Controller F 00091 #define US0_ID 17 ///< USART 0 00092 #define US1_ID 18 ///< USART 1 00093 #define US2_ID 19 ///< USART 2 00094 #define US3_ID 20 ///< USART 3 00095 #define HSMCI_ID 21 ///< High speed multimedia card interface 00096 #define TWI0_ID 22 ///< Two Wire Interface 0 00097 #define TWI1_ID 23 ///< Two Wire Interface 1 00098 #define SPI0_ID 24 ///< Serial Peripheral Interface 00099 #define SPI1_ID 25 ///< Serial Peripheral Interface 00100 #define SSC_ID 26 ///< Synchronous serial controller 00101 #define TC0_ID 27 ///< Timer/Counter 0 00102 #define TC1_ID 28 ///< Timer/Counter 1 00103 #define TC2_ID 29 ///< Timer/Counter 2 00104 #define TC3_ID 30 ///< Timer/Counter 3 00105 #define TC4_ID 31 ///< Timer/Counter 4 00106 #define TC5_ID 32 ///< Timer/Counter 5 00107 #define TC6_ID 33 ///< Timer/Counter 6 00108 #define TC7_ID 34 ///< Timer/Counter 7 00109 #define TC8_ID 35 ///< Timer/Counter 8 00110 #define PWM_ID 36 ///< Pulse width modulation controller 00111 #define ADC_ID 37 ///< ADC controller 00112 #define DACC_ID 38 ///< DAC controller 00113 #define DMAC_ID 39 ///< DMA controller 00114 #define UOTGHS_ID 40 ///< USB OTG high speed 00115 #define TRNG_ID 41 ///< True random number generator 00116 #define EMAC_ID 42 ///< Ethernet MAC 00117 #define CAN0_ID 43 ///< CAN controller 0 00118 #define CAN1_ID 44 ///< CAN controller 1 00119 #else 00120 #error Peripheral IDs undefined 00121 #endif 00122 /*\}*/ 00123 00124 /* 00125 * Hardware features for drivers. 00126 */ 00127 #define USART_HAS_PDC 1 00128 #define SPI_HAS_PDC 1 00129 00130 #if CPU_CM3_SAM3X || CPU_CM3_SAM3U 00131 #define USART_PORTS 1 00132 #define UART_PORTS 4 00133 #elif CPU_CM3_SAM3N || CPU_CM3_SAM3S 00134 #define USART_PORTS 2 00135 #define UART_PORTS 2 00136 #else 00137 #error undefined U(S)ART_PORTS for this cpu 00138 #endif 00139 00140 #include "sam3_sysctl.h" 00141 #include "sam3_pdc.h" 00142 #include "sam3_pmc.h" 00143 #include "sam3_dmac.h" 00144 #include "sam3_smc.h" 00145 #include "sam3_sdramc.h" 00146 #include "sam3_ints.h" 00147 #include "sam3_pio.h" 00148 #include "sam3_nvic.h" 00149 #include "sam3_uart.h" 00150 #include "sam3_usart.h" 00151 #include "sam3_spi.h" 00152 #include "sam3_flash.h" 00153 #include "sam3_wdt.h" 00154 #include "sam3_emac.h" 00155 #include "sam3_rstc.h" 00156 #include "sam3_adc.h" 00157 #include "sam3_dacc.h" 00158 #include "sam3_tc.h" 00159 #include "sam3_twi.h" 00160 #include "sam3_ssc.h" 00161 #include "sam3_hsmci.h" 00162 #include "sam3_chipid.h" 00163 00167 /*\{*/ 00168 #if CPU_CM3_SAM3U 00169 #define UART0_PORT PIOA_BASE 00170 #define USART0_PORT PIOA_BASE 00171 #define USART1_PORT PIOA_BASE 00172 #define USART2_PORT PIOA_BASE 00173 #define USART3_PORT PIOC_BASE 00174 00175 #define UART0_PERIPH PIO_PERIPH_A 00176 #define USART0_PERIPH PIO_PERIPH_A 00177 #define USART1_PERIPH PIO_PERIPH_A 00178 #define USART2_PERIPH PIO_PERIPH_A 00179 #define USART3_PERIPH PIO_PERIPH_B 00180 00181 #define URXD0 11 00182 #define UTXD0 12 00183 #define RXD0 19 00184 #define TXD0 18 00185 #define RXD1 21 00186 #define TXD1 20 00187 #define RXD2 23 00188 #define TXD2 22 00189 #define RXD3 13 00190 #define TXD3 12 00191 #elif CPU_CM3_SAM3X 00192 #define UART0_PORT PIOA_BASE 00193 #define USART0_PORT PIOA_BASE 00194 #define USART1_PORT PIOA_BASE 00195 #define USART2_PORT PIOB_BASE 00196 #define USART3_PORT PIOD_BASE 00197 00198 #define UART0_PERIPH PIO_PERIPH_A 00199 #define USART0_PERIPH PIO_PERIPH_A 00200 #define USART1_PERIPH PIO_PERIPH_A 00201 #define USART2_PERIPH PIO_PERIPH_A 00202 #define USART3_PERIPH PIO_PERIPH_B 00203 00204 #define URXD0 8 00205 #define UTXD0 9 00206 #define RXD0 10 00207 #define TXD0 11 00208 #define RXD1 12 00209 #define TXD1 13 00210 #define RXD2 21 00211 #define TXD2 20 00212 #define RXD3 5 00213 #define TXD3 4 00214 #elif CPU_CM3_SAM3N || CPU_CM3_SAM3S 00215 #define UART0_PORT PIOA_BASE 00216 #define UART1_PORT PIOB_BASE 00217 #define USART0_PORT PIOA_BASE 00218 #define USART1_PORT PIOA_BASE 00219 00220 #define UART0_PERIPH PIO_PERIPH_A 00221 #define UART1_PERIPH PIO_PERIPH_A 00222 #define USART0_PERIPH PIO_PERIPH_A 00223 #define USART1_PERIPH PIO_PERIPH_A 00224 00225 #define URXD0 9 00226 #define UTXD0 10 00227 #define URXD1 2 00228 #define UTXD1 3 00229 #define RXD0 5 00230 #define TXD0 6 00231 #define RXD1 21 00232 #define TXD1 22 00233 #endif 00234 /*\}*/ 00235 00239 /*\{*/ 00240 #if CPU_CM3_SAM3U 00241 #define SPI0_SPCK 15 00242 #define SPI0_MOSI 14 00243 #define SPI0_MISO 13 00244 #elif CPU_CM3_SAM3X 00245 #define SPI0_SPCK 27 00246 #define SPI0_MOSI 26 00247 #define SPI0_MISO 25 00248 #else 00249 #define SPI0_SPCK 14 00250 #define SPI0_MOSI 13 00251 #define SPI0_MISO 12 00252 #endif 00253 /*\}*/ 00254 00258 /*\{*/ 00259 #if CPU_CM3_SAM3X 00260 #define TWI0_PORT PIOA_BASE 00261 #define TWI1_PORT PIOA_BASE 00262 00263 #define TWI0_PERIPH PIO_PERIPH_A 00264 #define TWI1_PERIPH PIO_PERIPH_A 00265 00266 #define TWI0_TWD 17 00267 #define TWI0_TWCK 18 00268 #define TWI1_TWD 12 00269 #define TWI1_TWCK 13 00270 #elif CPU_CM3_SAM3N || CPU_CM3_SAM3S 00271 #define TWI0_PORT PIOA_BASE 00272 #define TWI1_PORT PIOB_BASE 00273 00274 #define TWI0_PERIPH PIO_PERIPH_A 00275 #define TWI1_PERIPH PIO_PERIPH_A 00276 00277 #define TWI0_TWD 3 00278 #define TWI0_TWCK 4 00279 #define TWI1_TWD 4 00280 #define TWI1_TWCK 5 00281 #elif CPU_CM3_SAM3U 00282 #define TWI0_PORT PIOA_BASE 00283 #define TWI1_PORT PIOA_BASE 00284 00285 #define TWI0_PERIPH PIO_PERIPH_A 00286 #define TWI1_PERIPH PIO_PERIPH_A 00287 00288 #define TWI0_TWD 9 00289 #define TWI0_TWCK 10 00290 #define TWI1_TWD 24 00291 #define TWI1_TWCK 25 00292 #endif 00293 00294 #if CPU_CM3_SAM3X 00295 #define SSC_PORT PIOA_BASE 00296 #define SSC_PIO_PDR PIOA_PDR 00297 #define SSC_RECV_PERIPH PIO_PERIPH_A 00298 #define SSC_TRAN_PERIPH PIO_PERIPH_B 00299 #define SSC_RD 18 00300 #define SSC_RF 17 00301 #define SSC_RK 19 00302 #define SSC_TD 16 00303 #define SSC_TF 15 00304 #define SSC_TK 14 00305 #elif CPU_CM3_SAM3N 00306 #define SSC_PORT /* None! */ 00307 #define SSC_PIO_PDR /* None! */ 00308 #define SSC_RECV_PERIPH /* None! */ 00309 #define SSC_TRAN_PERIPH /* None! */ 00310 #define SSC_RD /* None! */ 00311 #define SSC_RF /* None! */ 00312 #define SSC_RK /* None! */ 00313 #define SSC_TD /* None! */ 00314 #define SSC_TF /* None! */ 00315 #define SSC_TK /* None! */ 00316 #elif CPU_CM3_SAM3S 00317 #define SSC_PORT PIOA_BASE 00318 #define SSC_PIO_PDR PIOA_PDR 00319 #define SSC_RECV_PERIPH PIO_PERIPH_A 00320 #define SSC_TRAN_PERIPH PIO_PERIPH_A 00321 #define SSC_RD 18 00322 #define SSC_RF 20 00323 #define SSC_RK 19 00324 #define SSC_TD 17 00325 #define SSC_TF 15 00326 #define SSC_TK 16 00327 #elif CPU_CM3_SAM3U 00328 #define SSC_PORT PIOA_BASE 00329 #define SSC_PIO_PDR PIOA_PDR 00330 #define SSC_RECV_PERIPH PIO_PERIPH_A 00331 #define SSC_TRAN_PERIPH PIO_PERIPH_A 00332 #define SSC_RD 27 00333 #define SSC_RF 31 00334 #define SSC_RK 29 00335 #define SSC_TD 26 00336 #define SSC_TF 30 00337 #define SSC_TK 28 00338 #else 00339 #error no ssc pins are defined for this cpu 00340 #endif 00341 00342 00343 #if CPU_CM3_SAM3X8 00344 #define FLASH_MEM_SIZE 0x80000UL ///< Internal flash memory size 00345 #define FLASH_PAGE_SIZE_BYTES 256 ///< Size of cpu flash memory page in bytes 00346 #define FLASH_BANKS_NUM 2 ///< Number of flash banks 00347 #define FLASH_PAGES_FOR_BANK 1024 ///< Number pages for each bank 00348 #define FLASH_BASE 0x80000 ///< Start address for bank 0 00349 #elif CPU_CM3_SAM3U4 00350 #define FLASH_MEM_SIZE 0x40000UL ///< Internal flash memory size 00351 #define FLASH_PAGE_SIZE_BYTES 256 ///< Size of cpu flash memory page in bytes 00352 #define FLASH_BANKS_NUM 2 ///< Number of flash banks 00353 #define FLASH_PAGES_FOR_BANK 512 ///< Number pages for each bank 00354 #define FLASH_BASE 0x80000 ///< Start address for bank 0 00355 #elif CPU_CM3_SAM3N4 || CPU_CM3_SAM3S4 00356 #define FLASH_MEM_SIZE 0x40000UL ///< Internal flash memory size 00357 #define FLASH_PAGE_SIZE_BYTES 256 ///< Size of cpu flash memory page in bytes 00358 #define FLASH_BANKS_NUM 1 ///< Number of flash banks 00359 #define FLASH_PAGES_FOR_BANK 1024 ///< Number pages for each bank 00360 #define FLASH_BASE 0x400000 ///< Start address for bank 0 00361 #else 00362 #error no internal flash info are defined for this cpu 00363 #endif 00364 00365 00366 #if CPU_CM3_SAM3X8 00367 // Port B 00368 #define PHY_REFCLK_XT2_BIT 0 00369 #define PHY_TXEN_BIT 1 00370 #define PHY_TXD0_BIT 2 00371 #define PHY_TXD1_BIT 3 00372 #define PHY_RXDV_TESTMODE_BIT 4 00373 #define PHY_RXD0_AD0_BIT 5 00374 #define PHY_RXD1_AD1_BIT 6 00375 #define PHY_RXER_RXD4_RPTR_BIT 7 00376 #define PHY_MDC_BIT 8 00377 #define PHY_MDIO_BIT 9 00378 // Port A 00379 #define PHY_MDINTR_BIT 5 00380 #elif (CPU_CM3_SAM3U || CPU_CM3_SAM3N) 00381 /* No ethernet interface is present on this cpu */ 00382 #else 00383 #error No MII/RMII PHY pins interface was define for select CPU. 00384 #endif 00385 00386 #define PHY_MII_PINS_PORTB \ 00387 BV(PHY_REFCLK_XT2_BIT) \ 00388 | BV(PHY_TXEN_BIT) \ 00389 | BV(PHY_TXD0_BIT) \ 00390 | BV(PHY_TXD1_BIT) \ 00391 | BV(PHY_RXD0_AD0_BIT) \ 00392 | BV(PHY_RXD1_AD1_BIT) \ 00393 | BV(PHY_RXER_RXD4_RPTR_BIT) \ 00394 | BV(PHY_MDC_BIT) \ 00395 | BV(PHY_MDIO_BIT) 00396 00397 00398 #endif /* SAM3_H */
![(please configure the [header_logo] section in trac.ini)](/chrome/site/bertos_logo.png)