38 #define SMB_PEC_SUPPORTED (1)
53 #define SMB_MANUAL_ACK_ENABLE (0)
64 #define SMB_CRC8_USE_LOOKUP_TABLE (1)
71 #define SMB_MAX_PAYLOAD_SIZE (32)
78 #define SMB_MAX_PACKET_SIZE (SMB_MAX_PAYLOAD_SIZE + 3)
85 #define RESPONSE_NTR 0x00
92 #define SMBUS_RET_OK (1)
99 #define SMBUS_RET_ERROR (-1)
138 uint8_t reserved2 : 3;
147 uint8_t writeBits : 1;
148 uint8_t reserved : 7;
161 uint16_t SMBus_Phy_i2cBase;
172 SMBus_NwkState_Idle = 0,
202 #if (SMB_PEC_SUPPORTED == 1)
214 SMBus_ErrorCode_NoError = 0,
260 uint8_t packOvrErr : 1;
261 uint8_t byteOvrErr : 1;
263 uint8_t reserved : 2;
327 #if (SMB_PEC_SUPPORTED == 1)
418 #ifdef __MSP430_HAS_USCI__
531 #if (SMB_MANUAL_ACK_ENABLE == 1)
543 extern void SMBus_slaveEnableManualACK(
SMBus *smbus);
553 extern void SMBus_slaveDisableManualACK(
SMBus *smbus);
565 extern void SMBus_slaveSendACK(
SMBus *smbus,
616 #ifdef __MSP430_HAS_USCI__
1143 #endif //__SMBUS_H__
void SMBus_masterReset(SMBus *smbus)
Force reset to SMBus master interface.
Definition: smbus.c:225
Stop is send immediately with Start.
Definition: smbus.h:114
Stop sent before reading next byte.
Definition: smbus.h:116
uint8_t SMBus_slaveGetCommand(SMBus *smbus)
Return the current command (Rxbuffer[0]) received by the slave.
Definition: smbus.c:150
Network is receiving a packet.
Definition: smbus.h:174
uint8_t SMBus_slaveClearStatusReg(SMBus *smbus, uint8_t val)
Clear the slave's status register.
Definition: smbus.c:155
uint8_t currentCmd
Current Address+R/W.
Definition: smbus.h:192
Nothing special to report.
Definition: smbus.h:227
uint8_t txIndex
Reception Buffer pointer.
Definition: smbus.h:197
SMBus_Nwk nwk
PHY and DataLink object.
Definition: smbus.h:277
PEC Error detected.
Definition: smbus.h:229
SMBus_Ctrl ctrl
Network object.
Definition: smbus.h:278
void SMBus_slaveSetAddress(SMBus *smbus, uint8_t slaveAddr)
Set the slave's own I2C address.
Definition: smbus.c:101
SMBus_Stop SMBus_Phy_stop
I2C Base address.
Definition: smbus.h:162
SMBus_ErrorCode
List of error codes used by the application to indicate an error to the library.
Definition: smbus.h:212
Timeout Error.
Definition: smbus.h:230
uint8_t u8byte
Whole status byte access.
Definition: smbus.h:266
SMBus Slave Error.
Definition: smbus.h:235
SMBus control register.
Definition: smbus.h:124
1st byte (cmd) received
Definition: smbus.h:231
uint8_t * txBuffPtr
Bytes to send.
Definition: smbus.h:199
SMBus Master error.
Definition: smbus.h:240
SMBus_State state
SMBus Status register.
Definition: smbus.h:280
int8_t SMBus_masterProcessCall(SMBus *smbus, uint8_t targetAddr, uint8_t command, uint8_t *txData, uint8_t *rxData)
Sends a process call to a slave.
Definition: smbus.c:238
void SMBus_slaveEnableInt(SMBus *smbus)
Enables the I2C interrupts for a slave.
Definition: smbus.c:71
void SMBus_disablePEC(SMBus *smbus)
Disables PEC support.
Definition: smbus.c:38
uint8_t ownSlaveAddr
SMBus reported state.
Definition: smbus.h:281
Quick Command detected.
Definition: smbus.h:233
int8_t SMBus_masterReadByteWord(SMBus *smbus, uint8_t targetAddr, uint8_t command, uint8_t *rxData, uint8_t rxSize)
Send a command requesting a byte or word of data from the slave.
Definition: smbus.c:380
void SMBus_slaveSetTxBuffer(SMBus *smbus, uint8_t *data, uint8_t size)
Initialize the transmission buffer for slave.
Definition: smbus.c:123
int8_t SMBus_masterQuickCommand(SMBus *smbus, uint8_t targetAddr, bool write)
Send a SMBus "quick command".
Definition: smbus.c:436
int8_t SMBus_masterProcessCallBlock(SMBus *smbus, uint8_t targetAddr, uint8_t command, uint8_t *txData, uint8_t txSize, uint8_t *rxData)
Sends a block write-block read process call.
Definition: smbus.c:262
Network is transmitting after receive byte.
Definition: smbus.h:175
void SMBus_processDone(SMBus *smbus)
Clears the current state of SMBus.
Definition: smbus.c:16
SMBus Buffers haven't been initialized.
Definition: smbus.h:236
Unexpected NACKed.
Definition: smbus.h:239
int8_t SMBus_masterReadBlock(SMBus *smbus, uint8_t targetAddr, uint8_t command, uint8_t *rxData)
Receive a block of data from the slave.
Definition: smbus.c:331
int8_t SMBus_masterReceiveByte(SMBus *smbus, uint8_t targetAddr, uint8_t *rxData)
Receive a byte from the slave.
Definition: smbus.c:311
uint8_t txSize
Receive Byte response.
Definition: smbus.h:201
void SMBus_masterEnableInt(SMBus *smbus)
Enables the I2C interrupts for a master.
Definition: smbus.c:215
uint8_t rxIndex
Current Command.
Definition: smbus.h:193
int8_t SMBus_masterWriteByteWord(SMBus *smbus, uint8_t targetAddr, uint8_t command, uint8_t *txData, uint8_t txSize)
Send a command transmitting a byte or word of data from the slave.
Definition: smbus.c:408
int8_t SMBus_masterWriteBlock(SMBus *smbus, uint8_t targetAddr, uint8_t command, uint8_t *txData, uint8_t txSize)
Transmit a block of data to the slave.
Definition: smbus.c:353
uint8_t u8byte
Whole Control byte access.
Definition: smbus.h:151
void SMBus_enablePEC(SMBus *smbus)
Enables PEC support.
Definition: smbus.c:33
SMBus_State SMBus_slaveProcessInt(SMBus *smbus)
I2C Interrupt Service routine for a slave.
Definition: smbus.c:76
Slave received a byte (2-n)
Definition: smbus.h:232
uint8_t * recByteTxPtr
Transmission pointer.
Definition: smbus.h:200
SMBus_State SMBus_getState(SMBus *smbus)
Returns the state of the SMBus module.
Definition: smbus.c:27
SMBus_State SMBus_masterProcessInt(SMBus *smbus)
I2C Interrupt Service routine for a master.
Definition: smbus.c:220
Incorrect packet size.
Definition: smbus.h:228
Network is sending Quick Command.
Definition: smbus.h:176
SMBus_NwkState
SMBus network layer states.
Definition: smbus.h:170
void SMBus_slaveSetRxBuffer(SMBus *smbus, uint8_t *data, uint8_t size)
Initialize the reception buffer for slave.
Definition: smbus.c:114
uint8_t * rxBuffPtr
Max size of buffer.
Definition: smbus.h:196
int8_t SMBus_masterWaitUntilDone(SMBus *smbus, int32_t timeout)
Wait until the previous SMBus command is executed.
Definition: smbus.c:463
SMBus_Status status
SMBus Control register.
Definition: smbus.h:279
SMBus_State
SMBus state sent to application layer.
Definition: smbus.h:224
Network is transmitting a block.
Definition: smbus.h:178
Physical and Data Link Layer object.
Definition: smbus.h:159
uint8_t currentAddr
Network state machine.
Definition: smbus.h:191
No Interrupt flags detected.
Definition: smbus.h:237
void SMBus_slaveReportError(SMBus *smbus, SMBus_ErrorCode errorCode)
Reports an error to SMBus driver from the slave.
Definition: smbus.c:132
uint8_t txLen
Byte counter.
Definition: smbus.h:198
Complete packet received by slave.
Definition: smbus.h:234
Incorrect packet was received.
Definition: smbus.h:216
uint8_t rxLen
RX Byte counter.
Definition: smbus.h:194
Main SMBus object.
Definition: smbus.h:274
uint8_t rxSize
Bytes to receive.
Definition: smbus.h:195
uint8_t pec
Max size of buffer.
Definition: smbus.h:203
Network is idle and waiting for new packet.
Definition: smbus.h:173
void SMBus_masterInit(SMBus *smbus, uint16_t i2cAddr, uint32_t busClk)
Initialize the SMBus Interface for a master.
Definition: smbus.c:189
SMBus_Stop
List of stop codes used within the NWK and PHY layers.
Definition: smbus.h:110
int8_t SMBus_masterSendByte(SMBus *smbus, uint8_t targetAddr, uint8_t txData)
Sends byte to the slave.
Definition: smbus.c:292
Network is transmitting a response after restart.
Definition: smbus.h:177
uint8_t SMBus_slaveWriteCtrlReg(SMBus *smbus, uint8_t val)
Write a value to the slave's control register.
Definition: smbus.c:162
SMBus Status Register.
Definition: smbus.h:248
Arbitration Lost.
Definition: smbus.h:238
Stop is send after Start.
Definition: smbus.h:115
uint8_t SMBus_getRxPayloadAvailable(SMBus *smbus)
Returns the number of received bytes from last transaction.
Definition: smbus.c:22
Network is receiving a block.
Definition: smbus.h:179
Definition of SMBus Network structure.
Definition: smbus.h:188
void SMBus_slaveInit(SMBus *smbus, uint16_t i2cAddr)
Initialize the SMBus interface as a slave.
Definition: smbus.c:45
No error detected.
Definition: smbus.h:215
Network is finishing transfer.
Definition: smbus.h:180
No Stop send.
Definition: smbus.h:113