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

CC2541 SPI使用疑问

我在使用BLE_Bridge的democode,使用SPI进行通信的时候发现一个问题,在从机发送过程中,假设要发送0x01 0x02两个字节,在主机端则接收到的三个字节:0x00 0x01 0x02。。前面多了个0x00。在代码中有这么一条:HAL_DMA_SET_LEN(ch, SPI_PKT_LEN(spiTxPkt) + 1); /* slave DMA TX might drop the last byte */表明是发送3个字节。我想问一下其中的缘由。

谢谢。

Nutcracker:

请到蓝牙版面提问。

Barbara Wu:

我检查了我的BLE_Bridge的代码,并没有看到您所说的HAL_DMA_SET_LEN(ch, SPI_PKT_LEN(spiTxPkt) + 1); /* slave DMA TX might drop the last byte */ 这一段代码,能否请您更详细的告知具体位置?

您可以尝试在发送的数据参数后面加上一个回车换行符 这样看看是否会接收到多个字节

TracyMcgrady:

回复 Barbara Wu:

首先改配置为CC2541-SPI。然后在hal_uart.c中有

#if HAL_UART_SPI#include "_hal_uart_spi.c"#endif

在_hal_uart_spi.c中有HAL_DMA_SET_LEN(ch, SPI_PKT_LEN(spiTxPkt) + 1); /* slave DMA TX might drop the last byte */ 这个描述

Barbara Wu:

回复 TracyMcgrady:

这个应该是应为加了一个结束符SPI_SOF

TracyMcgrady:

回复 Barbara Wu:

SPI_SOF是包含在长度SPI_PKT_LEN(spiTxPkt)里的。SPI_PKT_LEN(spiTxPkt)是数据加上头尾后完整数据的长度。

Barbara Wu:

驱动是基于DMA实现的,不是SPI TX实现的。这也许不是最好的处理算法。你可以想办法绕过数据长度,例如在发送的数据里包含实际有用的数据长度,或者基于SPI TX重写SPI的驱动。

sindorei zeng:

回复 Barbara Wu:

你好:

       我想使用cc2541的硬件SPI ,但不知道怎么配置:需要修改哪些宏定义。

yukui cao:

你好! 

能否指教如何使用协议栈的spi。

赞(0)
未经允许不得转载:TI中文支持网 » CC2541 SPI使用疑问
分享到: 更多 (0)