请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2650EM-5D-RD 工具/软件:TI-RTOS
大家好、我正在尝试使用 simple_peripheral 项目在 CC2650DK-5XD 芯片中实现 SPI 通信。
我已经用一个外部线程创建了一个外部文件、这个外部线程我被称为 SPIads1263.c、此文件在 main.c 上被调用并以与简单外设任务相同的优先级执行。
问题是、一周前、它已经开始工作、但在我执行这个新的执行之后、我的 MOSI 引脚没有显示任何内容
示波器中。
我已经调试了 SPI_TRANSF()和 SPI_OPEN ()函数,所有函数都返回预期的返回值。
当我尝试使用 PIN_setOutput 时、电路板中的引脚也在工作、因此这不是电路板问题。
请不要知道要尝试其他什么。
下面是代码:
/*********
* SPIads1263
*/
*********
*包括
*/
#include
#include
#include "SPIads1263.h"
#include "board.h"
#include "util.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*********
*常量
*/
#define SPIads1263_task_priority 2
#define SPIads1263_task_stack_size 512
/*********
*全局变量
*/
static PIN_Handle BoardGpioInitHandle;
static PIN_State BoardGpioInitState;
static SPI_Handle handle;
static SPI_Params params;
static SPI_Transaction transaction;
静态 uint8_t txBuf[]="Hello World";//传输缓冲
器静态 uint8_t rxBuf[11]; //接收缓冲
器静态 bool ret = false;
/*********
*局部变量
*/
//任务配置
Task_StructS SPIads1263Task;
Char SPIads1263TaskStack[SPIads1263_task_stack_size];
/*********
*本地函数
*/
static void SPIads1263_init (void);
static void SPIads1263_taskFxn (UArg a0、UArg A1);
/*********
*公共职能
*/
*@fn SPIads1263_createTask
*
*@简单 BLE 外设的简短任务创建函数。
*
*@param 无。
*
*@返回无。
//
void SPIads1263_createTask (void)
{
Task_Params taskParams;
//配置任务
Task_Params_init (_taskParams.stack
);
任务 Params.stack = SPIads1263TaskStack;任务 Params.STACKSIZE = SPIads1263_task_stack_size;任务 Params.stack = SPIadparams.task_priority (任务1263_task_params.task_params.task_params.task_params.task_params. SPIads1263_taskFxn、&taskParams、NULL);
}
/*********
*@fn SPIads1263_init
*
*@在初始化期间调用的简短说明、其中包含应用
程序* 特定初始化(即硬件初始化/设置、
* 表初始化、加电通知等)和
* 配置文件初始化/设置。
*
*@param 无。
*
*@返回无。
*/
static void SPIads1263_init (void)
{
BoardGpioInitHandle = PIN_OPEN (&BoardGpioInitState、BoardGpioInitTable);
if (!BoardGpioInitHandle){
System_abort ("初始化板 LED 引脚时出错");
}
//初始化 SPI 并指定非默认参数
SPI_PARAMS_INIT (params);
params.bitrate = 1000000;
params.frameFormat = SPI_POL1_PHA1;
params.mode = SPI_MASTER;
//配置事务
transaction.count = sizeof (txBuf);
transaction.txBuf = txBuf;
transaction.rxBuf = rxBuf;
//Init SPI after Block parameters and before opening
spi_init();
//打开 SPI
句柄= SPI_open (0、params);
如果(!handle){
System_printf ("SPI 未打开");
}
}
静态空 SPIads1263_taskFxn (UARg a0、UARg A1)
{
uint32_t currVal = 0;
//初始化应用程序
SPIads1263_init ();
//
应用程序主循环(;)
{
currVal = PIN_getOutputValue (Board_DK_LED3);
PIN_setOutputValue (BoardGpioInitHandle、Board_DK_LED3、!currVal);
currVal = PIN_getOutputValue (IOID_11);
PIN_setOutputValue (BoardGpioInitHandle、IOID_11、!currVal);
//执行信息的 SPI 传输
// SPI_TRANSFCTION (句柄、事务);
RET = SPI_transfer (handle、&transaction);
如果(!ret){
System_printf ("未成功的 SPI 传输");
}
Task_sleep (100000);
}