This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我正在使用中
CCS 8.3.0.201810301800
TIRTOS 2.16.1.14、
编译器5.2.7
XDC 3.31.1333
TM4C1294NCPDT
NDK_2_25_00_09
我将通过 SPI 接口将大容量闪存连接到 Tiva。 我似乎发现了一个极限、以至于我无法进行超过1024个传输的连续 SPI 传输。
我将以下代码放在一起、看看传输计数的限制是多少、代码运行、传输工作到1024个字节、然后在1025时失败。
//从1开始、执行传输、如果成功、则在传输中添加一个、直到传输失败。
for (RC=1;RC<0xFFFF;RC++)//该值在1025时失败、在1024时通过
{
masterTransaction.count = RC;
transferOK = SPI_transfer (masterSpi3、&masterTransaction);// TI RTOS 用户指南 P67/122
if (transferOK =0)
{
printf ("spi_transfer ()%d %d\r"、RC、transferOK);
休息;
}
}
是否有办法让它进行约5000笔转账的连续转账?
尊敬的 Doug:
跟踪 C:\ti\tirtos_tivac_2_16_00_08\products\tidrivers_tivac_2_16_00_08\packages\ti\drivers\spi\SPITivaDMA.c 中的驱动程序代码、会检查传输计数是否大于1024。 请参见下文。 除非您修改驱动程序并重新编译 TI-RTOS、或者在您的应用程序级别、 当频率超过1024时、发出另一个 SPI_TRANSFUTE ()、否则我看不到解决这个问题的方法。
/*
* ======== SPITivaDMA_transfer ========
* @pre Function assumes that handle and transaction is not NULL
*/
bool SPITivaDMA_transfer(SPI_Handle handle, SPI_Transaction *transaction)
{
unsigned int key;
SPITivaDMA_Object *object = handle->object;
SPITivaDMA_HWAttrs const *hwattrs = handle->hwAttrs;
/* Check the transaction arguments */
if ((transaction->count == 0) || (transaction->count > 1024) ||
!(transaction->rxBuf || transaction->txBuf) ||
(!(transaction->rxBuf && transaction->txBuf) && !hwattrs->scratchBufPtr)) {
return (false);
}