RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
64extern "C" {
65#endif
66
67/*----------------------------------------------------------------------------
68 * External function
69 *----------------------------------------------------------------------------*/
70
71extern void TWI_ConfigureMaster(Twihs *pTwi, uint32_t twck, uint32_t mck);
72
73extern void TWI_ConfigureSlave(Twihs *pTwi, uint8_t slaveAddress);
74
75extern void TWI_Stop(Twihs *pTwi);
76
77extern void TWI_StartRead(
78 Twihs *pTwi,
79 uint8_t address,
80 uint32_t iaddress,
81 uint8_t isize);
82
83extern uint8_t TWI_ReadByte(Twihs *pTwi);
84
85extern void TWI_WriteByte(Twihs *pTwi, uint8_t byte);
86
87extern void TWI_StartWrite(
88 Twihs *pTwi,
89 uint8_t address,
90 uint32_t iaddress,
91 uint8_t isize,
92 uint8_t byte);
93
94extern uint8_t TWI_ByteReceived(Twihs *pTwi);
95
96extern uint8_t TWI_ByteSent(Twihs *pTwi);
97
98extern uint8_t TWI_TransferComplete(Twihs *pTwi);
99
100extern void TWI_EnableIt(Twihs *pTwi, uint32_t sources);
101
102extern void TWI_DisableIt(Twihs *pTwi, uint32_t sources);
103
104extern uint32_t TWI_GetStatus(Twihs *pTwi);
105
106extern uint32_t TWI_GetMaskedStatus(Twihs *pTwi);
107
108extern void TWI_SendSTOPCondition(Twihs *pTwi);
109
110#ifdef __cplusplus
111}
112#endif
113
114#endif /* #ifndef _TWI_ */
uint8_t TWI_ByteReceived(Twihs *pTwi)
Check if a byte have been received from TWI.
Definition: twi.c:285
uint32_t TWI_GetStatus(Twihs *pTwi)
Get the current status register of the given TWI peripheral.
Definition: twi.c:345
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....
Definition: twi.c:188
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
uint8_t TWI_TransferComplete(Twihs *pTwi)
Check if current transmission is completed.
Definition: twi.c:307
uint8_t TWI_ByteSent(Twihs *pTwi)
Check if a byte have been sent to TWI.
Definition: twi.c:296
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....
Definition: twi.c:255
void TWI_EnableIt(Twihs *pTwi, uint32_t sources)
Enables the selected interrupts sources on a TWI peripheral.
Definition: twi.c:317
void TWI_Stop(Twihs *pTwi)
Sends a STOP condition on the TWI.
Definition: twi.c:172
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_DisableIt(Twihs *pTwi, uint32_t sources)
Disables the selected interrupts sources on a TWI peripheral.
Definition: twi.c:330
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_SendSTOPCondition(Twihs *pTwi)
Sends a STOP condition. STOP Condition is sent just after completing the current byte transmission in...
Definition: twi.c:376
void TWI_ConfigureSlave(Twihs *pTwi, uint8_t slaveAddress)
Configures a TWI peripheral to operate in slave mode.
Definition: twi.c:151
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