[PATCH] bsp/atsam: Allow setting the drive strength.
Christian Mauderer
christian.mauderer at embedded-brains.de
Mon Mar 12 15:43:28 UTC 2018
This adds a simple function for setting the PIO drive strength.
---
bsps/arm/atsam/include/libchip/include/pio.h | 2 ++
.../lib/libbsp/arm/atsam/libraries/libchip/source/pio.c | 16 ++++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/bsps/arm/atsam/include/libchip/include/pio.h b/bsps/arm/atsam/include/libchip/include/pio.h
index 6cf463d1ec..1e24b7321c 100644
--- a/bsps/arm/atsam/include/libchip/include/pio.h
+++ b/bsps/arm/atsam/include/libchip/include/pio.h
@@ -209,6 +209,8 @@ extern void PIO_DisableWriteProtect(const Pin *pin);
extern void PIO_SetPinType(Pin *pin, uint8_t pinType);
extern uint32_t PIO_GetWriteProtectViolationInfo(const Pin *pin);
+
+extern void PIO_SetDriveStrength(const Pin *pin, uint8_t strength);
#ifdef __cplusplus
}
#endif
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/pio.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/pio.c
index e39825dfa5..d6df587464 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/pio.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/pio.c
@@ -481,3 +481,19 @@ void PIO_SetPinType(Pin *pin, uint8_t pinType)
pin->type = pinType;
}
+/**
+ * \brief Set the drive strength of the pin.
+ *
+ * \param pin Pointer to a Pin instance describing one or more pins.
+ * \param strength 0 for low drive strength or 1 for high drive strength.
+ */
+void PIO_SetDriveStrength(const Pin *pin, uint8_t strength)
+{
+ Pio *pio = pin->pio;
+
+ if (strength) {
+ pio->PIO_DRIVER |= pin->mask;
+ } else {
+ pio->PIO_DRIVER &= ~(pin->mask);
+ }
+}
--
2.13.6
More information about the devel
mailing list