GPIO bcm2835 raspberry

Gast #3100738
Lesenswert?

Hallo zusammen,

ich habe mir GPIO Lib für raspberry heruntergeladen und erfolgreich 
einsetzen können.
Ich habe einige Funktionen angeschaut und verstehe nicht ganz den Code.
Wäre sehr dankbar, wenn jemand mir den erklären könnte.

Hier sind die wichtigen Definitionen:

#define BCM2835_PERI_BASE           0x20000000
#define BCM2835_GPIO_BASE          (BCM2835_PERI_BASE + 0x200000)
#define BCM2835_GPFSEL0             0x0000 ///< GPIO Function Select 0
#define BCM2835_GPSET0              0x001c ///< GPIO Pin Output Set 0
#define BCM2835_GPCLR0              0x0028 ///< GPIO Pin Output Clear 0

Funktion Select Function - input/output

void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode)
{
      pin = 11, mode = 0b001;
    // Function selects are 10 pins per 32 bit word, 3 bits per pin
    volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPFSEL0/4 + 
(pin/10);
    uint8_t   shift = (pin % 10) * 3;
    uint32_t  mask = BCM2835_GPIO_FSEL_MASK << shift;
    uint32_t  value = mode << shift;
    bcm2835_peri_set_bits(paddr, value, mask);
}

Nun meine Frage, Welchen Sinn macht diese Operation BCM2835_GPFSEL0/4, 
wenn
BCM2835_GPFSEL0 = 0 (0x0000)

Wenn ich selber paddr bei pin =11 und mode = 0b001 ausrechne, dann komme 
ich auf 0x20200001, stimmt das?

Danke und Grüße rasp

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren