微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541 SPI使用疑问

CC2541 SPI使用疑问

时间:10-02 整理:3721RD 点击:

我在使用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个字节。我想问一下其中的缘由。

谢谢。

请到蓝牙版面提问。

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

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

首先改配置为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 */ 这个描述

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

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

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

你好:

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

你好! 

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top