RTEMS  5.0.0
twi.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------- */
2 /* Atmel Microcontroller Software Support */
3 /* SAM Software Package License */
4 /* ---------------------------------------------------------------------------- */
5 /* Copyright (c) 2015, Atmel Corporation */
6 /* */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without */
10 /* modification, are permitted provided that the following condition is met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, */
13 /* this list of conditions and the disclaimer below. */
14 /* */
15 /* Atmel's name may not be used to endorse or promote products derived from */
16 /* this software without specific prior written permission. */
17 /* */
18 /* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
19 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
21 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
22 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
24 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
25 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
26 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28 /* ---------------------------------------------------------------------------- */
29 
37 #ifndef _TWI_
38 #define _TWI_
39 
40 /*------------------------------------------------------------------------------
41  * Headers
42  *----------------------------------------------------------------------------*/
43 
44 #include "chip.h"
45 
46 #include <stdint.h>
47 
48 /*----------------------------------------------------------------------------
49  * Macros
50  *----------------------------------------------------------------------------*/
51 /* Returns 1 if the TXRDY bit (ready to transmit data) is set in the given
52  status register value.*/
53 #define TWI_STATUS_TXRDY(status) ((status & TWIHS_SR_TXRDY) == TWIHS_SR_TXRDY)
54 
55 /* Returns 1 if the RXRDY bit (ready to receive data) is set in the given
56  status register value.*/
57 #define TWI_STATUS_RXRDY(status) ((status & TWIHS_SR_RXRDY) == TWIHS_SR_RXRDY)
58 
59 /* Returns 1 if the TXCOMP bit (transfer complete) is set in the given
60  status register value.*/
61 #define TWI_STATUS_TXCOMP(status) ((status & TWIHS_SR_TXCOMP) == TWIHS_SR_TXCOMP)
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
67 /*----------------------------------------------------------------------------
68  * External function
69  *----------------------------------------------------------------------------*/
70 
71 extern void TWI_ConfigureMaster(Twihs *pTwi, uint32_t twck, uint32_t mck);
72 
73 extern void TWI_ConfigureSlave(Twihs *pTwi, uint8_t slaveAddress);
74 
75 extern void TWI_Stop(Twihs *pTwi);
76 
77 extern void TWI_StartRead(
78  Twihs *pTwi,
79  uint8_t address,
80  uint32_t iaddress,
81  uint8_t isize);
82 
83 extern uint8_t TWI_ReadByte(Twihs *pTwi);
84 
85 extern void TWI_WriteByte(Twihs *pTwi, uint8_t byte);
86 
87 extern void TWI_StartWrite(
88  Twihs *pTwi,
89  uint8_t address,
90  uint32_t iaddress,
91  uint8_t isize,
92  uint8_t byte);
93 
94 extern uint8_t TWI_ByteReceived(Twihs *pTwi);
95 
96 extern uint8_t TWI_ByteSent(Twihs *pTwi);
97 
98 extern uint8_t TWI_TransferComplete(Twihs *pTwi);
99 
100 extern void TWI_EnableIt(Twihs *pTwi, uint32_t sources);
101 
102 extern void TWI_DisableIt(Twihs *pTwi, uint32_t sources);
103 
104 extern uint32_t TWI_GetStatus(Twihs *pTwi);
105 
106 extern uint32_t TWI_GetMaskedStatus(Twihs *pTwi);
107 
108 extern void TWI_SendSTOPCondition(Twihs *pTwi);
109 
110 #ifdef __cplusplus
111 }
112 #endif
113 
114 #endif /* #ifndef _TWI_ */
uint8_t TWI_TransferComplete(Twihs *pTwi)
Check if current transmission is completed.
Definition: twi.c:307
void TWI_WriteByte(Twihs *pTwi, uint8_t byte)
Sends a byte of data to one of the TWI slaves on the bus.
Definition: twi.c:237
void TWI_DisableIt(Twihs *pTwi, uint32_t sources)
Disables the selected interrupts sources on a TWI peripheral.
Definition: twi.c:330
uint8_t TWI_ReadByte(Twihs *pTwi)
Reads a byte from the TWI bus. The read operation must have been started using TWI_StartRead() and a ...
Definition: twi.c:222
void TWI_ConfigureSlave(Twihs *pTwi, uint8_t slaveAddress)
Configures a TWI peripheral to operate in slave mode.
Definition: twi.c:151
uint8_t TWI_ByteSent(Twihs *pTwi)
Check if a byte have been sent to TWI.
Definition: twi.c:296
uint32_t TWI_GetStatus(Twihs *pTwi)
Get the current status register of the given TWI peripheral.
Definition: twi.c:345
uint8_t TWI_ByteReceived(Twihs *pTwi)
Check if a byte have been received from TWI.
Definition: twi.c:285
void TWI_EnableIt(Twihs *pTwi, uint32_t sources)
Enables the selected interrupts sources on a TWI peripheral.
Definition: twi.c:317
void TWI_SendSTOPCondition(Twihs *pTwi)
Sends a STOP condition. STOP Condition is sent just after completing the current byte transmission in...
Definition: twi.c:376
uint32_t TWI_GetMaskedStatus(Twihs *pTwi)
Returns the current status register of the given TWI peripheral, but masking interrupt sources which ...
Definition: twi.c:359
Twihs hardware registers.
Definition: component_twihs.h:41
void TWI_StartRead(Twihs *pTwi, uint8_t address, uint32_t iaddress, uint8_t isize)
Starts a read operation on the TWI bus with the specified slave, it returns immediately. Data must then be read using TWI_ReadByte() whenever a byte is available (poll using TWI_ByteReceived()).
Definition: twi.c:188
void TWI_ConfigureMaster(Twihs *pTwi, uint32_t twck, uint32_t mck)
Configures a TWI peripheral to operate in master mode, at the given frequency (in Hz)...
Definition: twi.c:112
void TWI_Stop(Twihs *pTwi)
Sends a STOP condition on the TWI.
Definition: twi.c:172
void TWI_StartWrite(Twihs *pTwi, uint8_t address, uint32_t iaddress, uint8_t isize, uint8_t byte)
Starts a write operation on the TWI to access the selected slave, then returns immediately. A byte of data must be provided to start the write; other bytes are written next. after that to send the remaining bytes.
Definition: twi.c:255