1 line
4.8 KiB
C
1 line
4.8 KiB
C
/**********************************************************************************************************************************************************************************
|
|
|
|
Fichier HARDWARE.H
|
|
|
|
Contient tous les define liés à l'interface avec le matériel.
|
|
|
|
**********************************************************************************************************************************************************************************/
|
|
|
|
// Nombre max physique :
|
|
|
|
|
|
|
|
// Timings :
|
|
#define BASE_TEMPS_TIMER 10 // En ms
|
|
|
|
|
|
//**********************************************************************************************************************************************************************************
|
|
// General :
|
|
//**********************************************************************************************************************************************************************************
|
|
|
|
#define PAGE_SIZE (4*1024)
|
|
#define BLOCK_SIZE (4*1024)
|
|
|
|
// CM3+ :
|
|
#define BCM2837_ADRESSE_BASE_PERIPH 0x3F000000 // Adresse physique de base de la zone I/O PERIPHERALS à partir de RPI 3 (idem RPI 2)
|
|
|
|
// CM4 :
|
|
#define BCM2711_ADRESSE_BASE_PERIPH 0xFE000000 // Adresse physique de base de la zone I/O PERIPHERALS pour CM4
|
|
|
|
|
|
|
|
//**********************************************************************************************************************************************************************************
|
|
// General Purpose IO (GPIO) :
|
|
//**********************************************************************************************************************************************************************************
|
|
|
|
// CM3+ :
|
|
#define CM3P_OFFSET_GPIO_BASE 0x200000
|
|
|
|
#define CM3P_OFFSET_GPIO_OUT_SET_0 7 // Positionne à HIGH les sorties 0 à 31 (1 bit / sortie) - (cf page 95)
|
|
#define CM3P_OFFSET_GPIO_OUT_SET_1 8 // Positionne à HIGH les sorties 32 à 53 (1 bit / sortie) - (cf page 95)
|
|
|
|
#define CM3P_OFFSET_GPIO_OUT_CLEAR_0 10 // Positionne à LOW les sorties 0 à 31 (1 bit / sortie) - (cf page 95)
|
|
#define CM3P_OFFSET_GPIO_OUT_CLEAR_1 11 // Positionne à LOW les sorties 32 à 53 (1 bit / sortie) - (cf page 95 & 96)
|
|
|
|
#define CM3P_OFFSET_GPIO_PIN_LEVEL_0 13 // Lecture des IO 0 à 31 (1 bit / IO) - (cf page 96)
|
|
#define CM3P_OFFSET_GPIO_PIN_LEVEL_1 14 // Lecture des IO 32 à 53 (1 bit / IO) - (cf page 96)
|
|
|
|
#define CM3P_OFFSET_GPIO_PIN_PULL_UP_DOWN_ENABLE 37 // Config du type de pull-up/pull-down à utiliser lors de l'application de la ENABLE_CLOCK suivante (2 bits au total) - (cf page 101)
|
|
#define CM3P_OFFSET_GPIO_PIN_PULL_UP_DOWN_ENABLE_CLOCK_0 38 // Config des IO 0 à 31 (1 bit / IO) qui seront soumis au pull-up/pull-down ci-dessus - (cf page 101)
|
|
#define CM3P_OFFSET_GPIO_PIN_PULL_UP_DOWN_ENABLE_CLOCK_1 39 // Config des IO 32 à 53 (1 bit / IO) qui seront soumis au pull-up/pull-down ci-dessus - (cf page 101)
|
|
|
|
#define CM3P_NO_PUP_PDN 0x00 // 00 = No resistor is selected
|
|
#define CM3P_PULL_DOWN 0x01 // 01 = Enable Pull Down control
|
|
#define CM3P_PULL_UP 0x02 // 10 = Enable Pull Up control
|
|
|
|
|
|
// CM4 :
|
|
#define CM4_OFFSET_GPIO_BASE 0x200000
|
|
|
|
#define CM4_OFFSET_GPIO_OUT_SET_0 7 // Positionne à HIGH les sorties 0 à 31 (1 bit / sortie) - (cf page 95)
|
|
#define CM4_OFFSET_GPIO_OUT_SET_1 8 // Positionne à HIGH les sorties 32 à 53 (1 bit / sortie) - (cf page 95)
|
|
|
|
#define CM4_OFFSET_GPIO_OUT_CLEAR_0 10 // Positionne à LOW les sorties 0 à 31 (1 bit / sortie) - (cf page 95)
|
|
#define CM4_OFFSET_GPIO_OUT_CLEAR_1 11 // Positionne à LOW les sorties 32 à 53 (1 bit / sortie) - (cf page 95 & 96)
|
|
|
|
#define CM4_OFFSET_GPIO_PIN_LEVEL_0 13 // Lecture des IO 0 à 31 (1 bit / IO) - (cf page 96)
|
|
#define CM4_OFFSET_GPIO_PIN_LEVEL_1 14 // Lecture des IO 32 à 53 (1 bit / IO) - (cf page 96)
|
|
|
|
#define CM4_OFFSET_GPIO_PUP_PDN_CNTRL_REG0 57 // The GPIO Pull-up / Pull-down Registers control the actuation of the internal pull-up/down resistors. Reading these registers gives the current pull-state. (cf page 74)
|
|
#define CM4_OFFSET_GPIO_PUP_PDN_CNTRL_REG1 58
|
|
#define CM4_OFFSET_GPIO_PUP_PDN_CNTRL_REG2 59
|
|
#define CM4_OFFSET_GPIO_PUP_PDN_CNTRL_REG3 60
|
|
|
|
#define CM4_NO_PUP_PDN 0x00 // 00 = No resistor is selected
|
|
#define CM4_PULL_UP 0x01 // 01 = Pull up resistor is selected
|
|
#define CM4_PULL_DOWN 0x02 // 10 = Pull down resistor is selected
|
|
|
|
// Type d'E/S utilisés dans GPIO_FUNCTION_SEL_x :
|
|
#define GPIO_TYPE_INPUT 0x00
|
|
#define GPIO_TYPE_OUTPUT 0x01
|
|
#define GPIO_TYPE_ALT_FUNCTION_0 0x04
|
|
#define GPIO_TYPE_ALT_FUNCTION_1 0x05
|
|
#define GPIO_TYPE_ALT_FUNCTION_2 0x06
|
|
#define GPIO_TYPE_ALT_FUNCTION_3 0x07
|
|
#define GPIO_TYPE_ALT_FUNCTION_4 0x03
|
|
#define GPIO_TYPE_ALT_FUNCTION_5 0x02
|
|
#define GPIO_TYPE_UNKNOWN 0xFF
|
|
|
|
// Type de pull-up/down :
|
|
#define NO_PUP_PDN 0
|
|
#define PULL_DOWN 1
|
|
#define PULL_UP 2
|
|
|