一、配置SPI
在SYSFONFIG中增加一个GPIO 作为片选信号。配置如下:
在SYSFONFIG中增加一个三线SPI接口。配置如下:
保存Board.c和Board.h。
二、导入工程"empty"
点击菜单“File”->“Imports”,在弹出对话框中选择“CCS Projects”.
点击Browse选择例程“empty”所在目录,我的目录为:C:\ti\simplelink_cc2640r2_sdk_5_30_00_03\examples\rtos\CC2640R2_LAUNCHXL\drivers\empty\tirtos\ccs
\
三、代码改动
导入工程后将根目录的Board.h、CC2640R2_LAUCHXL.C、CC2640R2_LAUCHXL.h三文件删除。
将前面生成的Board.c和Board.h拷贝到项目根目录下。
在empty.c中将代码修改如下:
```c
/*
* ======== empty.c ========
*/
/* For usleep() */
#include <unistd.h>
#include <stdint.h>
#include <stddef.h>
/* POSIX Header files */
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
/* Driver Header files */
#include <ti/drivers/GPIO.h>
// #include <ti/drivers/I2C.h>
#include <ti/drivers/SPI.h>
#include <ti/drivers/UART.h>
// #include <ti/drivers/Watchdog.h>
/* Board Header file */
#include "Board.h"
/*
* ======== mainThread ========
*/
void *mainThread(void *arg0)
{
SPI_Handle masterSpi;
SPI_Params spiParams;
SPI_Transaction transaction;
char buf[1]={0x11};
// uint32_t i;
// bool transferOK;
// int32_t status;
GPIO_init();
SPI_init();
/* Open SPI as master (default) */
SPI_Params_init(&spiParams);
spiParams.frameFormat = SPI_POL0_PHA1;
spiParams.bitRate = 400000;
masterSpi = SPI_open(Board_SPI0, &spiParams);
transaction.count = 1;
transaction.txBuf = buf;
GPIO_write(CS, 1);
GPIO_write(CS, 0);
SPI_transfer(masterSpi, &transaction);
GPIO_write(CS, 1);
while (1) {
}
}
四、试验现象
将CC2640R2_LAUCHXL的DIO11(CS)、DIO10(CLK)、DIO9(MISO)、DIO8(MOSI)连接到逻辑分析仪,编译并运行empty工程,逻辑分析仪会显示SPI的传输时序和数据(0x11)。