aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32f0/gpio.h
diff options
context:
space:
mode:
authorEugene Krashtan <Eugene.Krashtan@opensynergy.com>2019-03-13 17:39:46 +0200
committerKevin O'Connor <kevin@koconnor.net>2019-03-24 12:10:19 -0400
commit45f0ea29a6f79d500a902d8f73da65d1d230f902 (patch)
tree44b550713f83b7d69979da2464b12579a707affe /src/stm32f0/gpio.h
parentb79db3e3d6d16e25af6483a6064cd3691387a1c8 (diff)
downloadkutter-45f0ea29a6f79d500a902d8f73da65d1d230f902.tar.gz
kutter-45f0ea29a6f79d500a902d8f73da65d1d230f902.tar.xz
kutter-45f0ea29a6f79d500a902d8f73da65d1d230f902.zip
stm32f0: SPI and i2c interfaces added
Signed-off-by: Eugene Krashtan <eug.krashtan@gmail.com>
Diffstat (limited to 'src/stm32f0/gpio.h')
-rw-r--r--src/stm32f0/gpio.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/stm32f0/gpio.h b/src/stm32f0/gpio.h
new file mode 100644
index 00000000..7127a496
--- /dev/null
+++ b/src/stm32f0/gpio.h
@@ -0,0 +1,55 @@
+#ifndef __GENERIC_GPIO_H
+#define __GENERIC_GPIO_H
+
+#include <stdint.h> // uint8_t
+
+struct gpio_out {
+ uint8_t pin;
+};
+struct gpio_out gpio_out_setup(uint8_t pin, uint8_t val);
+void gpio_out_reset(struct gpio_out g, uint8_t val);
+void gpio_out_toggle_noirq(struct gpio_out g);
+void gpio_out_toggle(struct gpio_out g);
+void gpio_out_write(struct gpio_out g, uint8_t val);
+
+struct gpio_in {
+ uint8_t pin;
+};
+struct gpio_in gpio_in_setup(uint8_t pin, int8_t pull_up);
+void gpio_in_reset(struct gpio_in g, int8_t pull_up);
+uint8_t gpio_in_read(struct gpio_in g);
+
+struct gpio_pwm {
+ uint8_t pin;
+};
+struct gpio_pwm gpio_pwm_setup(uint8_t pin, uint32_t cycle_time, uint8_t val);
+void gpio_pwm_write(struct gpio_pwm g, uint8_t val);
+
+struct gpio_adc {
+ uint8_t pin;
+};
+struct gpio_adc gpio_adc_setup(uint8_t pin);
+uint32_t gpio_adc_sample(struct gpio_adc g);
+uint16_t gpio_adc_read(struct gpio_adc g);
+void gpio_adc_cancel_sample(struct gpio_adc g);
+
+struct spi_config {
+ uint32_t cfg;
+};
+struct spi_config spi_setup(uint32_t bus, uint8_t mode, uint32_t rate);
+void spi_prepare(struct spi_config config);
+void spi_transfer(struct spi_config config, uint8_t receive_data
+ , uint8_t len, uint8_t *data);
+
+struct i2c_config {
+ uint8_t addr;
+};
+
+struct i2c_config i2c_setup(uint32_t bus, uint32_t rate, uint8_t addr);
+void i2c_write(struct i2c_config config, uint8_t write_len, uint8_t *write);
+void i2c_read(struct i2c_config config, uint8_t reg_len, uint8_t *reg
+ , uint8_t read_len, uint8_t *read);
+
+void gpio_check_busy(uint8_t pin);
+
+#endif // gpio.h