реклама на сайте
подробности

 
 
> Не получается задействовать SPI на SIM800
BioUnit
сообщение Mar 3 2018, 14:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 24-12-17
Из: Санкт-Петербург
Пользователь №: 100 822



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

Имеется 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 ?
Уж больно не хочется писать свою реализацию.

Спасибо!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 13:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016