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

cc1310 spi通信不成功

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);
}

Viki Shi:

请参考这边的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例程

user4988634:

回复 Viki Shi:

#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;/*******************************************************************************
* @fnSpi_open
* @briefOpen the RTOS SPI driver
* @parambitRate - transfer speed in bits/sec
* @returntrue 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;
}/*******************************************************************************
* @fnSpi_close
*
* @briefClose the RTOS SPI driver
*
* @returnnone
*/
void Spi_close(void)
{if (spiHandle != NULL){// Close the RTOS driverSPI_close(spiHandle);spiHandle = NULL;}
}

spi口是 8 9 10

Dong Chen7:

回复 user4988634:

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

user4988634:

回复 Dong Chen7:

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

Dong Chen7:

回复 user4988634:

Hi

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

Dong Chen7:

回复 user4988634:

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

user4988634:

回复 Dong Chen7:

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

Dong Chen7:

回复 user4988634:

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

Dong Chen7:

回复 user4988634:

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

Dong Chen7:

回复 user4988634:

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

赞(0)
未经允许不得转载:TI中文支持网 » cc1310 spi通信不成功
分享到: 更多 (0)