关于文档中的那个例子,我有几个问题想请教一下。
第一个是,这一段程序实际上是希望传输多少字节的数据,是2000字节还是多少呢?
第二个问题是,三个txBuff和两个rxBuff的关系是怎么样子的,是txBuff1\2\3各自指向一片独立的内存还是,txBuff1是一段内存的开头,txbuff2也是这段内存开头和txbuff3是这段内存的中间?
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.
关于文档中的那个例子,我有几个问题想请教一下。
第一个是,这一段程序实际上是希望传输多少字节的数据,是2000字节还是多少呢?
第二个问题是,三个txBuff和两个rxBuff的关系是怎么样子的,是txBuff1\2\3各自指向一片独立的内存还是,txBuff1是一段内存的开头,txbuff2也是这段内存开头和txbuff3是这段内存的中间?
您好,
请查看以下代码:
// 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_t count void * txBuf void * rxBuf void * arg SPI_Status status void * 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字节了,可以正常工作吗?