|
enum | DetachCause : uint8_t { DetachCause::NormalStop,
DetachCause::ErrorCondition,
DetachCause::FailedToAttach
} |
|
enum | TransactionState : uint8_t { TransactionState::Idle,
TransactionState::Busy,
TransactionState::Error
} |
| State of a I2c Transaction. More...
|
|
|
enum | Operation : uint8_t { Operation::Stop = 0,
Operation::Restart = 1,
Operation::Write = 2,
Operation::Read = 3
} |
| All possible I2C Operations. More...
|
|
enum | OperationAfterStart : uint8_t { OperationAfterStart::Stop = uint8_t(Operation::Stop),
OperationAfterStart::Write = uint8_t(Operation::Write),
OperationAfterStart::Read = uint8_t(Operation::Read)
} |
| Further operations after start operation. More...
|
|
enum | OperationAfterWrite : uint8_t { OperationAfterWrite::Stop = uint8_t(Operation::Stop),
OperationAfterWrite::Restart = uint8_t(Operation::Restart),
OperationAfterWrite::Write = uint8_t(Operation::Write)
} |
| Further operations after write operation. More...
|
|
enum | OperationAfterRead : uint8_t { OperationAfterRead::Stop = uint8_t(Operation::Stop),
OperationAfterRead::Restart = uint8_t(Operation::Restart)
} |
| Further operations after read operation. More...
|
|
|
template<class Scl > |
static void | resetDevices (uint32_t baudrate=100'000) |
|
|
static constexpr uint8_t | Write = 0x00 |
| Add the Write bit to the slave address.
|
|
static constexpr uint8_t | Read = 0x01 |
| Add the Read bit to the slave address.
|
|
This tells the I2cTransaction
why it was detached
- See also
- I2cTransaction
Enum Values | Documentation |
---|
NormalStop | All operations finished normally.
|
ErrorCondition | A bus error occurred and the bus was reset.
|
FailedToAttach | The I2cTransaction failed to attach to the I2cMaster.
|
All possible I2C Operations.
I2C Operations that the I2cTransaction
can give the master on callback
- See also
- I2cTransaction
Enum Values | Documentation |
---|
Stop | Generate a Stop Condition.
|
Restart | Generate a Restart.
|
Write | Write data to the slave.
|
Read | Read data from the slave.
|
Further operations after read operation.
Enum Values | Documentation |
---|
Stop | Generate a Stop Condition.
|
Restart | Generate a Restart.
|
Further operations after start operation.
Enum Values | Documentation |
---|
Stop | Generate a Stop Condition.
|
Write | Write data to the slave.
|
Read | Read data from the slave.
|
Further operations after write operation.
Enum Values | Documentation |
---|
Stop | Generate a Stop Condition.
|
Restart | Generate a Restart.
|
Write | Write data to the slave.
|
State of a I2c Transaction.
Enum Values | Documentation |
---|
Idle | No error occurred, detached normally.
|
Busy | The transaction object is busy with data transfer.
|
Error | An error occurred, check the masters getErrorCode()
|
template<class Scl >
static void modm::I2c::resetDevices |
( |
uint32_t |
baudrate = 100'000 | ) |
|
|
inlinestatic |
Reset all slave devices connected to an I2C bus.
During normal operation, I2C slave device may pull the SDA line low. However, if the master is reset during a transaction, the I2C clock may stop while the slave is outputting a low data bit and the slave will continue to hold this bit (forever, and ever and ever). The I2C master is then unable to generate a I2C start condition, since SDA is still held low by the slave device, resulting in a deadlock.
"You can always get it back to standby mode by allowing the SDA line to
float high and give it 9 clocks.
This assures that the device will not receive the acknowledge bit at
the end the current byte and will abort the command and go to standby."
- See also
- Application Note AN572 by Microchip
- Warning
- Must be called before connecting SDA and SCL to I2cMaster!
- Template Parameters
-
Scl | The clock pin of the bus to be reset. |
The documentation for this struct was generated from the following file: