30 lines
1.3 KiB
Plaintext
30 lines
1.3 KiB
Plaintext
|
I2C Slave API test
|
||
|
##################
|
||
|
|
||
|
This test verifies I2C slave driver implementations using two I2C
|
||
|
controllers on a common bus. The test is supported by a test-specific
|
||
|
driver that simulates an EEPROM with an I2C bus follower ("slave")
|
||
|
interface. Data is pre-loaded into the simulated devices outside the
|
||
|
I2C API, and the Zephyr application issues commands to one controller
|
||
|
that are responded to by the simulated EEPROM connected through the
|
||
|
other controller.
|
||
|
|
||
|
In slightly more detail the test has these phases:
|
||
|
|
||
|
* Use API specific to the simulated EEPROM to pre-populate the simulated
|
||
|
devices with device-specific content.
|
||
|
* Register each simulated EEPROM as a I2C follower device on a bus.
|
||
|
* Issue commands on one bus controller (operating as the bus leader
|
||
|
(master)) and verify that the data supplied by the other controller
|
||
|
(as bus follower) match the expected values given the content known to
|
||
|
be present on the simulated device.
|
||
|
|
||
|
Transfer of commands from one bus controller to the other is
|
||
|
accomplished by hardware through having the SCL (and SDA) signals
|
||
|
shorted to join the two buses.
|
||
|
|
||
|
Presence of this required hardware configuration is identified by the
|
||
|
`i2c_bus_short` fixture. If the buses are not connected as required,
|
||
|
or the controller driver has bugs, the test will fail one or more I2C
|
||
|
transactions.
|