675#include <sys/types.h>
679#define BCM2835_VERSION 10077
692#define BCM2835_HAVE_DMB
707#define MIN(a, b) (a < b ? a : b)
711#define BCM2835_CORE_CLK_HZ 250000000
714#define BMC2835_RPI2_DT_FILENAME "/proc/device-tree/soc/ranges"
723#define BCM2835_PERI_BASE 0x20000000
725#define BCM2835_PERI_SIZE 0x01000000
727#define BCM2835_RPI2_PERI_BASE 0x3F000000
729#define BCM2835_RPI4_PERI_BASE 0xFE000000
731#define BCM2835_RPI4_PERI_SIZE 0x01800000
736#define BCM2835_ST_BASE 0x3000
738#define BCM2835_GPIO_PADS 0x100000
740#define BCM2835_CLOCK_BASE 0x101000
742#define BCM2835_GPIO_BASE 0x200000
744#define BCM2835_SPI0_BASE 0x204000
746#define BCM2835_BSC0_BASE 0x205000
748#define BCM2835_GPIO_PWM 0x20C000
750#define BCM2835_AUX_BASE 0x215000
752#define BCM2835_SPI1_BASE 0x215080
754#define BCM2835_SPI2_BASE 0x2150C0
756#define BCM2835_BSC1_BASE 0x804000
760#define BCM2835_SMI_BASE 0x600000
851#define BCM2835_PAGE_SIZE (4*1024)
853#define BCM2835_BLOCK_SIZE (4*1024)
863#define BCM2835_GPFSEL0 0x0000
864#define BCM2835_GPFSEL1 0x0004
865#define BCM2835_GPFSEL2 0x0008
866#define BCM2835_GPFSEL3 0x000c
867#define BCM2835_GPFSEL4 0x0010
868#define BCM2835_GPFSEL5 0x0014
869#define BCM2835_GPSET0 0x001c
870#define BCM2835_GPSET1 0x0020
871#define BCM2835_GPCLR0 0x0028
872#define BCM2835_GPCLR1 0x002c
873#define BCM2835_GPLEV0 0x0034
874#define BCM2835_GPLEV1 0x0038
875#define BCM2835_GPEDS0 0x0040
876#define BCM2835_GPEDS1 0x0044
877#define BCM2835_GPREN0 0x004c
878#define BCM2835_GPREN1 0x0050
879#define BCM2835_GPFEN0 0x0058
880#define BCM2835_GPFEN1 0x005c
881#define BCM2835_GPHEN0 0x0064
882#define BCM2835_GPHEN1 0x0068
883#define BCM2835_GPLEN0 0x0070
884#define BCM2835_GPLEN1 0x0074
885#define BCM2835_GPAREN0 0x007c
886#define BCM2835_GPAREN1 0x0080
887#define BCM2835_GPAFEN0 0x0088
888#define BCM2835_GPAFEN1 0x008c
889#define BCM2835_GPPUD 0x0094
890#define BCM2835_GPPUDCLK0 0x0098
891#define BCM2835_GPPUDCLK1 0x009c
894#define BCM2835_GPPUPPDN0 0x00e4
895#define BCM2835_GPPUPPDN1 0x00e8
896#define BCM2835_GPPUPPDN2 0x00ec
897#define BCM2835_GPPUPPDN3 0x00f0
926#define BCM2835_GPIO_PUD_ERROR 0x08
929#define BCM2835_PADS_GPIO_0_27 0x002c
930#define BCM2835_PADS_GPIO_28_45 0x0030
931#define BCM2835_PADS_GPIO_46_53 0x0034
934#define BCM2835_PAD_PASSWRD (0x5A << 24)
935#define BCM2835_PAD_SLEW_RATE_UNLIMITED 0x10
936#define BCM2835_PAD_HYSTERESIS_ENABLED 0x08
937#define BCM2835_PAD_DRIVE_2mA 0x00
938#define BCM2835_PAD_DRIVE_4mA 0x01
939#define BCM2835_PAD_DRIVE_6mA 0x02
940#define BCM2835_PAD_DRIVE_8mA 0x03
941#define BCM2835_PAD_DRIVE_10mA 0x04
942#define BCM2835_PAD_DRIVE_12mA 0x05
943#define BCM2835_PAD_DRIVE_14mA 0x06
944#define BCM2835_PAD_DRIVE_16mA 0x07
1056#define BCM2835_AUX_IRQ 0x0000
1057#define BCM2835_AUX_ENABLE 0x0004
1059#define BCM2835_AUX_ENABLE_UART1 0x01
1060#define BCM2835_AUX_ENABLE_SPI0 0x02
1061#define BCM2835_AUX_ENABLE_SPI1 0x04
1064#define BCM2835_AUX_SPI_CNTL0 0x0000
1065#define BCM2835_AUX_SPI_CNTL1 0x0004
1066#define BCM2835_AUX_SPI_STAT 0x0008
1067#define BCM2835_AUX_SPI_PEEK 0x000C
1068#define BCM2835_AUX_SPI_IO 0x0020
1069#define BCM2835_AUX_SPI_TXHOLD 0x0030
1071#define BCM2835_AUX_SPI_CLOCK_MIN 30500
1072#define BCM2835_AUX_SPI_CLOCK_MAX 125000000
1074#define BCM2835_AUX_SPI_CNTL0_SPEED 0xFFF00000
1075#define BCM2835_AUX_SPI_CNTL0_SPEED_MAX 0xFFF
1076#define BCM2835_AUX_SPI_CNTL0_SPEED_SHIFT 20
1078#define BCM2835_AUX_SPI_CNTL0_CS0_N 0x000C0000
1079#define BCM2835_AUX_SPI_CNTL0_CS1_N 0x000A0000
1080#define BCM2835_AUX_SPI_CNTL0_CS2_N 0x00060000
1082#define BCM2835_AUX_SPI_CNTL0_POSTINPUT 0x00010000
1083#define BCM2835_AUX_SPI_CNTL0_VAR_CS 0x00008000
1084#define BCM2835_AUX_SPI_CNTL0_VAR_WIDTH 0x00004000
1085#define BCM2835_AUX_SPI_CNTL0_DOUTHOLD 0x00003000
1086#define BCM2835_AUX_SPI_CNTL0_ENABLE 0x00000800
1087#define BCM2835_AUX_SPI_CNTL0_CPHA_IN 0x00000400
1088#define BCM2835_AUX_SPI_CNTL0_CLEARFIFO 0x00000200
1089#define BCM2835_AUX_SPI_CNTL0_CPHA_OUT 0x00000100
1090#define BCM2835_AUX_SPI_CNTL0_CPOL 0x00000080
1091#define BCM2835_AUX_SPI_CNTL0_MSBF_OUT 0x00000040
1092#define BCM2835_AUX_SPI_CNTL0_SHIFTLEN 0x0000003F
1094#define BCM2835_AUX_SPI_CNTL1_CSHIGH 0x00000700
1095#define BCM2835_AUX_SPI_CNTL1_IDLE 0x00000080
1096#define BCM2835_AUX_SPI_CNTL1_TXEMPTY 0x00000040
1097#define BCM2835_AUX_SPI_CNTL1_MSBF_IN 0x00000002
1098#define BCM2835_AUX_SPI_CNTL1_KEEP_IN 0x00000001
1100#define BCM2835_AUX_SPI_STAT_TX_LVL 0xF0000000
1101#define BCM2835_AUX_SPI_STAT_RX_LVL 0x00F00000
1102#define BCM2835_AUX_SPI_STAT_TX_FULL 0x00000400
1103#define BCM2835_AUX_SPI_STAT_TX_EMPTY 0x00000200
1104#define BCM2835_AUX_SPI_STAT_RX_FULL 0x00000100
1105#define BCM2835_AUX_SPI_STAT_RX_EMPTY 0x00000080
1106#define BCM2835_AUX_SPI_STAT_BUSY 0x00000040
1107#define BCM2835_AUX_SPI_STAT_BITCOUNT 0x0000003F
1113#define BCM2835_SPI0_CS 0x0000
1114#define BCM2835_SPI0_FIFO 0x0004
1115#define BCM2835_SPI0_CLK 0x0008
1116#define BCM2835_SPI0_DLEN 0x000c
1117#define BCM2835_SPI0_LTOH 0x0010
1118#define BCM2835_SPI0_DC 0x0014
1121#define BCM2835_SPI0_CS_LEN_LONG 0x02000000
1122#define BCM2835_SPI0_CS_DMA_LEN 0x01000000
1123#define BCM2835_SPI0_CS_CSPOL2 0x00800000
1124#define BCM2835_SPI0_CS_CSPOL1 0x00400000
1125#define BCM2835_SPI0_CS_CSPOL0 0x00200000
1126#define BCM2835_SPI0_CS_RXF 0x00100000
1127#define BCM2835_SPI0_CS_RXR 0x00080000
1128#define BCM2835_SPI0_CS_TXD 0x00040000
1129#define BCM2835_SPI0_CS_RXD 0x00020000
1130#define BCM2835_SPI0_CS_DONE 0x00010000
1131#define BCM2835_SPI0_CS_TE_EN 0x00008000
1132#define BCM2835_SPI0_CS_LMONO 0x00004000
1133#define BCM2835_SPI0_CS_LEN 0x00002000
1134#define BCM2835_SPI0_CS_REN 0x00001000
1135#define BCM2835_SPI0_CS_ADCS 0x00000800
1136#define BCM2835_SPI0_CS_INTR 0x00000400
1137#define BCM2835_SPI0_CS_INTD 0x00000200
1138#define BCM2835_SPI0_CS_DMAEN 0x00000100
1139#define BCM2835_SPI0_CS_TA 0x00000080
1140#define BCM2835_SPI0_CS_CSPOL 0x00000040
1141#define BCM2835_SPI0_CS_CLEAR 0x00000030
1142#define BCM2835_SPI0_CS_CLEAR_RX 0x00000020
1143#define BCM2835_SPI0_CS_CLEAR_TX 0x00000010
1144#define BCM2835_SPI0_CS_CPOL 0x00000008
1145#define BCM2835_SPI0_CS_CPHA 0x00000004
1146#define BCM2835_SPI0_CS_CS 0x00000003
1218#define BCM2835_BSC_C 0x0000
1219#define BCM2835_BSC_S 0x0004
1220#define BCM2835_BSC_DLEN 0x0008
1221#define BCM2835_BSC_A 0x000c
1222#define BCM2835_BSC_FIFO 0x0010
1223#define BCM2835_BSC_DIV 0x0014
1224#define BCM2835_BSC_DEL 0x0018
1225#define BCM2835_BSC_CLKT 0x001c
1228#define BCM2835_BSC_C_I2CEN 0x00008000
1229#define BCM2835_BSC_C_INTR 0x00000400
1230#define BCM2835_BSC_C_INTT 0x00000200
1231#define BCM2835_BSC_C_INTD 0x00000100
1232#define BCM2835_BSC_C_ST 0x00000080
1233#define BCM2835_BSC_C_CLEAR_1 0x00000020
1234#define BCM2835_BSC_C_CLEAR_2 0x00000010
1235#define BCM2835_BSC_C_READ 0x00000001
1238#define BCM2835_BSC_S_CLKT 0x00000200
1239#define BCM2835_BSC_S_ERR 0x00000100
1240#define BCM2835_BSC_S_RXF 0x00000080
1241#define BCM2835_BSC_S_TXE 0x00000040
1242#define BCM2835_BSC_S_RXD 0x00000020
1243#define BCM2835_BSC_S_TXD 0x00000010
1244#define BCM2835_BSC_S_RXR 0x00000008
1245#define BCM2835_BSC_S_TXW 0x00000004
1246#define BCM2835_BSC_S_DONE 0x00000002
1247#define BCM2835_BSC_S_TA 0x00000001
1249#define BCM2835_BSC_FIFO_SIZE 16
1250#define BCM2835_AUX_SPI_FIFO_SIZE 4
1278#define BCM2835_SMI_CS 0
1279#define BCM2835_SMI_LENGTH 1
1280#define BCM2835_SMI_ADRS 2
1281#define BCM2835_SMI_DATA 3
1282#define BCM2835_SMI_READ0 4
1283#define BCM2835_SMI_WRITE0 5
1284#define BCM2835_SMI_READ1 6
1285#define BCM2835_SMI_WRITE1 7
1286#define BCM2835_SMI_READ2 8
1287#define BCM2835_SMI_WRITE2 9
1288#define BCM2835_SMI_READ3 10
1289#define BCM2835_SMI_WRITE3 11
1290#define BCM2835_SMI_DMAC 12
1291#define BCM2835_SMI_DIRCS 13
1292#define BCM2835_SMI_DIRADDR 14
1293#define BCM2835_SMI_DIRDATA 15
1296#define BCM2835_SMI_RW_WIDTH_MSK 0xC0000000
1297#define BCM2835_SMI_RW_WID8 0x00000000
1298#define BCM2835_SMI_RW_WID16 0x40000000
1299#define BCM2835_SMI_RW_WID18 0x80000000
1300#define BCM2835_SMI_RW_WID9 0xC0000000
1301#define BCM2835_SMI_RW_SETUP_MSK 0x3F000000
1302#define BCM2835_SMI_RW_SETUP_LS 24
1303#define BCM2835_SMI_RW_MODE68 0x00800000
1304#define BCM2835_SMI_RW_MODE80 0x00000000
1305#define BCM2835_SMI_READ_FSETUP 0x00400000
1306#define BCM2835_SMI_WRITE_SWAP 0x00400000
1307#define BCM2835_SMI_RW_HOLD_MSK 0x003F0000
1308#define BCM2835_SMI_RW_HOLD_LS 16
1309#define BCM2835_SMI_RW_PACEALL 0x00008000
1310#define BCM2835_SMI_RW_PACE_MSK 0x00007F00
1311#define BCM2835_SMI_RW_PACE_LS 8
1312#define BCM2835_SMI_RW_DREQ 0x00000080
1313#define BCM2835_SMI_RW_STROBE_MSK 0x0000007F
1314#define BCM2835_SMI_RW_STROBE_LS 0
1317#define BCM2835_SMI_DIRCS_ENABLE 0x00000001
1318#define BCM2835_SMI_DIRCS_START 0x00000002
1319#define BCM2835_SMI_DIRCS_DONE 0x00000004
1320#define BCM2835_SMI_DIRCS_WRITE 0x00000008
1323#define BCM2835_SMI_DIRADRS_DEV_MSK 0x00000300
1324#define BCM2835_SMI_DIRADRS_DEV_LS 8
1325#define BCM2835_SMI_DIRADRS_DEV0 0x00000000
1326#define BCM2835_SMI_DIRADRS_DEV1 0x00000100
1327#define BCM2835_SMI_DIRADRS_DEV2 0x00000200
1328#define BCM2835_SMI_DIRADRS_DEV3 0x00000300
1329#define BCM2835_SMI_DIRADRS_MSK 0x0000003F
1330#define BCM2835_SMI_DIRADRS_LS 0
1333#define SMICLK_CNTL (44)
1334#define SMICLK_DIV (45)
1348#define BCM2835_ST_CS 0x0000
1349#define BCM2835_ST_CLO 0x0004
1350#define BCM2835_ST_CHI 0x0008
1356#define BCM2835_PWM_CONTROL 0
1357#define BCM2835_PWM_STATUS 1
1358#define BCM2835_PWM_DMAC 2
1359#define BCM2835_PWM0_RANGE 4
1360#define BCM2835_PWM0_DATA 5
1361#define BCM2835_PWM_FIF1 6
1362#define BCM2835_PWM1_RANGE 8
1363#define BCM2835_PWM1_DATA 9
1366#define BCM2835_PWMCLK_CNTL 40
1367#define BCM2835_PWMCLK_DIV 41
1368#define BCM2835_PWM_PASSWRD (0x5A << 24)
1370#define BCM2835_PWM1_MS_MODE 0x8000
1371#define BCM2835_PWM1_USEFIFO 0x2000
1372#define BCM2835_PWM1_REVPOLAR 0x1000
1373#define BCM2835_PWM1_OFFSTATE 0x0800
1374#define BCM2835_PWM1_REPEATFF 0x0400
1375#define BCM2835_PWM1_SERIAL 0x0200
1376#define BCM2835_PWM1_ENABLE 0x0100
1378#define BCM2835_PWM0_MS_MODE 0x0080
1379#define BCM2835_PWM_CLEAR_FIFO 0x0040
1380#define BCM2835_PWM0_USEFIFO 0x0020
1381#define BCM2835_PWM0_REVPOLAR 0x0010
1382#define BCM2835_PWM0_OFFSTATE 0x0008
1383#define BCM2835_PWM0_REPEATFF 0x0004
1384#define BCM2835_PWM0_SERIAL 0x0002
1385#define BCM2835_PWM0_ENABLE 0x0001
1395 BCM2835_PWM_CLOCK_DIVIDER_2048 = 2048,
1396 BCM2835_PWM_CLOCK_DIVIDER_1024 = 1024,
1397 BCM2835_PWM_CLOCK_DIVIDER_512 = 512,
1398 BCM2835_PWM_CLOCK_DIVIDER_256 = 256,
1399 BCM2835_PWM_CLOCK_DIVIDER_128 = 128,
1400 BCM2835_PWM_CLOCK_DIVIDER_64 = 64,
1401 BCM2835_PWM_CLOCK_DIVIDER_32 = 32,
1402 BCM2835_PWM_CLOCK_DIVIDER_16 = 16,
1403 BCM2835_PWM_CLOCK_DIVIDER_8 = 8,
1404 BCM2835_PWM_CLOCK_DIVIDER_4 = 4,
1405 BCM2835_PWM_CLOCK_DIVIDER_2 = 2,
1406 BCM2835_PWM_CLOCK_DIVIDER_1 = 1
1407} bcm2835PWMClockDivider;
1410#ifndef BCM2835_NO_DELAY_COMPATIBILITY
1411#define delay(x) bcm2835_delay(x)
1412#define delayMicroseconds(x) bcm2835_delayMicroseconds(x)
2111 uint32_t setupcycles, uint32_t strobecycles,
2112 uint32_t holdcycles, uint32_t pacecycles);
2121 extern void bcm2835_smi_write (uint32_t smichannel, uint8_t data, uint32_t address);
volatile uint32_t * bcm2835_st
Definition bcm2835.c:61
volatile uint32_t * bcm2835_smi
Definition bcm2835.c:65
bcm2835PUDControl
bcm2835PUDControl Pullup/Pulldown defines for bcm2835_gpio_pud()
Definition bcm2835.h:919
bcm2835SPIBitOrder
bcm2835SPIBitOrder SPI Bit order Specifies the SPI data bit ordering for bcm2835_spi_setBitOrder()
Definition bcm2835.h:1152
bcm2835SPIChipSelect
bcm2835SPIChipSelect Specify the SPI chip select pin(s)
Definition bcm2835.h:1172
volatile uint32_t * bcm2835_pads
Definition bcm2835.c:57
bcm2835FunctionSelect
bcm2835PortFunction Port function select modes for bcm2835_gpio_fsel()
Definition bcm2835.h:903
volatile uint32_t * bcm2835_spi0
Definition bcm2835.c:58
volatile uint32_t * bcm2835_bsc1
Definition bcm2835.c:60
volatile uint32_t * bcm2835_bsc0
Definition bcm2835.c:59
RPiGPIOPin
GPIO Pin Numbers.
Definition bcm2835.h:971
volatile uint32_t * bcm2835_aux
Definition bcm2835.c:62
bcm2835SPIMode
SPI Data mode Specify the SPI data mode to be passed to bcm2835_spi_setDataMode()
Definition bcm2835.h:1161
uint32_t * bcm2835_peripherals
Definition bcm2835.c:50
volatile uint32_t * bcm2835_gpio
Definition bcm2835.c:54
bcm2835I2CClockDivider
bcm2835I2CClockDivider Specifies the divider used to generate the I2C clock from the system clock....
Definition bcm2835.h:1257
size_t bcm2835_peripherals_size
Definition bcm2835.c:46
bcm2835PadGroup
bcm2835PadGroup Pad group specification for bcm2835_gpio_pad()
Definition bcm2835.h:950
volatile uint32_t * bcm2835_spi1
Definition bcm2835.c:63
bcm2835I2CReasonCodes
bcm2835I2CReasonCodes Specifies the reason codes for the bcm2835_i2c_write and bcm2835_i2c_read funct...
Definition bcm2835.h:1268
volatile uint32_t * bcm2835_clk
Definition bcm2835.c:56
off_t bcm2835_peripherals_base
Definition bcm2835.c:45
volatile uint32_t * bcm2835_pwm
Definition bcm2835.c:55
bcm2835SPIClockDivider
bcm2835SPIClockDivider Specifies the divider used to generate the SPI clock from the system clock....
Definition bcm2835.h:1194
bcm2835RegisterBase
bcm2835RegisterBase Register bases for bcm2835_regbase()
Definition bcm2835.h:834
@ BCM2835_GPIO_PUD_DOWN
Definition bcm2835.h:921
@ BCM2835_GPIO_PUD_UP
Definition bcm2835.h:922
@ BCM2835_GPIO_PUD_OFF
Definition bcm2835.h:920
@ BCM2835_SPI_BIT_ORDER_LSBFIRST
Definition bcm2835.h:1153
@ BCM2835_SPI_BIT_ORDER_MSBFIRST
Definition bcm2835.h:1154
@ BCM2835_SPI_CS_NONE
Definition bcm2835.h:1176
@ BCM2835_SPI_CS2
Definition bcm2835.h:1175
@ BCM2835_SPI_CS1
Definition bcm2835.h:1174
@ BCM2835_SPI_CS0
Definition bcm2835.h:1173
@ BCM2835_GPIO_FSEL_ALT3
Definition bcm2835.h:909
@ BCM2835_GPIO_FSEL_MASK
Definition bcm2835.h:912
@ BCM2835_GPIO_FSEL_ALT1
Definition bcm2835.h:907
@ BCM2835_GPIO_FSEL_OUTP
Definition bcm2835.h:905
@ BCM2835_GPIO_FSEL_ALT5
Definition bcm2835.h:911
@ BCM2835_GPIO_FSEL_ALT2
Definition bcm2835.h:908
@ BCM2835_GPIO_FSEL_INPT
Definition bcm2835.h:904
@ BCM2835_GPIO_FSEL_ALT0
Definition bcm2835.h:906
@ BCM2835_GPIO_FSEL_ALT4
Definition bcm2835.h:910
@ RPI_GPIO_P1_26
Definition bcm2835.h:988
@ RPI_BPLUS_GPIO_J8_32
Definition bcm2835.h:1044
@ RPI_BPLUS_GPIO_J8_16
Definition bcm2835.h:1034
@ RPI_V2_GPIO_P5_04
Definition bcm2835.h:1020
@ RPI_GPIO_P1_03
Definition bcm2835.h:972
@ RPI_BPLUS_GPIO_J8_03
Definition bcm2835.h:1025
@ RPI_V2_GPIO_P1_13
Definition bcm2835.h:998
@ RPI_V2_GPIO_P1_24
Definition bcm2835.h:1006
@ RPI_V2_GPIO_P1_36
Definition bcm2835.h:1013
@ RPI_V2_GPIO_P5_03
Definition bcm2835.h:1019
@ RPI_GPIO_P1_07
Definition bcm2835.h:974
@ RPI_V2_GPIO_P1_03
Definition bcm2835.h:991
@ RPI_GPIO_P1_08
Definition bcm2835.h:975
@ RPI_GPIO_P1_18
Definition bcm2835.h:982
@ RPI_BPLUS_GPIO_J8_35
Definition bcm2835.h:1046
@ RPI_V2_GPIO_P1_07
Definition bcm2835.h:993
@ RPI_GPIO_P1_16
Definition bcm2835.h:981
@ RPI_BPLUS_GPIO_J8_08
Definition bcm2835.h:1028
@ RPI_V2_GPIO_P1_15
Definition bcm2835.h:999
@ RPI_V2_GPIO_P1_11
Definition bcm2835.h:996
@ RPI_V2_GPIO_P1_38
Definition bcm2835.h:1015
@ RPI_GPIO_P1_12
Definition bcm2835.h:978
@ RPI_BPLUS_GPIO_J8_11
Definition bcm2835.h:1030
@ RPI_BPLUS_GPIO_J8_05
Definition bcm2835.h:1026
@ RPI_GPIO_P1_22
Definition bcm2835.h:985
@ RPI_BPLUS_GPIO_J8_26
Definition bcm2835.h:1041
@ RPI_BPLUS_GPIO_J8_19
Definition bcm2835.h:1036
@ RPI_V2_GPIO_P1_32
Definition bcm2835.h:1010
@ RPI_V2_GPIO_P1_40
Definition bcm2835.h:1016
@ RPI_V2_GPIO_P5_06
Definition bcm2835.h:1022
@ RPI_BPLUS_GPIO_J8_18
Definition bcm2835.h:1035
@ RPI_GPIO_P1_05
Definition bcm2835.h:973
@ RPI_V2_GPIO_P1_19
Definition bcm2835.h:1002
@ RPI_V2_GPIO_P1_26
Definition bcm2835.h:1007
@ RPI_BPLUS_GPIO_J8_29
Definition bcm2835.h:1042
@ RPI_BPLUS_GPIO_J8_21
Definition bcm2835.h:1037
@ RPI_V2_GPIO_P1_08
Definition bcm2835.h:994
@ RPI_BPLUS_GPIO_J8_10
Definition bcm2835.h:1029
@ RPI_V2_GPIO_P1_18
Definition bcm2835.h:1001
@ RPI_V2_GPIO_P1_37
Definition bcm2835.h:1014
@ RPI_V2_GPIO_P1_05
Definition bcm2835.h:992
@ RPI_V2_GPIO_P1_35
Definition bcm2835.h:1012
@ RPI_GPIO_P1_19
Definition bcm2835.h:983
@ RPI_GPIO_P1_15
Definition bcm2835.h:980
@ RPI_BPLUS_GPIO_J8_40
Definition bcm2835.h:1050
@ RPI_BPLUS_GPIO_J8_12
Definition bcm2835.h:1031
@ RPI_V2_GPIO_P1_12
Definition bcm2835.h:997
@ RPI_BPLUS_GPIO_J8_24
Definition bcm2835.h:1040
@ RPI_GPIO_P1_23
Definition bcm2835.h:986
@ RPI_BPLUS_GPIO_J8_33
Definition bcm2835.h:1045
@ RPI_BPLUS_GPIO_J8_37
Definition bcm2835.h:1048
@ RPI_V2_GPIO_P1_33
Definition bcm2835.h:1011
@ RPI_V2_GPIO_P1_23
Definition bcm2835.h:1005
@ RPI_V2_GPIO_P1_29
Definition bcm2835.h:1008
@ RPI_V2_GPIO_P1_16
Definition bcm2835.h:1000
@ RPI_GPIO_P1_10
Definition bcm2835.h:976
@ RPI_V2_GPIO_P5_05
Definition bcm2835.h:1021
@ RPI_BPLUS_GPIO_J8_38
Definition bcm2835.h:1049
@ RPI_BPLUS_GPIO_J8_13
Definition bcm2835.h:1032
@ RPI_V2_GPIO_P1_21
Definition bcm2835.h:1003
@ RPI_BPLUS_GPIO_J8_36
Definition bcm2835.h:1047
@ RPI_V2_GPIO_P1_22
Definition bcm2835.h:1004
@ RPI_GPIO_P1_24
Definition bcm2835.h:987
@ RPI_GPIO_P1_11
Definition bcm2835.h:977
@ RPI_V2_GPIO_P1_10
Definition bcm2835.h:995
@ RPI_GPIO_P1_21
Definition bcm2835.h:984
@ RPI_BPLUS_GPIO_J8_07
Definition bcm2835.h:1027
@ RPI_BPLUS_GPIO_J8_15
Definition bcm2835.h:1033
@ RPI_V2_GPIO_P1_31
Definition bcm2835.h:1009
@ RPI_GPIO_P1_13
Definition bcm2835.h:979
@ RPI_BPLUS_GPIO_J8_22
Definition bcm2835.h:1038
@ RPI_BPLUS_GPIO_J8_23
Definition bcm2835.h:1039
@ RPI_BPLUS_GPIO_J8_31
Definition bcm2835.h:1043
@ BCM2835_SPI_MODE3
Definition bcm2835.h:1165
@ BCM2835_SPI_MODE0
Definition bcm2835.h:1162
@ BCM2835_SPI_MODE2
Definition bcm2835.h:1164
@ BCM2835_SPI_MODE1
Definition bcm2835.h:1163
@ BCM2835_I2C_CLOCK_DIVIDER_150
Definition bcm2835.h:1260
@ BCM2835_I2C_CLOCK_DIVIDER_626
Definition bcm2835.h:1259
@ BCM2835_I2C_CLOCK_DIVIDER_2500
Definition bcm2835.h:1258
@ BCM2835_I2C_CLOCK_DIVIDER_148
Definition bcm2835.h:1261
@ BCM2835_PAD_GROUP_GPIO_28_45
Definition bcm2835.h:952
@ BCM2835_PAD_GROUP_GPIO_46_53
Definition bcm2835.h:953
@ BCM2835_PAD_GROUP_GPIO_0_27
Definition bcm2835.h:951
@ BCM2835_I2C_REASON_ERROR_TIMEOUT
Definition bcm2835.h:1273
@ BCM2835_I2C_REASON_ERROR_NACK
Definition bcm2835.h:1270
@ BCM2835_I2C_REASON_ERROR_DATA
Definition bcm2835.h:1272
@ BCM2835_I2C_REASON_ERROR_CLKT
Definition bcm2835.h:1271
@ BCM2835_I2C_REASON_OK
Definition bcm2835.h:1269
@ BCM2835_SPI_CLOCK_DIVIDER_8192
Definition bcm2835.h:1198
@ BCM2835_SPI_CLOCK_DIVIDER_8
Definition bcm2835.h:1208
@ BCM2835_SPI_CLOCK_DIVIDER_1024
Definition bcm2835.h:1201
@ BCM2835_SPI_CLOCK_DIVIDER_1
Definition bcm2835.h:1211
@ BCM2835_SPI_CLOCK_DIVIDER_16384
Definition bcm2835.h:1197
@ BCM2835_SPI_CLOCK_DIVIDER_4
Definition bcm2835.h:1209
@ BCM2835_SPI_CLOCK_DIVIDER_128
Definition bcm2835.h:1204
@ BCM2835_SPI_CLOCK_DIVIDER_2
Definition bcm2835.h:1210
@ BCM2835_SPI_CLOCK_DIVIDER_256
Definition bcm2835.h:1203
@ BCM2835_SPI_CLOCK_DIVIDER_65536
Definition bcm2835.h:1195
@ BCM2835_SPI_CLOCK_DIVIDER_32
Definition bcm2835.h:1206
@ BCM2835_SPI_CLOCK_DIVIDER_64
Definition bcm2835.h:1205
@ BCM2835_SPI_CLOCK_DIVIDER_4096
Definition bcm2835.h:1199
@ BCM2835_SPI_CLOCK_DIVIDER_32768
Definition bcm2835.h:1196
@ BCM2835_SPI_CLOCK_DIVIDER_2048
Definition bcm2835.h:1200
@ BCM2835_SPI_CLOCK_DIVIDER_512
Definition bcm2835.h:1202
@ BCM2835_SPI_CLOCK_DIVIDER_16
Definition bcm2835.h:1207
@ BCM2835_REGBASE_PADS
Definition bcm2835.h:839
@ BCM2835_REGBASE_SPI0
Definition bcm2835.h:840
@ BCM2835_REGBASE_AUX
Definition bcm2835.h:843
@ BCM2835_REGBASE_CLK
Definition bcm2835.h:838
@ BCM2835_REGBASE_BSC0
Definition bcm2835.h:841
@ BCM2835_REGBASE_SPI1
Definition bcm2835.h:844
@ BCM2835_REGBASE_GPIO
Definition bcm2835.h:836
@ BCM2835_REGBASE_BSC1
Definition bcm2835.h:842
@ BCM2835_REGBASE_SMI
Definition bcm2835.h:846
@ BCM2835_REGBASE_PWM
Definition bcm2835.h:837
@ BCM2835_REGBASE_ST
Definition bcm2835.h:835
void bcm2835_gpio_pud(uint8_t pud)
Definition bcm2835.c:482
void bcm2835_gpio_clr_fen(uint8_t pin)
Definition bcm2835.c:408
void bcm2835_gpio_clr_multi(uint32_t mask)
Definition bcm2835.c:336
void bcm2835_gpio_write(uint8_t pin, uint8_t on)
Definition bcm2835.c:590
void bcm2835_gpio_pudclk(uint8_t pin, uint8_t on)
Definition bcm2835.c:498
void bcm2835_gpio_hen(uint8_t pin)
Definition bcm2835.c:417
void bcm2835_gpio_set(uint8_t pin)
Definition bcm2835.c:313
void bcm2835_gpio_clr_hen(uint8_t pin)
Definition bcm2835.c:424
void bcm2835_delay(unsigned int millis)
Definition bcm2835.c:539
uint8_t bcm2835_gpio_eds(uint8_t pin)
Definition bcm2835.c:354
void bcm2835_gpio_set_eds_multi(uint32_t mask)
Definition bcm2835.c:378
void bcm2835_gpio_ren(uint8_t pin)
Definition bcm2835.c:385
uint8_t bcm2835_gpio_lev(uint8_t pin)
Definition bcm2835.c:343
void bcm2835_gpio_clr_aren(uint8_t pin)
Definition bcm2835.c:456
void bcm2835_gpio_set_multi(uint32_t mask)
Definition bcm2835.c:329
void bcm2835_gpio_afen(uint8_t pin)
Definition bcm2835.c:465
void bcm2835_gpio_len(uint8_t pin)
Definition bcm2835.c:433
void bcm2835_gpio_clr_afen(uint8_t pin)
Definition bcm2835.c:473
void bcm2835_gpio_clr_ren(uint8_t pin)
Definition bcm2835.c:392
void bcm2835_gpio_set_pud(uint8_t pin, uint8_t pud)
Definition bcm2835.c:635
uint8_t bcm2835_gpio_get_pud(uint8_t pin)
Definition bcm2835.c:672
void bcm2835_gpio_aren(uint8_t pin)
Definition bcm2835.c:449
void bcm2835_gpio_write_mask(uint32_t value, uint32_t mask)
Definition bcm2835.c:608
uint32_t bcm2835_gpio_pad(uint8_t group)
Definition bcm2835.c:514
void bcm2835_gpio_set_eds(uint8_t pin)
Definition bcm2835.c:370
void bcm2835_gpio_clr_len(uint8_t pin)
Definition bcm2835.c:440
void bcm2835_gpio_write_multi(uint32_t mask, uint8_t on)
Definition bcm2835.c:599
void bcm2835_gpio_set_pad(uint8_t group, uint32_t control)
Definition bcm2835.c:527
void bcm2835_gpio_fen(uint8_t pin)
Definition bcm2835.c:401
void bcm2835_delayMicroseconds(uint64_t micros)
Definition bcm2835.c:549
uint32_t bcm2835_gpio_eds_multi(uint32_t mask)
Definition bcm2835.c:362
void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode)
Definition bcm2835.c:302
void bcm2835_gpio_clr(uint8_t pin)
Definition bcm2835.c:321
void bcm2835_i2c_end(void)
Definition bcm2835.c:1251
uint8_t bcm2835_i2c_read(char *buf, uint32_t len)
Definition bcm2835.c:1394
void bcm2835_i2c_setClockDivider(uint16_t divider)
Definition bcm2835.c:1279
void bcm2835_i2c_setSlaveAddress(uint8_t addr)
Definition bcm2835.c:1264
uint8_t bcm2835_i2c_write(const char *buf, uint32_t len)
Definition bcm2835.c:1304
int bcm2835_i2c_begin(void)
Definition bcm2835.c:1220
void bcm2835_i2c_set_baudrate(uint32_t baudrate)
Definition bcm2835.c:1295
uint8_t bcm2835_i2c_write_read_rs(char *cmds, uint32_t cmds_len, char *buf, uint32_t buf_len)
Definition bcm2835.c:1562
uint8_t bcm2835_i2c_read_register_rs(char *regaddr, char *buf, uint32_t len)
Definition bcm2835.c:1470
unsigned int bcm2835_version(void)
Definition bcm2835.c:195
int bcm2835_close(void)
Definition bcm2835.c:2167
int bcm2835_init(void)
Definition bcm2835.c:2012
void bcm2835_set_debug(uint8_t debug)
Definition bcm2835.c:190
void bcm2835_peri_set_bits(volatile uint32_t *paddr, uint32_t value, uint32_t mask)
Definition bcm2835.c:273
uint32_t bcm2835_peri_read_nb(volatile uint32_t *paddr)
Definition bcm2835.c:226
void bcm2835_peri_write_nb(volatile uint32_t *paddr, uint32_t value)
Definition bcm2835.c:257
uint32_t bcm2835_peri_read(volatile uint32_t *paddr)
Definition bcm2835.c:203
void bcm2835_peri_write(volatile uint32_t *paddr, uint32_t value)
Definition bcm2835.c:242
uint32_t * bcm2835_regbase(uint8_t regbase)
Definition bcm2835.c:157
void bcm2835_pwm_set_clock(uint32_t divisor)
Definition bcm2835.c:1904
void bcm2835_pwm_set_data(uint8_t channel, uint32_t data)
Definition bcm2835.c:1972
void bcm2835_pwm_set_mode(uint8_t channel, uint8_t markspace, uint8_t enabled)
Definition bcm2835.c:1923
void bcm2835_pwm_set_range(uint8_t channel, uint32_t range)
Definition bcm2835.c:1960
uint32_t bcm2835_smi_read(uint32_t smichannel, uint32_t address)
Definition bcm2835.c:1823
int bcm2835_smi_begin(void)
Definition bcm2835.c:1665
void bcm2835_smi_write(uint32_t smichannel, uint8_t data, uint32_t address)
Definition bcm2835.c:1792
void bcm2835_smi_end(void)
Definition bcm2835.c:1727
void bcm2835_smi_set_timing(uint32_t smichannel, uint32_t readchannel, uint32_t setupcycles, uint32_t strobecycles, uint32_t holdcycles, uint32_t pacecycles)
Definition bcm2835.c:1747
uint8_t bcm2835_aux_spi_transfer(uint8_t value)
Definition bcm2835.c:1186
void bcm2835_spi_setBitOrder(uint8_t order)
Definition bcm2835.c:737
void bcm2835_spi_transfern(char *buf, uint32_t len)
Definition bcm2835.c:893
int bcm2835_aux_spi_begin(void)
Definition bcm2835.c:950
void bcm2835_spi_chipSelect(uint8_t cs)
Definition bcm2835.c:898
void bcm2835_aux_spi_transfernb(const char *tbuf, char *rbuf, uint32_t len)
Definition bcm2835.c:1085
void bcm2835_spi_write(uint16_t data)
Definition bcm2835.c:913
uint16_t bcm2835_aux_spi_CalcClockDivider(uint32_t speed_hz)
Definition bcm2835.c:985
uint8_t bcm2835_spi_transfer(uint8_t value)
Definition bcm2835.c:768
void bcm2835_spi_writenb(const char *buf, uint32_t len)
Definition bcm2835.c:848
int bcm2835_spi_begin(void)
Definition bcm2835.c:703
void bcm2835_aux_spi_write(uint16_t data)
Definition bcm2835.c:1011
void bcm2835_spi_setDataMode(uint8_t mode)
Definition bcm2835.c:760
void bcm2835_spi_transfernb(char *tbuf, char *rbuf, uint32_t len)
Definition bcm2835.c:805
void bcm2835_spi_end(void)
Definition bcm2835.c:727
void bcm2835_aux_spi_setClockDivider(uint16_t divider)
Definition bcm2835.c:1006
void bcm2835_spi_set_speed_hz(uint32_t speed_hz)
Definition bcm2835.c:753
void bcm2835_spi_setClockDivider(uint16_t divider)
Definition bcm2835.c:747
void bcm2835_aux_spi_transfern(char *buf, uint32_t len)
Definition bcm2835.c:1181
void bcm2835_spi_setChipSelectPolarity(uint8_t cs, uint8_t active)
Definition bcm2835.c:905
void bcm2835_aux_spi_writenb(const char *buf, uint32_t len)
Definition bcm2835.c:1033
void bcm2835_aux_spi_end(void)
Definition bcm2835.c:974
uint64_t bcm2835_st_read(void)
Definition bcm2835.c:1860
void bcm2835_st_delay(uint64_t offset_micros, uint64_t micros)
Definition bcm2835.c:1894