• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Особенности SPI

sharikov

Active member
SPI RTL8710 в режиме мастера дает задержку в начале 1,5 CLK, причем первые 1CLK выдает прошлое состояние MOSI. Задержка в конце составляет 1CLK.

rtl-spi-m1.png

Режим:
Код:
spi_init(&spi_master, SPI0_MOSI, SPI0_MISO, SPI0_SCLK, SPI0_CS);
spi_format(&spi_master, 16, 0, 0);
spi_frequency(&spi_master, 200000);
 

pvvx

Активный участник сообщества
Вывод 0x55:
SPI_mode.gif
void spi_format (spi_t *obj, int bits, int mode, int slave);
SPI RTL8710 в режиме мастера дает задержку в начале 1,5 CLK,
Задержка 1 CLK до строба в режиме 0:
SPI_MODE0_SEND0xA5.gif
В блочной операции передачи CS выставляется один раз на весь блок и SLK непрерывный...
 
Последнее редактирование:

BublikoFF

New member
Чип RTL8710AF. Не могу отправить данные через spi_slave_write_stream_dma. Подскажите пожалуйста, может где чего не включил? sdk4.0 компилятор gcc

если dmа не использовать, то отправка проходит spi_slave_write_stream(&spi_slave, buff, 8);

режимы spi все попробовал, dma не работает ни в мастере ни в слейве. Может его как то дополнительно включать нужно?

Код:
void SPI_task(void* param)
{
    spi_init(&spi_slave, SPI0_MOSI, SPI0_MISO, SPI0_SCLK, SPI0_CS);
    spi_format(&spi_slave, 8, (SPI_SCLK_IDLE_LOW|SPI_SCLK_TOGGLE_START) , 1);
    spi_irq_hook(&spi_slave, slave_tr_done_callback, (uint32_t)&spi_slave);

    while (spi_busy(&spi_slave))
        sys_sleep(1000);

    while (1)
    {
        spi_flush_rx_fifo(&spi_slave);

        spi_slave_write_stream_dma(&spi_slave, buff, 8);
        sys_sleep(100);
    }
}
 
Сверху Снизу