Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Open AT I2C
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
John851
Работаю на модуле Q2687. Пытаюсь передать по I2C несколько байт, вот исходник:
Код
#include "adl_global.h"
#include "generated.h"

#include "main.h"
#include "adl_traces.h"

s32 I2C_handle;

#define WRITE_BUFF_SIZE 4
u8 WBUFF[WRITE_BUFF_SIZE]={0x20,0x6C,0x3F,0x5D};

adl_busI2CSettings_t I2Cconf = {
        0xAA,            
        ADL_BUS_I2C_CLK_STD,    
        ADL_BUS_I2C_ADDR_7_BITS,    
        ADL_BUS_I2C_MASTER_MODE
};

adl_busAccess_t I2Caccess = {
        0x00,                         //general call
        0x00    
};

void main_task (void) {
    //subscribe to I2C bus service
    I2C_handle=adl_busSubscribe(ADL_BUS_ID_I2C, 1, &I2Cconf);
    TRACE((2, "Writing to the bus"));
    s32 resp = adl_busWrite(I2C_handle, &I2Caccess, WRITE_BUFF_SIZE, WBUFF);
    TRACE((2, "%d",resp));
}


В результате, хэндлер норм создается, на шину ничего не отправляется, а ответ от функции adl_busWrite приходит -2, то есть ошибочный параметр. Все вроде по примеру, а работать не хочет.
andrewlekar
В примере ещё выставляется размер адреса и ещё желательно выставлять размер опкода и размер данных. Кроме того, в I2Caccess не был размещен адрес, то есть там нули. В примере туда засунут адрес со сдвигом. Возможно в этом затык.

В любом случае, даже если ваш I2C заработает, толку будет мало. В OpenAT до сих пор нет стабильного I2C. В лучшем случае будут перезагрузки и сбои. В худшем - мёртвое зависание.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.