SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
sam_twi/twi_slave.h
Go to the documentation of this file.
1
33/*
34 * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a>
35 */
36
37#ifndef _TWI_SLAVE_H_
38#define _TWI_SLAVE_H_
39
40#include "twi.h"
41#include "sysclk.h"
42
44
45static inline void twi_slave_setup(twi_slave_t p_twi, uint32_t dw_device_addr)
46{
47#if SAMG55
48 if (p_twi == TWI0) {
49 sysclk_enable_peripheral_clock(ID_FLEXCOM0);
50 } else if (p_twi == TWI1) {
51 sysclk_enable_peripheral_clock(ID_FLEXCOM1);
52 } else if (p_twi == TWI2) {
53 sysclk_enable_peripheral_clock(ID_FLEXCOM2);
54 } else if (p_twi == TWI3) {
55 sysclk_enable_peripheral_clock(ID_FLEXCOM3);
56 } else if (p_twi == TWI4) {
57 sysclk_enable_peripheral_clock(ID_FLEXCOM4);
58 } else if (p_twi == TWI5) {
59 sysclk_enable_peripheral_clock(ID_FLEXCOM5);
60 } else if (p_twi == TWI6) {
61 sysclk_enable_peripheral_clock(ID_FLEXCOM6);
62#ifdef _SAMG55_FLEXCOM7_INSTANCE_
63 } else if (p_twi == TWI7) {
64 sysclk_enable_peripheral_clock(ID_FLEXCOM7);
65#endif /* _SAMG55_FLEXCOM7_INSTANCE_*/
66 } else {
67 // Do Nothing
68 }
69#else
70#if (!(SAMG51 || SAMG53 || SAMG54))
71 if (p_twi == TWI0) {
72 sysclk_enable_peripheral_clock(ID_TWI0);
73 } else
74#endif
75 if (p_twi == TWI1) {
76 sysclk_enable_peripheral_clock(ID_TWI1);
77#if (SAM4N || SAMG)
78 } else if (p_twi == TWI2) {
79 sysclk_enable_peripheral_clock(ID_TWI2);
80#endif
81 } else {
82 // Do Nothing
83 }
84#endif
85
86 twi_slave_init(p_twi, dw_device_addr);
87}
88
89#define twi_slave_enable(p_twi) twi_enable_slave_mode(p_twi)
90
91#define twi_slave_disable(p_twi) twi_disable_slave_mode(p_twi)
92
93#endif // _TWI_SLAVE_H_
void twi_slave_init(Twi *p_twi, uint32_t ul_device_addr)
Initialize TWI slave mode.
Definition twi.c:513
Twi * twi_slave_t
This type can be used independently to refer to TWI slave module for the architecture used.
#define TWI0
(TWI0 ) Base Address
Definition sam4sd32c.h:419
#define ID_TWI1
Two Wire Interface 1 (TWI1).
Definition sam4sd32c.h:338
#define TWI1
(TWI1 ) Base Address
Definition sam4sd32c.h:421
#define ID_TWI0
Two Wire Interface 0 (TWI0).
Definition sam4sd32c.h:337
static void twi_slave_setup(twi_slave_t p_twi, uint32_t dw_device_addr)
Twi hardware registers.
Two-Wire Interface (TWI) driver for SAM.