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

CC1310: spi slave 通讯异常问题,

Part Number:CC1310

你好,我感觉这个   CC1310的SPI  通讯非常异常而且诡异。时而正常,时而不正常,我是使用 CC1310  做 spi SLAVE的例子

正常的通讯如下,CC1310 作为从机回复的时候  前面回复一个数据 ,结尾回复几个数据

正常的整体波形如下

但是运行着,就大量的出错,什么都不动的情况下,就大量出错,数据恢回复的位置也是不对的变成了下面这个样子

我的SPI程序如下

/*———————————————————————————————–
* spi init  初始化程序如下
* ———————————————————————————————-*/
int SPI_Configration(void)
{
SPI_Params spiParams;

SPI_init();
GPIO_setConfig(CC1310_LAUNCHXL_SPI_FLASH_CS, GPIO_CFG_INPUT);

SPI_Params_init(&spiParams);
spiParams.frameFormat = SPI_POL0_PHA1;
spiParams.mode = SPI_SLAVE;
spiParams.transferCallbackFxn = NULL;
spiParams.transferTimeout = SPI_WAIT_FOREVER;
spiParams.transferMode = SPI_MODE_BLOCKING;
spiParams.dataSize = 8;
//spiParams.bitRate = 10000;
slaveSpi = SPI_open(Board_SPI_SLAVE, &spiParams);

if(slaveSpi == NULL) return 0;

return 1;
}

/*———————————————————————————————–
* int SPI_TXRX(uint8_t *SPITxBuffer,uint8_t *SPIRxBuffer)   发送数据如下
* ———————————————————————————————-*/
int SPI_Transfer(uint8_t *SPITxBuffer,uint8_t *SPIRxBuffer)
{
bool transferOK;
SPI_Transaction transaction;

memset((void *) SPIRxBuffer, 0, SPI_MAXLEN);
transaction.count = SPI_MAXLEN;
transaction.txBuf = (void *) SPITxBuffer;
transaction.rxBuf = (void *) SPIRxBuffer;

transferOK = SPI_transfer(slaveSpi, &transaction);

if(transferOK)
return 1;
else
return 0;
}

我觉得这个 SPI功能应该是 哪里有问题的。每次回复的时候  我填充  SPITxBuffer  都是按照固定格式填充进去的。为什么运行过程中会错乱。

Yolande Wang:

您好,

user4248680 说:正常的通讯如下,CC1310 作为从机回复的时候  前面回复一个数据 ,结尾回复几个数据

您描述的情况我有些不太理解,能再具体一点吗?或者说您想在什么条件下达到一个什么样的效果?

这个链接有经验分享希望可以帮助到您:https://e2echina.ti.com/support/wireless-connectivity/sub-1-ghz/f/sub-1-ghz-forum/695735/cc1310-spi-slave/2584029?tisearch=e2e-sitesearch&keymatch=spi%25252525252525252520slave#2584029

赞(0)
未经允许不得转载:TI中文支持网 » CC1310: spi slave 通讯异常问题,
分享到: 更多 (0)