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