Module sam4l::i2c [] [src]

Implementation of the SAM4L TWIMS peripheral.

The implementation, especially of repeated starts, is quite sensitive to the ordering of operations (e.g. setup DMA, then set command register, then next command register, then enable, then start the DMA transfer). The placement of writes to interrupt enable/disable registers is also significant, but not refactored in such a way that's very logical right now.

The point is that until this changes, and this notice is taken away: IF YOU CHANGE THIS DRIVER, TEST RIGOROUSLY!!!

Reexports

use core::cell::Cell;
use dma::DMAChannel;
use dma::DMAClient;
use dma::DMAPeripheral;
use kernel::common::VolatileCell;
use kernel::common::take_cell::TakeCell;
use kernel::hil;
use pm;

Structs

I2CHw
TWIMRegisters
TWISRegisters

Enums

Location
Speed

Constants

ACKLAST
I2C_BASE_ADDRS
I2C_SLAVE_BASE_ADDRS
START
STOP

Statics

I2C0
I2C1
I2C2
I2C3