bcm2835 1.77
Loading...
Searching...
No Matches
bcm2835.h
1/* bcm2835.h
2
3 C and C++ support for Broadcom BCM 2835 as used in Raspberry Pi
4
5 Author: Mike McCauley
6 Copyright (C) 2011-2013 Mike McCauley
7 $Id: bcm2835.h,v 1.26 2020/01/11 05:07:13 mikem Exp mikem $
8*/
9
668/* Defines for BCM2835 */
669#ifndef BCM2835_H
670#define BCM2835_H
671
672#include <stdint.h>
673
674/* Some compilers need this, as reported by Sam James */
675#include <sys/types.h>
676/* Needed to compile with gcc -std=c99, as reported by John Blaiklock.*/
677#include <fcntl.h>
678
679#define BCM2835_VERSION 10077 /* Version 1.77 */
680
681// Define this if you want to use libcap2 to determine if you have the cap_sys_rawio capability
682// and therefore the capability of opening /dev/mem, even if you are not root.
683// See the comments above in the documentation for 'Running As Root'
684//#define BCM2835_HAVE_LIBCAP
685
686/* RPi 2 is ARM v7, and has DMB instruction for memory barriers.
687 Older RPis are ARM v6 and don't, so a coprocessor instruction must be used instead.
688 However, not all versions of gcc in all distros support the dmb assembler instruction even on compatible processors.
689 This test is so any ARMv7 or higher processors with suitable GCC will use DMB.
690*/
691#if __ARM_ARCH >= 7
692#define BCM2835_HAVE_DMB
693#endif
694
701#define HIGH 0x1
703#define LOW 0x0
704
706#ifndef MIN
707#define MIN(a, b) (a < b ? a : b)
708#endif
709
711#define BCM2835_CORE_CLK_HZ 250000000
714#define BMC2835_RPI2_DT_FILENAME "/proc/device-tree/soc/ranges"
715
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
732
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
757
758/* BEB */
760#define BCM2835_SMI_BASE 0x600000
761
762#include <stdlib.h>
763
767extern off_t bcm2835_peripherals_base;
769extern size_t bcm2835_peripherals_size;
770
772extern uint32_t *bcm2835_peripherals;
773
777extern volatile uint32_t *bcm2835_st;
778
782extern volatile uint32_t *bcm2835_gpio;
783
787extern volatile uint32_t *bcm2835_pwm;
788
792extern volatile uint32_t *bcm2835_clk;
793
797extern volatile uint32_t *bcm2835_pads;
798
802extern volatile uint32_t *bcm2835_spi0;
803
807extern volatile uint32_t *bcm2835_bsc0;
808
812extern volatile uint32_t *bcm2835_bsc1;
813
817extern volatile uint32_t *bcm2835_aux;
818
822extern volatile uint32_t *bcm2835_spi1;
823
824/* BEB */
828extern volatile uint32_t *bcm2835_smi;
829
849
851#define BCM2835_PAGE_SIZE (4*1024)
853#define BCM2835_BLOCK_SIZE (4*1024)
854
855
856/* Defines for GPIO
857 The BCM2835 has 54 GPIO pins.
858 BCM2835 data sheet, Page 90 onwards.
859*/
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
893/* 2711 has a different method for pin pull-up/down/enable */
894#define BCM2835_GPPUPPDN0 0x00e4 /* Pin pull-up/down for pins 15:0 */
895#define BCM2835_GPPUPPDN1 0x00e8 /* Pin pull-up/down for pins 31:16 */
896#define BCM2835_GPPUPPDN2 0x00ec /* Pin pull-up/down for pins 47:32 */
897#define BCM2835_GPPUPPDN3 0x00f0 /* Pin pull-up/down for pins 57:48 */
898
914
924
925/* need a value for pud functions that can't work unless RPI 4 */
926#define BCM2835_GPIO_PUD_ERROR 0x08
927
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
955
970typedef enum
971{
990 /* RPi Version 2 */
1018 /* RPi Version 2, new plug P5 */
1024 /* RPi B+ J8 header, also RPi 2 40 pin GPIO header */
1052
1053/* Defines for AUX
1054 GPIO register offsets from BCM2835_AUX_BASE.
1055*/
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
1109/* Defines for SPI
1110 GPIO register offsets from BCM2835_SPI0_BASE.
1111 Offsets into the SPI Peripheral block in bytes per 10.5 SPI Register Map
1112*/
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
1120/* Register masks for SPI0_CS */
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
1156
1167
1178
1213
1214/* Defines for I2C
1215 GPIO register offsets from BCM2835_BSC*_BASE.
1216 Offsets into the BSC Peripheral block in bytes per 3.1 BSC Register Map
1217*/
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
1227/* Register masks for BSC_C */
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
1237/* Register masks for BSC_S */
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
1251
1263
1276
1277/* Registers offets from BCM2835_SMI_BASE */
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
1295/* Register masks for SMI_READ and SMI_WRITE */
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
1316/* Registers masks for Direct Access control register */
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
1322/* Registers masks for Direct Access address register */
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
1332/* SMI clock control registers : defined as offset from bcm2835_clk */
1333#define SMICLK_CNTL (44) /* = 0xB0 */
1334#define SMICLK_DIV (45) /* = 0xB4 */
1335
1336
1337/* Defines for ST
1338 GPIO register offsets from BCM2835_ST_BASE.
1339 Offsets into the ST Peripheral block in bytes per 12.1 System Timer Registers
1340 The System Timer peripheral provides four 32-bit timer channels and a single 64-bit free running counter.
1341 BCM2835_ST_CLO is the System Timer Counter Lower bits register.
1342 The system timer free-running counter lower register is a read-only register that returns the current value
1343 of the lower 32-bits of the free running counter.
1344 BCM2835_ST_CHI is the System Timer Counter Upper bits register.
1345 The system timer free-running counter upper register is a read-only register that returns the current value
1346 of the upper 32-bits of the free running counter.
1347*/
1348#define BCM2835_ST_CS 0x0000
1349#define BCM2835_ST_CLO 0x0004
1350#define BCM2835_ST_CHI 0x0008
1355/* Defines for PWM, word offsets (ie 4 byte multiples) */
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
1364
1365/* Defines for PWM Clock, word offsets (ie 4 byte multiples) */
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
1393typedef enum
1394{
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;
1408
1409/* Historical name compatibility */
1410#ifndef BCM2835_NO_DELAY_COMPATIBILITY
1411#define delay(x) bcm2835_delay(x)
1412#define delayMicroseconds(x) bcm2835_delayMicroseconds(x)
1413#endif
1414
1415#ifdef __cplusplus
1416extern "C" {
1417#endif
1418
1437 extern int bcm2835_init(void);
1438
1442 extern int bcm2835_close(void);
1443
1451 extern void bcm2835_set_debug(uint8_t debug);
1452
1456 extern unsigned int bcm2835_version(void);
1457
1473 extern uint32_t* bcm2835_regbase(uint8_t regbase);
1474
1483 extern uint32_t bcm2835_peri_read(volatile uint32_t* paddr);
1484
1495 extern uint32_t bcm2835_peri_read_nb(volatile uint32_t* paddr);
1496
1497
1509 extern void bcm2835_peri_write(volatile uint32_t* paddr, uint32_t value);
1510
1523 extern void bcm2835_peri_write_nb(volatile uint32_t* paddr, uint32_t value);
1524
1537 extern void bcm2835_peri_set_bits(volatile uint32_t* paddr, uint32_t value, uint32_t mask);
1551 extern void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode);
1552
1558 extern void bcm2835_gpio_set(uint8_t pin);
1559
1565 extern void bcm2835_gpio_clr(uint8_t pin);
1566
1572 extern void bcm2835_gpio_set_multi(uint32_t mask);
1573
1579 extern void bcm2835_gpio_clr_multi(uint32_t mask);
1580
1587 extern uint8_t bcm2835_gpio_lev(uint8_t pin);
1588
1597 extern uint8_t bcm2835_gpio_eds(uint8_t pin);
1598
1604 extern uint32_t bcm2835_gpio_eds_multi(uint32_t mask);
1605
1611 extern void bcm2835_gpio_set_eds(uint8_t pin);
1612
1617 extern void bcm2835_gpio_set_eds_multi(uint32_t mask);
1618
1627 extern void bcm2835_gpio_ren(uint8_t pin);
1628
1632 extern void bcm2835_gpio_clr_ren(uint8_t pin);
1633
1642 extern void bcm2835_gpio_fen(uint8_t pin);
1643
1647 extern void bcm2835_gpio_clr_fen(uint8_t pin);
1648
1653 extern void bcm2835_gpio_hen(uint8_t pin);
1654
1658 extern void bcm2835_gpio_clr_hen(uint8_t pin);
1659
1664 extern void bcm2835_gpio_len(uint8_t pin);
1665
1669 extern void bcm2835_gpio_clr_len(uint8_t pin);
1670
1677 extern void bcm2835_gpio_aren(uint8_t pin);
1678
1682 extern void bcm2835_gpio_clr_aren(uint8_t pin);
1683
1690 extern void bcm2835_gpio_afen(uint8_t pin);
1691
1695 extern void bcm2835_gpio_clr_afen(uint8_t pin);
1696
1705 extern void bcm2835_gpio_pud(uint8_t pud);
1706
1717 extern void bcm2835_gpio_pudclk(uint8_t pin, uint8_t on);
1718
1724 extern uint32_t bcm2835_gpio_pad(uint8_t group);
1725
1733 extern void bcm2835_gpio_set_pad(uint8_t group, uint32_t control);
1734
1745 extern void bcm2835_delay (unsigned int millis);
1746
1760 extern void bcm2835_delayMicroseconds (uint64_t micros);
1761
1766 extern void bcm2835_gpio_write(uint8_t pin, uint8_t on);
1767
1772 extern void bcm2835_gpio_write_multi(uint32_t mask, uint8_t on);
1773
1778 extern void bcm2835_gpio_write_mask(uint32_t value, uint32_t mask);
1779
1785 extern void bcm2835_gpio_set_pud(uint8_t pin, uint8_t pud);
1786
1793 extern uint8_t bcm2835_gpio_get_pud(uint8_t pin);
1794
1811 extern int bcm2835_spi_begin(void);
1812
1817 extern void bcm2835_spi_end(void);
1818
1826 extern void bcm2835_spi_setBitOrder(uint8_t order);
1827
1833 extern void bcm2835_spi_setClockDivider(uint16_t divider);
1834
1839 extern void bcm2835_spi_set_speed_hz(uint32_t speed_hz);
1840
1846 extern void bcm2835_spi_setDataMode(uint8_t mode);
1847
1854 extern void bcm2835_spi_chipSelect(uint8_t cs);
1855
1864 extern void bcm2835_spi_setChipSelectPolarity(uint8_t cs, uint8_t active);
1865
1876 extern uint8_t bcm2835_spi_transfer(uint8_t value);
1877
1889 extern void bcm2835_spi_transfernb(char* tbuf, char* rbuf, uint32_t len);
1890
1898 extern void bcm2835_spi_transfern(char* buf, uint32_t len);
1899
1906 extern void bcm2835_spi_writenb(const char* buf, uint32_t len);
1907
1916 extern void bcm2835_spi_write(uint16_t data);
1917
1923 extern int bcm2835_aux_spi_begin(void);
1924
1929 extern void bcm2835_aux_spi_end(void);
1930
1934 extern void bcm2835_aux_spi_setClockDivider(uint16_t divider);
1935
1941 extern uint16_t bcm2835_aux_spi_CalcClockDivider(uint32_t speed_hz);
1942
1949 extern void bcm2835_aux_spi_write(uint16_t data);
1950
1956 extern void bcm2835_aux_spi_writenb(const char *buf, uint32_t len);
1957
1965 extern void bcm2835_aux_spi_transfern(char *buf, uint32_t len);
1966
1975 extern void bcm2835_aux_spi_transfernb(const char *tbuf, char *rbuf, uint32_t len);
1976
1984 extern uint8_t bcm2835_aux_spi_transfer(uint8_t value);
1985
2002 extern int bcm2835_i2c_begin(void);
2003
2008 extern void bcm2835_i2c_end(void);
2009
2013 extern void bcm2835_i2c_setSlaveAddress(uint8_t addr);
2014
2019 extern void bcm2835_i2c_setClockDivider(uint16_t divider);
2020
2027 extern void bcm2835_i2c_set_baudrate(uint32_t baudrate);
2028
2035 extern uint8_t bcm2835_i2c_write(const char * buf, uint32_t len);
2036
2043 extern uint8_t bcm2835_i2c_read(char* buf, uint32_t len);
2044
2059 extern uint8_t bcm2835_i2c_read_register_rs(char* regaddr, char* buf, uint32_t len);
2060
2071 extern uint8_t bcm2835_i2c_write_read_rs(char* cmds, uint32_t cmds_len, char* buf, uint32_t buf_len);
2072
2089 extern int bcm2835_smi_begin (void);
2090
2095 extern void bcm2835_smi_end (void);
2096
2110 extern void bcm2835_smi_set_timing(uint32_t smichannel, uint32_t readchannel,
2111 uint32_t setupcycles, uint32_t strobecycles,
2112 uint32_t holdcycles, uint32_t pacecycles);
2113
2121 extern void bcm2835_smi_write (uint32_t smichannel, uint8_t data, uint32_t address);
2122
2130 extern uint32_t bcm2835_smi_read (uint32_t smichannel, uint32_t address);
2131
2143 extern uint64_t bcm2835_st_read(void);
2144
2149 extern void bcm2835_st_delay(uint64_t offset_micros, uint64_t micros);
2150
2166 extern void bcm2835_pwm_set_clock(uint32_t divisor);
2167
2174 extern void bcm2835_pwm_set_mode(uint8_t channel, uint8_t markspace, uint8_t enabled);
2175
2181 extern void bcm2835_pwm_set_range(uint8_t channel, uint32_t range);
2182
2189 extern void bcm2835_pwm_set_data(uint8_t channel, uint32_t data);
2190
2192#ifdef __cplusplus
2193}
2194#endif
2195
2196#endif /* BCM2835_H */
2197
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