工具/软件:TI-RTOS
我将 TI-RTOS 与 SPI/DMA 驱动程序配合使用、以便与外部器件进行通信。 我已经设置了一个计时器来启动重复性 SPI_TRANSF()。 SPI 传输之间的最短时间似乎约为40微秒(传输约为35微秒)。 无论我将计时器周期设置为多低、都有一个最小的 SPI 重新传输周期。
1)是否有更快速地重新发送的好方法(即减少40微秒)?
2) 2)或者、使用 TI-RTOS 时、是否可以实现 SPI DMA Ping Pong 传输?
谢谢、
Alex
以下测试代码:
/* XDCtools 头文件*/
#include
#include
#include
/* BIOS 头文件*/
#include
#include
/* TI-RTOS 头文件*/
#include
#include
/*示例/板头文件*/
#include "Board.h"
#define BUFSIZE32
SPI_Transaction spiTransaction spiTransaction;
SPI_HandleSPI;
SPI_ParamsspiParams;
uint16_t transmitBuffer[BUFSIZE];
uint16_t receiveBuffer[BUFSIZE];
空 UserCallbackFxn (SPI_Handle SPI、SPI_Transaction * spiTransaction)
{
无符号静态 int callback_cnt=0;
Log_Info1 ("Callback #%u"、callback_cnt);
}
int main (void)
{
/*呼叫板初始化函数*/
Board_initGeneral();
Board_initSPI();
SPI_Params_init (&spiParams);
spiParams.transferMode = SPI_MODE_CALLACK;
spiParams.transferCallbackFxn =用户 CallbackFxn;
spiParams.bitrate = 20000000;
spiParams.dataSize = 16;
SPI = SPI_OPEN (Board_SPI0、&spiParams);
spiTransaction.count = 32;
spiTransaction.txBuf = transmitBuffer;
receivTransaction.rxBuf = spieBuffer;
/*启动 BIOS */
BIOS_start();
返回(0);
}
void sample_period_timer_fxn (void)
{
spi_transfer (SPI、&spiTransaction);
//Log_info0 ("SPI transfer started");
}