This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug 1001397] I2C driver for Kinetis microcontrollers


Please do not reply to this email, use the link below.

http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001397

--- Comment #57 from Mike Jones <mjones@linear.com> ---
I get the same conservative frequency no matter how
CYGNUM_DEVS_FREESCALE_I2C_CLOCK_AGR is set.

I have given the code below, which I know ignores the delay specified in the
CDL. Is there a different way to write the code so that the delay and AGR of
the CDL get applied?

uint16_t smbus_read_word(uint8_t address, uint8_t command)
{
    cyg_i2c_device device = {                        \
            .i2c_bus        = &cyg_i2c0_bus,         \
            .i2c_address    = address,               \
            .i2c_flags      = 0,                     \
            .i2c_delay      = i2c_bus_time           \
        };
    cyg_uint8 buffer[1];
    cyg_uint8 input[2];
    buffer[0] = command;

    cyg_i2c_transaction_begin(&device);
    if(!cyg_i2c_transaction_tx(&device, true, &buffer[0], 1, false)) {
        diag_printf("Read Word: fail TX.\n");
    } else if(!cyg_i2c_transaction_rx(&device, true, &input[0], 2, true, true))
{
        diag_printf("Read Word: fail RX.\n");
    }
    cyg_i2c_transaction_end(&device);

    return input[1] << 8 | input[0];
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]