This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/ADS1291:与 CC2630进行 ADS1291 SPI 通信

Guru**** 2553450 points
Other Parts Discussed in Thread: ADS1291, CC2630

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/614125/rtos-ads1291-ads1291-spi-communication-with-cc2630

器件型号:ADS1291
主题中讨论的其他器件: 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、&params);

//------------------------------------------------

注意事项:

我已将事务计数设置为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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Diego、

    我很难通过代码来判断实际发生了什么。 通过使用示波器或逻辑分析仪探测 SPI 引脚并将其与数据表对通信协议的预期进行比较、可以更轻松地调试通信问题。 您能否捕获 SPI 信号并在此处发布图片?

    Brian