微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > cc1310 spi通信不成功

cc1310 spi通信不成功

时间:12-23 整理:3721RD 点击:

Hi,

我现在使用硬件SPI,调用SPI_transfer()函数发送数据时卡死,能帮忙解决一下吗。

还有就是,默认的代码里面SPI的pin配置如下:

CC1310_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master out - slave in */
CC1310_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN,
CC1310_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN,

为什么要这样配置,没有配置输出,全是输入。

我的SPI代码如下:

static SPI_Handle spi_handle;

int spi_init(void)
{
SPI_Params spiParams;

SPI_init();

SPI_Params_init(&spiParams);

spi_handle = SPI_open(Board_SPI0, &spiParams);
if (!spi_handle) {
return false;
}

return true;
}

void spi_write_data(unsigned char data)
{
SPI_Transaction masterTransaction;

masterTransaction.count = 1;
masterTransaction.txBuf = (void *)&data;
masterTransaction.arg = NULL;
masterTransaction.rxBuf = NULL;

SPI_transfer(spi_handle, &masterTransaction);
}

请参考这边的SPI driver guide: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/2_14_02_22/exports/tirtos_full_2_14_02_22/docs/doxygen/html/_s_p_i_c_c26_x_x_d_m_a_8h.html【与CC1310类似】

另外,在 Sensor Controller Studio--help section里,也有部分SPI例程

#include "Board.h" #include "spitext.h" #include <ti/drivers/spi/SPICC26XXDMA.h> #include <ti/drivers/SPI.h> #include <ti/drivers/spi/SPICC26XXDMA.h> #include <ti/drivers/dma/UDMACC26XX.h> static SPI_Handle spiHandle = NULL; /******************************************************************************* * @fn Spi_open * @brief Open the RTOS SPI driver * @param bitRate - transfer speed in bits/sec * @return true if success */ bool Spi_open(void) { SPI_Params spiParams; SPI_init(); /* Configure SPI as master */ SPI_Params_init(&spiParams); spiParams.bitRate = 1000000; spiParams.mode = SPI_MASTER; spiParams.transferMode = SPI_MODE_BLOCKING; spiParams.frameFormat = SPI_POL0_PHA0; /* Attempt to open SPI. */ spiHandle = SPI_open(Board_SPI0, &spiParams); return spiHandle != NULL; } uint8_t Spi_Read_Write(uint8_t data) { uint8_t data1; SPI_Transaction masterTransaction; masterTransaction.count = 1; masterTransaction.txBuf = &data; masterTransaction.rxBuf = &data1; masterTransaction.arg = NULL; SPI_transfer(spiHandle, &masterTransaction); return data1; } /******************************************************************************* * @fn Spi_close * * @brief Close the RTOS SPI driver * * @return none */ void Spi_close(void) { if (spiHandle != NULL) { // Close the RTOS driver SPI_close(spiHandle); spiHandle = NULL; } }

spi口是 8 9 10

感谢回复,看了你代码,跟我代码没有什么区别,就多了一个读数据的部分。

我使用了很久了,你可以用示波器看看数据,另外8,9 ,10的顺序不要搞错了

Hi

我发现没有配置MISO就会有这个问题,因为我不需要读,所以就没有配置。

看一下你pin confg那里怎么配置的。

不需要自己配置,默认配置了,调用Spi_open();,就可以发送和接受数据了。你用C:\ti\simplelink_cc13x0_sdk_1_30_00_06\examples\rtos\CC1310_LAUNCHXL\drivers\empty这个历程移植看看

用empty那个测试程序,发送数据的时候一样会卡死。

你那里有没有测试程序,发一个我试试。

你那里有没有测试程序,发一个我试试。

7128.1 CC1310_TEXT_UART_SPI.rar

非常感谢,SPI的初始化必须在一个线程里面,如果在main()函数里面的话就会有这种情况。

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

网站地图

Top