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 *nextPtr1) 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.
TI中文支持网


