7 #ifndef __MSP430WARE_EUSCI_B_I2C_H__
8 #define __MSP430WARE_EUSCI_B_I2C_H__
10 #include "inc/hw_memmap.h"
12 #ifdef __MSP430_HAS_EUSCI_Bx__
25 #include "inc/hw_memmap.h"
85 #define EUSCI_B_I2C_NO_AUTO_STOP UCASTP_0
86 #define EUSCI_B_I2C_SET_BYTECOUNT_THRESHOLD_FLAG UCASTP_1
87 #define EUSCI_B_I2C_SEND_STOP_AUTOMATICALLY_ON_BYTECOUNT_THRESHOLD UCASTP_2
95 #define EUSCI_B_I2C_SET_DATA_RATE_400KBPS 400000
96 #define EUSCI_B_I2C_SET_DATA_RATE_100KBPS 100000
104 #define EUSCI_B_I2C_CLOCKSOURCE_MODCLK UCSSEL__MODCLK
105 #define EUSCI_B_I2C_CLOCKSOURCE_SMCLK UCSSEL__SMCLK
113 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET0 0x00
114 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET1 0x02
115 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET2 0x04
116 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET3 0x06
124 #define EUSCI_B_I2C_OWN_ADDRESS_DISABLE 0x00
125 #define EUSCI_B_I2C_OWN_ADDRESS_ENABLE UCOAEN
134 #define EUSCI_B_I2C_TRANSMIT_MODE UCTR
135 #define EUSCI_B_I2C_RECEIVE_MODE 0x00
145 #define EUSCI_B_I2C_NAK_INTERRUPT UCNACKIE
146 #define EUSCI_B_I2C_ARBITRATIONLOST_INTERRUPT UCALIE
147 #define EUSCI_B_I2C_STOP_INTERRUPT UCSTPIE
148 #define EUSCI_B_I2C_START_INTERRUPT UCSTTIE
149 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT0 UCTXIE0
150 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT1 UCTXIE1
151 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT2 UCTXIE2
152 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT3 UCTXIE3
153 #define EUSCI_B_I2C_RECEIVE_INTERRUPT0 UCRXIE0
154 #define EUSCI_B_I2C_RECEIVE_INTERRUPT1 UCRXIE1
155 #define EUSCI_B_I2C_RECEIVE_INTERRUPT2 UCRXIE2
156 #define EUSCI_B_I2C_RECEIVE_INTERRUPT3 UCRXIE3
157 #define EUSCI_B_I2C_BIT9_POSITION_INTERRUPT UCBIT9IE
158 #define EUSCI_B_I2C_CLOCK_LOW_TIMEOUT_INTERRUPT UCCLTOIE
159 #define EUSCI_B_I2C_BYTE_COUNTER_INTERRUPT UCBCNTIE
167 #define EUSCI_B_I2C_BUS_BUSY UCBBUSY
168 #define EUSCI_B_I2C_BUS_NOT_BUSY 0x00
176 #define EUSCI_B_I2C_STOP_SEND_COMPLETE 0x00
177 #define EUSCI_B_I2C_SENDING_STOP UCTXSTP
185 #define EUSCI_B_I2C_START_SEND_COMPLETE 0x00
186 #define EUSCI_B_I2C_SENDING_START UCTXSTT
276 uint8_t slaveAddress);
334 uint8_t transmitData);
974 #endif // __MSP430WARE_EUSCI_B_I2C_H__
uint32_t EUSCI_B_I2C_getReceiveBufferAddress(uint16_t baseAddress)
Returns the address of the RX Buffer of the I2C for the DMA module.
Definition: eusci_b_i2c.c:541
void EUSCI_B_I2C_masterSendMultiByteFinish(uint16_t baseAddress, uint8_t txData)
Finishes multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:357
void EUSCI_B_I2C_masterSendMultiByteNext(uint16_t baseAddress, uint8_t txData)
Continues multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:321
void EUSCI_B_I2C_enableMultiMasterMode(uint16_t baseAddress)
Enables Multi Master Mode.
Definition: eusci_b_i2c.c:517
bool EUSCI_B_I2C_masterSendMultiByteNextWithTimeout(uint16_t baseAddress, uint8_t txData, uint32_t timeout)
Continues multi-byte transmission from Master to Slave with timeout.
Definition: eusci_b_i2c.c:335
uint32_t EUSCI_B_I2C_getTransmitBufferAddress(uint16_t baseAddress)
Returns the address of the TX Buffer of the I2C for the DMA module.
Definition: eusci_b_i2c.c:546
uint8_t EUSCI_B_I2C_masterReceiveSingle(uint16_t baseAddress)
receives a byte that has been sent to the I2C Master Module.
Definition: eusci_b_i2c.c:530
bool EUSCI_B_I2C_masterSendMultiByteStartWithTimeout(uint16_t baseAddress, uint8_t txData, uint32_t timeout)
Starts multi-byte transmission from Master to Slave with timeout.
Definition: eusci_b_i2c.c:290
void EUSCI_B_I2C_masterSendMultiByteStop(uint16_t baseAddress)
Send STOP byte at the end of a multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:417
uint16_t EUSCI_B_I2C_getInterruptStatus(uint16_t baseAddress, uint16_t mask)
Gets the current I2C interrupt status.
Definition: eusci_b_i2c.c:163
void EUSCI_B_I2C_slavePutData(uint16_t baseAddress, uint8_t transmitData)
Transmits a byte from the I2C Module.
Definition: eusci_b_i2c.c:109
uint32_t slaveOwnAddressEnable
Definition: eusci_b_i2c.h:75
uint8_t byteCounterThreshold
Sets threshold for automatic STOP or UCSTPIFG.
Definition: eusci_b_i2c.h:47
void EUSCI_B_I2C_disable(uint16_t baseAddress)
Disables the I2C block.
Definition: eusci_b_i2c.c:80
uint32_t dataRate
Definition: eusci_b_i2c.h:45
uint16_t EUSCI_B_I2C_masterIsStopSent(uint16_t baseAddress)
Indicates whether STOP got sent.
Definition: eusci_b_i2c.c:129
bool EUSCI_B_I2C_masterSendSingleByteWithTimeout(uint16_t baseAddress, uint8_t txData, uint32_t timeout)
Does single byte transmission from Master to Slave with timeout.
Definition: eusci_b_i2c.c:219
uint8_t EUSCI_B_I2C_slaveGetData(uint16_t baseAddress)
Receives a byte that has been sent to the I2C Module.
Definition: eusci_b_i2c.c:117
uint8_t EUSCI_B_I2C_getMode(uint16_t baseAddress)
Gets the mode of the I2C device.
Definition: eusci_b_i2c.c:102
uint8_t slaveAddressOffset
Definition: eusci_b_i2c.h:70
uint8_t selectClockSource
Definition: eusci_b_i2c.h:37
void EUSCI_B_I2C_masterSendStart(uint16_t baseAddress)
This function is used by the Master module to initiate START.
Definition: eusci_b_i2c.c:412
void EUSCI_B_I2C_clearInterrupt(uint16_t baseAddress, uint16_t mask)
Clears I2C interrupt sources.
Definition: eusci_b_i2c.c:155
bool EUSCI_B_I2C_masterReceiveMultiByteFinishWithTimeout(uint16_t baseAddress, uint8_t *txData, uint32_t timeout)
Finishes multi-byte reception at the Master end with timeout.
Definition: eusci_b_i2c.c:478
void EUSCI_B_I2C_setSlaveAddress(uint16_t baseAddress, uint8_t slaveAddress)
Sets the address that the I2C Master will place on the bus.
Definition: eusci_b_i2c.c:86
void EUSCI_B_I2C_masterSendMultiByteStart(uint16_t baseAddress, uint8_t txData)
Starts multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:267
bool EUSCI_B_I2C_masterSendMultiByteFinishWithTimeout(uint16_t baseAddress, uint8_t txData, uint32_t timeout)
Finishes multi-byte transmission from Master to Slave with timeout.
Definition: eusci_b_i2c.c:377
void EUSCI_B_I2C_masterSendSingleByte(uint16_t baseAddress, uint8_t txData)
Does single byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:171
void EUSCI_B_I2C_initSlave(uint16_t baseAddress, EUSCI_B_I2C_initSlaveParam *param)
Initializes the I2C Slave block.
Definition: eusci_b_i2c.c:57
uint8_t autoSTOPGeneration
Definition: eusci_b_i2c.h:53
void EUSCI_B_I2C_disableInterrupt(uint16_t baseAddress, uint16_t mask)
Disables individual I2C interrupt sources.
Definition: eusci_b_i2c.c:147
uint16_t EUSCI_B_I2C_masterIsStartSent(uint16_t baseAddress)
Indicates whether Start got sent.
Definition: eusci_b_i2c.c:134
uint8_t EUSCI_B_I2C_masterReceiveMultiByteNext(uint16_t baseAddress)
Starts multi-byte reception at the Master end one byte at a time.
Definition: eusci_b_i2c.c:457
uint32_t i2cClk
Definition: eusci_b_i2c.h:40
void EUSCI_B_I2C_masterReceiveMultiByteStop(uint16_t baseAddress)
Sends the STOP at the end of a multi-byte reception at the Master end.
Definition: eusci_b_i2c.c:511
void EUSCI_B_I2C_enable(uint16_t baseAddress)
Enables the I2C block.
Definition: eusci_b_i2c.c:74
void EUSCI_B_I2C_disableMultiMasterMode(uint16_t baseAddress)
Disables Multi Master Mode.
Definition: eusci_b_i2c.c:523
bool EUSCI_B_I2C_masterSendMultiByteStopWithTimeout(uint16_t baseAddress, uint32_t timeout)
Send STOP byte at the end of a multi-byte transmission from Master to Slave with timeout.
Definition: eusci_b_i2c.c:429
Used in the EUSCI_B_I2C_initSlave() function as the param parameter.
Definition: eusci_b_i2c.h:61
void EUSCI_B_I2C_initMaster(uint16_t baseAddress, EUSCI_B_I2C_initMasterParam *param)
Initializes the I2C Master block.
Definition: eusci_b_i2c.c:21
uint8_t EUSCI_B_I2C_masterReceiveMultiByteFinish(uint16_t baseAddress)
Finishes multi-byte reception at the Master end.
Definition: eusci_b_i2c.c:462
void EUSCI_B_I2C_masterReceiveStart(uint16_t baseAddress)
Starts reception at the Master end.
Definition: eusci_b_i2c.c:449
uint8_t slaveAddress
7-bit slave address
Definition: eusci_b_i2c.h:63
uint16_t EUSCI_B_I2C_isBusBusy(uint16_t baseAddress)
Indicates whether or not the I2C bus is busy.
Definition: eusci_b_i2c.c:123
Used in the EUSCI_B_I2C_initMaster() function as the param parameter.
Definition: eusci_b_i2c.h:32
void EUSCI_B_I2C_setMode(uint16_t baseAddress, uint8_t mode)
Sets the mode of the I2C device.
Definition: eusci_b_i2c.c:94
uint8_t EUSCI_B_I2C_masterReceiveSingleByte(uint16_t baseAddress)
Does single byte reception from Slave.
Definition: eusci_b_i2c.c:203
void EUSCI_B_I2C_enableInterrupt(uint16_t baseAddress, uint16_t mask)
Enables individual I2C interrupt sources.
Definition: eusci_b_i2c.c:139