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" 86 #define EUSCI_B_I2C_NO_AUTO_STOP UCASTP_0 87 #define EUSCI_B_I2C_SET_BYTECOUNT_THRESHOLD_FLAG UCASTP_1 88 #define EUSCI_B_I2C_SEND_STOP_AUTOMATICALLY_ON_BYTECOUNT_THRESHOLD UCASTP_2 96 #define EUSCI_B_I2C_SET_DATA_RATE_400KBPS 400000 97 #define EUSCI_B_I2C_SET_DATA_RATE_100KBPS 100000 105 #define EUSCI_B_I2C_CLOCKSOURCE_ACLK UCSSEL__ACLK 106 #define EUSCI_B_I2C_CLOCKSOURCE_SMCLK UCSSEL__SMCLK 114 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET0 0x00 115 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET1 0x02 116 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET2 0x04 117 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET3 0x06 125 #define EUSCI_B_I2C_OWN_ADDRESS_DISABLE 0x00 126 #define EUSCI_B_I2C_OWN_ADDRESS_ENABLE UCOAEN 135 #define EUSCI_B_I2C_TRANSMIT_MODE UCTR 136 #define EUSCI_B_I2C_RECEIVE_MODE 0x0000 146 #define EUSCI_B_I2C_NAK_INTERRUPT UCNACKIE 147 #define EUSCI_B_I2C_ARBITRATIONLOST_INTERRUPT UCALIE 148 #define EUSCI_B_I2C_STOP_INTERRUPT UCSTPIE 149 #define EUSCI_B_I2C_START_INTERRUPT UCSTTIE 150 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT0 UCTXIE0 151 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT1 UCTXIE1 152 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT2 UCTXIE2 153 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT3 UCTXIE3 154 #define EUSCI_B_I2C_RECEIVE_INTERRUPT0 UCRXIE0 155 #define EUSCI_B_I2C_RECEIVE_INTERRUPT1 UCRXIE1 156 #define EUSCI_B_I2C_RECEIVE_INTERRUPT2 UCRXIE2 157 #define EUSCI_B_I2C_RECEIVE_INTERRUPT3 UCRXIE3 158 #define EUSCI_B_I2C_BIT9_POSITION_INTERRUPT UCBIT9IE 159 #define EUSCI_B_I2C_CLOCK_LOW_TIMEOUT_INTERRUPT UCCLTOIE 160 #define EUSCI_B_I2C_BYTE_COUNTER_INTERRUPT UCBCNTIE 168 #define EUSCI_B_I2C_BUS_BUSY UCBBUSY 169 #define EUSCI_B_I2C_BUS_NOT_BUSY 0x00 177 #define EUSCI_B_I2C_STOP_SEND_COMPLETE 0x00 178 #define EUSCI_B_I2C_SENDING_STOP UCTXSTP 186 #define EUSCI_B_I2C_START_SEND_COMPLETE 0x00 187 #define EUSCI_B_I2C_SENDING_START UCTXSTT 195 #define EUSCI_B_I2C_TIMEOUT_DISABLE UCCLTO_0 196 #define EUSCI_B_I2C_TIMEOUT_28_MS UCCLTO_1 197 #define EUSCI_B_I2C_TIMEOUT_31_MS UCCLTO_2 198 #define EUSCI_B_I2C_TIMEOUT_34_MS UCCLTO_3 288 uint8_t slaveAddress);
346 uint8_t transmitData);
1016 #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:547
void EUSCI_B_I2C_masterSendMultiByteFinish(uint16_t baseAddress, uint8_t txData)
Finishes multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:363
void EUSCI_B_I2C_masterSendMultiByteNext(uint16_t baseAddress, uint8_t txData)
Continues multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:327
void EUSCI_B_I2C_enableMultiMasterMode(uint16_t baseAddress)
Enables Multi Master Mode.
Definition: eusci_b_i2c.c:523
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:341
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:552
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:536
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:296
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:423
uint16_t EUSCI_B_I2C_getInterruptStatus(uint16_t baseAddress, uint16_t mask)
Gets the current I2C interrupt status.
Definition: eusci_b_i2c.c:164
void EUSCI_B_I2C_slavePutData(uint16_t baseAddress, uint8_t transmitData)
Transmits a byte from the I2C Module.
Definition: eusci_b_i2c.c:110
uint32_t slaveOwnAddressEnable
Definition: eusci_b_i2c.h:76
uint8_t byteCounterThreshold
Sets threshold for automatic STOP or UCSTPIFG.
Definition: eusci_b_i2c.h:48
void EUSCI_B_I2C_disable(uint16_t baseAddress)
Disables the I2C block.
Definition: eusci_b_i2c.c:81
uint32_t dataRate
Definition: eusci_b_i2c.h:46
uint16_t EUSCI_B_I2C_masterIsStopSent(uint16_t baseAddress)
Indicates whether STOP got sent.
Definition: eusci_b_i2c.c:130
void EUSCI_B_I2C_setTimeout(uint16_t baseAddress, uint16_t timeout)
Enforces a timeout if the I2C clock is held low longer than a defined time.
Definition: eusci_b_i2c.c:556
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:225
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:118
uint8_t EUSCI_B_I2C_getMode(uint16_t baseAddress)
Gets the mode of the I2C device.
Definition: eusci_b_i2c.c:103
uint8_t slaveAddressOffset
Definition: eusci_b_i2c.h:71
uint8_t selectClockSource
Definition: eusci_b_i2c.h:38
void EUSCI_B_I2C_masterSendStart(uint16_t baseAddress)
This function is used by the Master module to initiate START.
Definition: eusci_b_i2c.c:418
void EUSCI_B_I2C_clearInterrupt(uint16_t baseAddress, uint16_t mask)
Clears I2C interrupt sources.
Definition: eusci_b_i2c.c:156
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:484
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:87
void EUSCI_B_I2C_masterSendMultiByteStart(uint16_t baseAddress, uint8_t txData)
Starts multi-byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:273
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:383
void EUSCI_B_I2C_masterSendSingleByte(uint16_t baseAddress, uint8_t txData)
Does single byte transmission from Master to Slave.
Definition: eusci_b_i2c.c:172
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:54
void EUSCI_B_I2C_disableInterrupt(uint16_t baseAddress, uint16_t mask)
Disables individual I2C interrupt sources.
Definition: eusci_b_i2c.c:148
uint16_t EUSCI_B_I2C_masterIsStartSent(uint16_t baseAddress)
Indicates whether Start got sent.
Definition: eusci_b_i2c.c:135
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:463
uint32_t i2cClk
Definition: eusci_b_i2c.h:41
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:517
void EUSCI_B_I2C_enable(uint16_t baseAddress)
Enables the I2C block.
Definition: eusci_b_i2c.c:75
void EUSCI_B_I2C_disableMultiMasterMode(uint16_t baseAddress)
Disables Multi Master Mode.
Definition: eusci_b_i2c.c:529
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:435
Used in the EUSCI_B_I2C_initSlave() function as the param parameter.
Definition: eusci_b_i2c.h:62
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:468
void EUSCI_B_I2C_masterReceiveStart(uint16_t baseAddress)
Starts reception at the Master end.
Definition: eusci_b_i2c.c:455
uint8_t slaveAddress
7-bit slave address
Definition: eusci_b_i2c.h:64
uint16_t EUSCI_B_I2C_isBusBusy(uint16_t baseAddress)
Indicates whether or not the I2C bus is busy.
Definition: eusci_b_i2c.c:124
Used in the EUSCI_B_I2C_initMaster() function as the param parameter.
Definition: eusci_b_i2c.h:32
uint8_t EUSCI_B_I2C_masterReceiveSingleByte(uint16_t baseAddress)
Does single byte reception from Slave.
Definition: eusci_b_i2c.c:204
void EUSCI_B_I2C_setMode(uint16_t baseAddress, uint16_t mode)
Sets the mode of the I2C device.
Definition: eusci_b_i2c.c:95
void EUSCI_B_I2C_enableInterrupt(uint16_t baseAddress, uint16_t mask)
Enables individual I2C interrupt sources.
Definition: eusci_b_i2c.c:140