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_smc.h"
00144 #include "sam3_sdramc.h"
00145 #include "sam3_ints.h"
00146 #include "sam3_pio.h"
00147 #include "sam3_nvic.h"
00148 #include "sam3_uart.h"
00149 #include "sam3_usart.h"
00150 #include "sam3_spi.h"
00151 #include "sam3_flash.h"
00152 #include "sam3_wdt.h"
00153 #include "sam3_emac.h"
00154 #include "sam3_rstc.h"
00155 #include "sam3_adc.h"
00156 #include "sam3_dacc.h"
00157 #include "sam3_tc.h"
00158 #include "sam3_twi.h"
00159 #include "sam3_ssc.h"
00160 
00164 /*\{*/
00165 #if CPU_CM3_SAM3U
00166     #define UART0_PORT   PIOA_BASE
00167     #define USART0_PORT  PIOA_BASE
00168     #define USART1_PORT  PIOA_BASE
00169     #define USART2_PORT  PIOA_BASE
00170     #define USART3_PORT  PIOC_BASE
00171 
00172     #define UART0_PERIPH   PIO_PERIPH_A
00173     #define USART0_PERIPH  PIO_PERIPH_A
00174     #define USART1_PERIPH  PIO_PERIPH_A
00175     #define USART2_PERIPH  PIO_PERIPH_A
00176     #define USART3_PERIPH  PIO_PERIPH_B
00177 
00178     #define URXD0   11
00179     #define UTXD0   12
00180     #define RXD0    19
00181     #define TXD0    18
00182     #define RXD1    21
00183     #define TXD1    20
00184     #define RXD2    23
00185     #define TXD2    22
00186     #define RXD3    13
00187     #define TXD3    12
00188 #elif CPU_CM3_SAM3X
00189     #define UART0_PORT   PIOA_BASE
00190     #define USART0_PORT  PIOA_BASE
00191     #define USART1_PORT  PIOA_BASE
00192     #define USART2_PORT  PIOB_BASE
00193     #define USART3_PORT  PIOD_BASE
00194 
00195     #define UART0_PERIPH   PIO_PERIPH_A
00196     #define USART0_PERIPH  PIO_PERIPH_A
00197     #define USART1_PERIPH  PIO_PERIPH_A
00198     #define USART2_PERIPH  PIO_PERIPH_A
00199     #define USART3_PERIPH  PIO_PERIPH_B
00200 
00201     #define URXD0    8
00202     #define UTXD0    9
00203     #define RXD0    10
00204     #define TXD0    11
00205     #define RXD1    12
00206     #define TXD1    13
00207     #define RXD2    21
00208     #define TXD2    20
00209     #define RXD3     5
00210     #define TXD3     4
00211 #elif CPU_CM3_SAM3N || CPU_CM3_SAM3S
00212     #define UART0_PORT   PIOA_BASE
00213     #define UART1_PORT   PIOB_BASE
00214     #define USART0_PORT  PIOA_BASE
00215     #define USART1_PORT  PIOA_BASE
00216 
00217     #define UART0_PERIPH   PIO_PERIPH_A
00218     #define UART1_PERIPH   PIO_PERIPH_A
00219     #define USART0_PERIPH  PIO_PERIPH_A
00220     #define USART1_PERIPH  PIO_PERIPH_A
00221 
00222     #define URXD0    9
00223     #define UTXD0   10
00224     #define URXD1    2
00225     #define UTXD1    3
00226     #define RXD0     5
00227     #define TXD0     6
00228     #define RXD1    21
00229     #define TXD1    22
00230 #endif
00231 /*\}*/
00232 
00236 /*\{*/
00237 #if CPU_CM3_SAM3U
00238     #define SPI0_SPCK   15
00239     #define SPI0_MOSI   14
00240     #define SPI0_MISO   13
00241 #elif CPU_CM3_SAM3X
00242     #define SPI0_SPCK   27
00243     #define SPI0_MOSI   26
00244     #define SPI0_MISO   25
00245 #else
00246     #define SPI0_SPCK   14
00247     #define SPI0_MOSI   13
00248     #define SPI0_MISO   12
00249 #endif
00250 /*\}*/
00251 
00255 /*\{*/
00256 #if CPU_CM3_SAM3X
00257     #define TWI0_PORT   PIOA_BASE
00258     #define TWI1_PORT   PIOA_BASE
00259 
00260     #define TWI0_PERIPH  PIO_PERIPH_A
00261     #define TWI1_PERIPH  PIO_PERIPH_A
00262 
00263     #define TWI0_TWD    17
00264     #define TWI0_TWCK   18
00265     #define TWI1_TWD    12
00266     #define TWI1_TWCK   13
00267 #elif CPU_CM3_SAM3N || CPU_CM3_SAM3S
00268     #define TWI0_PORT   PIOA_BASE
00269     #define TWI1_PORT   PIOB_BASE
00270 
00271     #define TWI0_PERIPH  PIO_PERIPH_A
00272     #define TWI1_PERIPH  PIO_PERIPH_A
00273 
00274     #define TWI0_TWD    3
00275     #define TWI0_TWCK   4
00276     #define TWI1_TWD    4
00277     #define TWI1_TWCK   5
00278 #elif CPU_CM3_SAM3U
00279     #define TWI0_PORT   PIOA_BASE
00280     #define TWI1_PORT   PIOA_BASE
00281 
00282     #define TWI0_PERIPH  PIO_PERIPH_A
00283     #define TWI1_PERIPH  PIO_PERIPH_A
00284 
00285     #define TWI0_TWD    9
00286     #define TWI0_TWCK   10
00287     #define TWI1_TWD    24
00288     #define TWI1_TWCK   25
00289 #endif
00290 
00291 #if CPU_CM3_SAM3X
00292     #define SSC_PORT            PIOA_BASE
00293     #define SSC_PIO_PDR         PIOA_PDR
00294     #define SSC_RECV_PERIPH     PIO_PERIPH_A
00295     #define SSC_TRAN_PERIPH     PIO_PERIPH_B
00296     #define SSC_RD              18
00297     #define SSC_RF              17
00298     #define SSC_RK              19
00299     #define SSC_TD              16
00300     #define SSC_TF              15
00301     #define SSC_TK              14
00302 #elif CPU_CM3_SAM3N
00303     #define SSC_PORT            /* None! */
00304     #define SSC_PIO_PDR         /* None! */
00305     #define SSC_RECV_PERIPH     /* None! */
00306     #define SSC_TRAN_PERIPH     /* None! */
00307     #define SSC_RD              /* None! */
00308     #define SSC_RF              /* None! */
00309     #define SSC_RK              /* None! */
00310     #define SSC_TD              /* None! */
00311     #define SSC_TF              /* None! */
00312     #define SSC_TK              /* None! */
00313 #elif CPU_CM3_SAM3S
00314     #define SSC_PORT            PIOA_BASE
00315     #define SSC_PIO_PDR         PIOA_PDR
00316     #define SSC_RECV_PERIPH     PIO_PERIPH_A
00317     #define SSC_TRAN_PERIPH     PIO_PERIPH_A
00318     #define SSC_RD              18
00319     #define SSC_RF              20
00320     #define SSC_RK              19
00321     #define SSC_TD              17
00322     #define SSC_TF              15
00323     #define SSC_TK              16
00324 #elif CPU_CM3_SAM3U
00325     #define SSC_PORT            PIOA_BASE
00326     #define SSC_PIO_PDR         PIOA_PDR
00327     #define SSC_RECV_PERIPH     PIO_PERIPH_A
00328     #define SSC_TRAN_PERIPH     PIO_PERIPH_A
00329     #define SSC_RD              27
00330     #define SSC_RF              31
00331     #define SSC_RK              29
00332     #define SSC_TD              26
00333     #define SSC_TF              30
00334     #define SSC_TK              28
00335 #else
00336     #error no ssc pins are defined for this cpu
00337 #endif
00338 
00339 /*\}*/
00340 #endif /* SAM3_H */