summaryrefslogtreecommitdiff
path: root/tests/i2c-master/hw.h
blob: 8b235be143134f2c1ec51a3ac21e89a325cd6ce9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * Feb 2017 Karl Palsson <karlp@tweak.net.au>
 */

#include <stdbool.h>
#include <stdint.h>

#pragma once

struct hw_detail
{
       uint32_t periph; /* eg: I2C1 */
       uint32_t periph_rcc; /* eg: RCC_I2C1 */
       uint32_t periph_rst; /* eg: RST_I2C1 */
       uint32_t pins; /* eg: GPIO8 | GPIO9 */ /* ASSUMES SAME PORT*/
       uint32_t port; /* eg GPIOB */
       uint32_t port_rcc; /* eg RCC_GPIOB */
       uint32_t trigger_rcc;
       uint32_t trigger_port;
       uint32_t trigger_pin;
       int i2c_clock_megahz; /* eg 42 for APB1 on an F4@168Mhz */
};

extern struct hw_detail hw_details;

#ifdef __cplusplus
extern "C" {
#endif

/**
        * Expected to setup clocks, turn on all peripherals, and configure
        * any gpios necessary.
        * @param hw pointer to hw details necessary
        */
       void hw_setup(struct hw_detail* hw);

       /* let devices have a status led */
       void hw_set_led(bool val);

#ifdef __cplusplus
}
#endif