主题中讨论的其他器件: CC2630
工具/软件:TI-RTOS
大家好。 我使用 CC2630通过 SPI 与 ADS1291通信。 我认为我已经设置了正确的信号、但不知怎么、我仍然无法从 ADS1291检索数据。
以下是我的代码的外观:
int main (空)
{
Task_Params taskParams;
/*呼叫板初始化函数*/
Board_initGeneral();
Board_initUART();
/*将 ADS1291启动信号设置为高电平、~PWDN 设置为高电平、~CS 设置为低电平*/
myPinHandle = PIN_OPEN (&myPinState、myPinTable);
if (!myPinHandle){
System_abort ("初始化电路板引脚时出错\n");
}
/*构造 BIOS 对象*/
Task_Params_init (&taskParams);
taskParams.STACKSIZE = TASKSTACKSIZE;
taskParams.stack =_task0Stack;
Task_construct(&task0Struct,(Task_FuncPtr) myFxn、&taskParams、NULL);
/*启动 BIOS */
BIOS_start();
返回(0);
}
在 void myFxn (UARg arg0、UARg arg1)中 、我具有以下内容...
//------------------------------------------------
SPI_Handle 句柄;
SPI_Params 参数;
SPI_Transaction 事务;
int8_t rxBuf[6];//接收缓冲区
//初始化 SPI 并指定非默认参数
SPI_PARAMS_INIT (params);
params.bitrate = 12000000;
params.frameFormat = SPI_POL0_PHA1;
params.mode = SPI_MASTER;
params.transferMode = SPI_MODE_CALLACK;
params.transferCallbackFxn = transferCallback;
//配置事务
transaction.count = 6;//数据转换后的24个状态位+ 24位
transaction.txBuf =空;
transaction.rxBuf = rxBuf;
//打开 SPI 并执行传输
句柄= SPI_OPEN (Board_SPI0、¶ms);
//------------------------------------------------
注意事项:
我已将事务计数设置为6字节、因为我了解 ADS1291发送24个状态位+ 24位数据(因为 ADS1291只有一个通道)。 我对那个很好吗?
我已经将 transaction.txBuf 设置为 NULL、因为我只想在连续模式下检索数据、这是 ADS1291的默认模式。
我已将 SPI 传输模式设置为回调模式、然后我具有以下内容。
//------------------------------------------------
extern void transferCallback (SPI_Handle handle、SPI_Transaction *事务)
{
//开始另一个传输
SPI_TRANSFCTION (handle、transaction);
}
//------------------------------------------------
也就是说、如果在我的任务中执行以下操作
SPI_transfer (handle、&transaction);//当到达回调时将启动无限事务
while (1)
{
//尝试在此处获取数据,尝试通过 UART 将 rxBuf 发送到 PC 或类似设备。
}
我无法从 rxBuf 正确获取数据。 我缺少什么吗?
此致、
Diego Rodrigues