Перейти к содержанию
    

Не получается задействовать SPI на SIM800

Здравствуйте.

 

Имеется SIM800 (без всяких суффиксов). Так же есть SIM800M32_EAT_140409.

Пытаюсь использовать SPI (упрощенный код):

void spi_test(void)
{
    ...........
    rc = eat_spi_init(FREC_DIV, EAT_SPI_4WIRE, EAT_SPI_BIT8, EAT_FALSE, EAT_FALSE);
    eat_trace("inited=%i", (int)rc);

    ...........
    rc = eat_spi_write(data, sizeof(data), IS_COMMAND);
    eat_trace("eat_spi_write=%i", (int)rc);
}

FREC_DIV - пытался разные делители

IS_COMMAND - пытался разные значения (EAT_TRUE, EAT_FALSE)

 

Функции возвращают, что все ОК (rc = EAT_TRUE), но никакого эффекта.

В т.ч. смотрел осциллографом - тишина на выводах (согласно eat_periphery.h):

EAT_PIN37_SDA = 37, (GPIO, SDA, SPICS)

EAT_PIN7_CTS = 7, (GPIO, U2RXD, SPIMOSI)

EAT_PIN8_RTS = 8, (GPIO, U2TXD, SPIMISO)

EAT_PIN38_SCL = 38, (GPIO, SCL, SPISCK)

 

Перебрал и другие пины с целью обнаружить сигнал хоть где-то. Тишина.

 

Попробовал "прозвонить" пины, может кто из строя вышел. Набросал для этого такой метод:

void testGPIO(u8 pin)
{
    int i;
    eat_trace("test GPIO: %i", pin);
    eat_gpio_setup(pin, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_HIGH);
    for (i = 0; i < 10; ++i)
    {
        eat_gpio_write(pin, EAT_GPIO_LEVEL_HIGH);
        eat_sleep(100);
        eat_gpio_write(pin, EAT_GPIO_LEVEL_LOW);
        eat_sleep(100);
    }
    eat_trace("test GPIO done");
}

 

Все пины нормально тестятся (вижу сигнал на осциллографе).

 

Что не так с SPI из SDK ?

Уж больно не хочется писать свою реализацию.

 

Спасибо!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще, чертовщина какая-то.

Попробовал вместо SPI использовать UART. На первом все отлично, но он мне нужен для AT.

Попробовал задействовать второй.

static const EatUart_enum eat_uart_app= EAT_UART_2;

static void app_main(void *data)
{
    .............................

    if (eat_uart_open(eat_uart_app) == EAT_FALSE)
    {
        eat_trace("[%s] uart(%d) open fail!", __FUNCTION__, eat_uart_app);
    }
    else
    {
        EatUartConfig_st uart_config;
        uart_config.baud = EAT_UART_BAUD_57600;
        uart_config.dataBits = EAT_UART_DATA_BITS_8;
        uart_config.parity = EAT_UART_PARITY_NONE;
        uart_config.stopBits = EAT_UART_STOP_BITS_1;
        if (EAT_FALSE == eat_uart_set_config(eat_uart_app, &uart_config))
        {
            eat_trace("[%s] uart(%d) set config fail!", __FUNCTION__, eat_uart_app);
        }
        eat_uart_set_send_complete_event(eat_uart_app, EAT_TRUE);
        eat_trace("[%s] uart(%d) Done!", __FUNCTION__, eat_uart_app);
    }

Не работает так же, как и SPI.

Ошибок при этом не выдает.

 

Подскажите, знающие люди, что я делаю не так?

Изменено пользователем BioUnit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

BioUnit, напишите на wireless собака mt-system.ru. Вышлю в ответ актуальный SDK, вполне возможно, что используете устаревшее ПО (судя по дате в названии сборки).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...