TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3220SF: 作为SPI从机接收时,最长可以接收多少字节的数据?

https://dev.ti.com/tirex/content/simplelink_cc32xx_sdk_6_10_00_05/docs/drivers/doxygen/html/_s_p_i_c_c32_x_x_d_m_a_8h.html

关于文档中的那个例子,我有几个问题想请教一下。

第一个是,这一段程序实际上是希望传输多少字节的数据,是2000字节还是多少呢?

第二个问题是,三个txBuff和两个rxBuff的关系是怎么样子的,是txBuff1\2\3各自指向一片独立的内存还是,txBuff1是一段内存的开头,txbuff2也是这段内存开头和txbuff3是这段内存的中间?

Cherry Zhou:

您好我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

您好,

请查看以下代码:

// SPI already opened in callback mode
SPI_Transaction t0, t1, t2;
t0.txBuf = txBuff0;
t0.rxBuf = rxBuff0;
t0.count = 2000;
t1.txBuf = txBuff1;
t1.rxBuf = rxBuff1;
t1.count = 1000;
t2.txBuf = txBuff2;
t2.rxBuf = NULL;
t2.count = 1000;
bool transferOk = false;
if (SPI_transfer(spiHandle, &t0)) {if (SPI_transfer(spiHandle, &t1)) {transferOk = SPI_transfer(spiHandle, &t2);}}
}

在此代码中,创建结构 SPI_Transactions 的3个实例 t0、t1和 t2。每个结构具有以下变量。 Link

size_tcountvoid *txBufvoid *rxBufvoid *argSPI_Statusstatusvoid *nextPtr

1)  t0.count 设置为2000,意味着在传输2000帧之前,SPI_Transfer (spiHandle、&t0)不会返回1或完成。传输的字节数最终取决于缓冲器的帧大小,即8位、16位或32位。

2.)txBuff1、2、3都是各自在内存中的独立缓冲区,已分配给每个 TX.buff 变量。

,

冯羽凡:

对于第一个问题,我是想问,比如目前spi的帧大小设定的是8位,也就是1个字节。那么这段程序实现的是发送多少字节或者说多少帧的数据呢?

另外,我突然又想到,SPI_Transactions 的第一个实例t0的count值设定为2000,那么不是已经超过1024字节了,可以正常工作吗?

,

Cherry Zhou:

我们向工程师确认下吧。

,

冯羽凡:

感谢!

,

Cherry Zhou:

冯羽凡 说:SPI_Transactions 的第一个实例t0的count值设定为2000,那么不是已经超过1024字节了,可以正常工作吗?

可以的,由于 DMA 是在ping pong mode下工作,所以仍然可以正常工作。 

冯羽凡 说:对于第一个问题,我是想问,比如目前spi的帧大小设定的是8位,也就是1个字节。那么这段程序实现的是发送多少字节或者说多少帧的数据呢?

以队列的方式处理4000字节。 第一个2000来自 SPI Spi Transaction T0, 1000 来自T1,另一个 1000来自 T2.

赞(0)
未经允许不得转载:TI中文支持网 » CC3220SF: 作为SPI从机接收时,最长可以接收多少字节的数据?
分享到: 更多 (0)