NXP MCU 技术论坛
直播中

刘浩

7年用户 1050经验值
私信 关注
[问答]

如何缩短事务之间的时间以获得更高的采样率?

我正在编写一个测试程序,通过 IDF SPI Master 驱动程序从 ADC 读取数据。我正在使用不带 DMA 的轮询传输。这是我正在使用的代码:
代码:全选
uint16_t val;
spi_transaction_t trans = {}:

trans.flags = SPI_TRANS_USE_TXDATA;
trans.length = 16;
trans.rx_buffer = &val;

ESP_ERROR_CHECK( spi_device_acquire_bus(spi, portMAX_DELAY) );

for (i=0; i < 16; i++) {
    ESP_ERROR_CHECK( spi_device_polling_transmit(spi, &trans) );

    val = SPI_SWAP_DATA_RX(val, 16);

    reads = val;
}

spi_device_release_bus(spi);

这段代码运行良好,问题是传输之间有大约 8 us 的间隔,不允许代码读取速度足够快以满足我的要求。

在驱动程序代码中进行一些手动分析后,我发现代码花费更多时间的函数是在 spi_device_polling_start() 调用的 spi_device_polling_start() 中启动传输(由 spi_device_polling_transmit()。

我的问题是,如何缩短事务之间的时间以获得更高的采样率?

更多回帖

发帖
×
20
完善资料,
赚取积分