• Система автоматизации с открытым исходным кодом на базе 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);
    }
}
 
Сверху Снизу