This repository has been archived on 2022-02-18. You can view files and clone it, but cannot push or open issues or pull requests.
osmo-sdr/firmware/osmosdr-dfuapp/src/board.h

95 lines
3.1 KiB
C

#ifndef INCLUDE_BOARD_H
#define INCLUDE_BOARD_H
#include "at91sam3u4/AT91SAM3U4.h"
// frequency for the MCU crystal
#define BOARD_CRYSTAL 12000000
// master clock we want to use
//#define BOARD_MCK 48000000
#define BOARD_MCK 96000000
typedef enum IRQn {
/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */
BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */
PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
/****** AT91SAM3U4 specific Interrupt Numbers *********************************************************/
IROn_SUPC = AT91C_ID_SUPC, // SUPPLY CONTROLLER
IROn_RSTC = AT91C_ID_RSTC, // RESET CONTROLLER
IROn_RTC = AT91C_ID_RTC, // REAL TIME CLOCK
IROn_RTT = AT91C_ID_RTT, // REAL TIME TIMER
IROn_WDG = AT91C_ID_WDG, // WATCHDOG TIMER
IROn_PMC = AT91C_ID_PMC, // PMC
IROn_EFC0 = AT91C_ID_EFC0, // EFC0
IROn_EFC1 = AT91C_ID_EFC1, // EFC1
IROn_DBGU = AT91C_ID_DBGU, // DBGU
IROn_HSMC4 = AT91C_ID_HSMC4, // HSMC4
IROn_PIOA = AT91C_ID_PIOA, // Parallel IO Controller A
IROn_PIOB = AT91C_ID_PIOB, // Parallel IO Controller B
IROn_PIOC = AT91C_ID_PIOC, // Parallel IO Controller C
IROn_US0 = AT91C_ID_US0, // USART 0
IROn_US1 = AT91C_ID_US1, // USART 1
IROn_US2 = AT91C_ID_US2, // USART 2
IROn_US3 = AT91C_ID_US3, // USART 3
IROn_MCI0 = AT91C_ID_MCI0, // Multimedia Card Interface
IROn_TWI0 = AT91C_ID_TWI0, // TWI 0
IROn_TWI1 = AT91C_ID_TWI1, // TWI 1
IROn_SPI0 = AT91C_ID_SPI0, // Serial Peripheral Interface
IROn_SSC0 = AT91C_ID_SSC0, // Serial Synchronous Controller 0
IROn_TC0 = AT91C_ID_TC0, // Timer Counter 0
IROn_TC1 = AT91C_ID_TC1, // Timer Counter 1
IROn_TC2 = AT91C_ID_TC2, // Timer Counter 2
IROn_PWMC = AT91C_ID_PWMC, // Pulse Width Modulation Controller
IROn_ADCC0 = AT91C_ID_ADC12B, // ADC controller0
IROn_ADCC1 = AT91C_ID_ADC, // ADC controller1
IROn_HDMA = AT91C_ID_HDMA, // HDMA
IROn_UDPHS = AT91C_ID_UDPHS // USB Device High Speed
} IRQn_Type;
#define CHIP_USB_NUMENDPOINTS 7
#define CHIP_USB_ENDPOINTS_MAXPACKETSIZE(i) \
((i == 0) ? 64 : \
((i == 1) ? 512 : \
((i == 2) ? 512 : \
((i == 3) ? 64 : \
((i == 4) ? 64 : \
((i == 5) ? 1024 : \
((i == 6) ? 1024 : 0 )))))))
#define CHIP_USB_ENDPOINTS_BANKS(i) \
((i == 0) ? 1 : \
((i == 1) ? 2 : \
((i == 2) ? 2 : \
((i == 3) ? 3 : \
((i == 4) ? 3 : \
((i == 5) ? 3 : \
((i == 6) ? 3 : 0 )))))))
#define CHIP_USB_ENDPOINTS_DMA(i) \
((i == 1) ? 1 : \
((i == 2) ? 1 : \
((i == 3) ? 1 : \
((i == 4) ? 1 : \
((i == 5) ? 1 : \
((i == 6) ? 1 : 0 ))))))
#define BOARD_USB_VENDOR 0x16c0
#define BOARD_USB_PRODUCT 0x0763
#define BOARD_USB_RELEASE 0x0100
#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_RWAKEUP
#define BOARD_DFU_PAGE_SIZE 512
#define BOARD_USB_NUMINTERFACES 1
#endif // INCLUDE_BOARD_H