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.

[参考译文] CCS/EK-TM4C1294XL:EK-TM4C1294XL &SPILoopBack

Guru**** 2514995 points
Other Parts Discussed in Thread: ADS127L01

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/845768/ccs-ek-tm4c1294xl-ek-tm4c1294xl-spiloopback

器件型号:EK-TM4C1294XL
主题中讨论的其他器件:ADS127L01

工具/软件:Code Composer Studio

 
您好!
我在这里有点新。 我查看过旧帖子、但我找不到问题的答案。
我通过 Code Composer Studio 使用 EK-TM4C1294XL 版本:8.3.1.00004和 spilopback。 我还有 ADS127L01EVM。 
在这些器件中、我要制作 ADC、并希望使用 EK-TM4C1294XL (SPI)进行读取、而不是将其发送到 CAN 线路。
spiloopback.h 正在处理 EK-TM4C1294XL、但我无法从 ADS127L01EVM 读取任何数据。 
我的构建方式与 外部 SPI 环回示例所需的跳线连接类似。  | PD3->PQ0、PD2->PQ1、PD0->PQ2、PD1->PQ3  和 spilosopback 均可正常工作。

现在、
TM4C PQ1至 GND
ADS SCLK ->TM4C PQ0 -从器件
ADS DIN -> TM4C PQ2 -从器件
ADS DOUT -> TM4C PQ3 -从器件

ADS 输入频率为16MHz、输出(DOUT)频率约为130kHz。 它可以正常工作、我添加了示波器屏幕截图





我对该计划做了一些补充。

slaveSpiParams.transferMode = SPI_MODE_BLOCKING;//添加
slaveSpiParams.bitrate = 130000;//添加

这是我在 Code Composer 上的控制台
SPI 已初始化
SPI 已初始化
主器件:
完成

问:为什么我无法获取数据?
问:是否有更简单的示例可供您推荐?
问:此程序正在运行一次。 如果我添加一个"while loop",它能否连续工作?

谢谢你

/*===== spilopopback.c =====
//
//* XDCtools 头文件*/
#include 
#include 

/* BIOS 头文件*/
#include 
#include 

/* TI-RTOS 头文件*/
#include 
#include 

/*示例/板头文件*/
#include "Board.h"

#define SPI_MSG_LENGTH 30

#define TASKSTACKSIZE 768


Task_Structt task0Struct, task1Struct;
Char task0Stack[TASKSTACKSIZE],task1Stack[TASKSTACKSIZE];

unsigned char masterRxBuffer[SPI_MSG_LENG];
unsigned char masterTxBuffer[SPI_MSG_length]="Hello、这是主器件 SPI1234";

unsigned char slaveRxBuffer[SPI_MSG_length];
unsigned char slaveTxBuffer[SPI_MSG_length]="Hello、这是从器件 SPI1234";
/*=== slaveTaskFxn ===
*从任务的任务函数。
*
此任务以更高的优先级运行、因为从
设备*必须为主设备做好准备。 从器件 SPI 向
主器件发送一条*消息、并从
*主器件接收消息。
此函数的任务是静态创建的*。 请参阅工程的.cfg 文件。
//
空 slaveTaskFxn (UArg0、UArgarg1)
{
SPI_Handle slaveSpi;
SPI_Params slaveSpiParams;
SPI_Transaction slaveTransaction;

bool transferOK;

/*使用从模式初始化 SPI 句柄*/
SPI_Params_init (&slaveSpiParams);
slaveSpiParams.transferMode = SPI_MODE_BLOCKING;//eklendi
slaveSpiParams.mode = SPI_SLAVE;
slaveSpiParams.bitrate = 130000;
slaveSpi = SPI_open (Board_SPI1、&slaveSpiParams);
if (slaveSpi == NULL){
System_abort ("初始化 SPI\n"时出错);
}
否则{
system_printf ("SPI 已初始化\n");
}

/*初始化从属 SPI 事务结构*/
slaveTransaction.count = SPI_MSG_length;
slaveTransaction.txBuf =(ptr) slaveTxBuffer;
slaveTransaction.rxBuf =(ptr) slaveRxBuffer;

/*启动 SPI 传输*/
transferOK = SPI_transfer (slaveSpi、&slaveTransaction);

if (transferOK){
/*打印从机接收缓冲区的内容*/
System_printf ("从属设备:%s\n"、slaveRxBuffer);
}
否则{
System_printf ("从器件 SPI 传输失败");
}

/*取消初始化 SPI */
SPI_CLOSE (slaveSpi);
}
/*
===== masterTaskFxn ===
*主任务的任务函数。
*
*此任务在从
器件*任务之后以较低的优先级运行、以确保它已为事务做好准备。
*主器件 SPI 向从器件发送消息、并
*接收从器件发送的消息。 此函数的任务
*是静态创建的。 请参阅工程的.cfg
*文件。
//
void masterTaskFxn (UARg arg0、UARg arg1)
{
SPI_Handle masterSpi;
SPI_Transaction masterTransaction;
SPI_Params masterSpiParams;

bool transferOK;

masterSpiParams.bitrate = 130000;

/*将 SPI 句柄初始化为默认主控*/
masterSpi = SPI_open (Board_SPI0、NULL);
if (masterSpi == NULL){
System_abort ("初始化 SPI\n"时出错);
}
否则{
system_printf ("SPI 已初始化\n");
}

/*初始化主 SPI 事务结构*/
masterTransaction.count = SPI_MSG_length;
masterTransaction.txBuf =(ptr) masterTxBuffer;
masterTransaction.rxBuf =(ptr) masterRxBuffer;

/*启动 SPI 传输*/
transferOK = SPI_transfer (masterSpi、&masterTransaction);

if (transferOK){
/*打印主接收缓冲区的内容*/
System_printf ("主设备:%s\n"、masterRxBuffer);
}
否则{
System_printf ("主 SPI 传输失败");
}

/*取消初始化 SPI */
SPI_CLOSE (masterSpi);

System_printf ("done");

system_flush();
}/*

==== main ====
*/
int main (void)
{
/*构造 BIOS 对象*/
Task_Params taskParams;

/*呼叫板初始化功能。 *
Board_initGeneral();
Board_initGPIO();
Board_initSPI();

/*构造主/从任务线程*/
Task_Params_init (&taskParams);
taskParams.priority = 1;
taskParams.STACKSIZE = TASKSTACKSIZE;
taskParams.stack =_task0Stack;
Task_construct(&task0Struct,(Task_FuncPtr) masterTaskFxn、&taskParams、NULL);

taskParams.stack =_task1Stack;
taskParams.priority = 2;
Task_construct(&task1Struct,(Task_FuncPtr) slaveTaskFxn、&taskParams、NULL);

/*打开用户 LED */
GPIO_WRITE (Board_LED0、Board_LED_ON);

system_printf ("启动 SPI 环回示例\n 系统提供程序设置为"
" SYSMIN。 停止目标以查看 ROV 中的任何 SysMin 内容。\n");
/* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
system_flush();

system_printf ("此示例要求将外部电线连接到"
"接头引脚。 请参阅入门指南"
"详细信息。\n");
/* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
system_flush();

/*启动 BIOS */
BIOS_start();

返回(0);
} 


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

    您好 Riza、

    回送示例是一个基本示例、用于展示如何向 TM4C LaunchPad 上的 SPI 通道发送和接收数据。 为了使其适应您的 EVM、您需要取出从设备代码并确保主设备代码向 ADS127L01发送正确的数据包。

    如果您需要 TI-RTOS、这似乎是最简单的示例、因为它显示了如何正确考虑 SPI 主器件。 在那里、您需要确保发送正确的数据包并处理接收到的数据。

    如果您不需要 TI-RTOS 、您可以查看 TivaWare 中外设示例文件夹下的 SPI_MASTER.c 示例。

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

    感谢您的快速回复、

    我创建了一个 CCS 工程、但无法将"SSI"导入工程、如 pictame_1中所示。 但其他项目可以自动添加。?(Picture _2)

    -

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

    您好 Riza、

    SSI 外设示例不是完整的项目。 您需要为 LaunchPad 导入 Project0、然后复制/粘贴要导入的 SSI 外设示例的.c 文件的整个内容、并将 project0.c 文件的内容替换为这些内容。

    顺便说一下、请尝试单击已解决的帖子并保存、直至问题完全关闭。

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

    您好 Ralph Jacobi、

    感谢您的推荐示例、我正在处理这个问题。但再说一次、我有一个问题。我已经处理这个问题大约3天了。我更改了我的 MCU 的引脚分配;  

    我更改了以下修复程序、并显示了我收到的第一个错误。

    GPIOPinConfigure (GPIO_PA2_SSI0CLK);
    GPIOPinConfigure (GPIO_PA3_SSI0FSS);
    GPIOPinConfigure (GPIO_PA4_SSIORX);
    GPIOPinConfigure (GPIO_PA5_SSI0TX);

    至;

    GPIOPinConfigure (GPIO_PA2_SSI0CLK);
    GPIOPinConfigure (GPIO_PA3_SSI0FSS);
    GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);//此处
    GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);  //此处

    我认为其他设置是相同的。  我想知道错误是否会因为代码而起?

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

    您好 Riza、

    CCS 错误适用于 uartstdio.c 中的函数 您似乎没有正确添加这些文件。

    有关如何解决该问题的信息,请参阅此帖子: http://e2e.ti.com/support/microcontrollers/other/f/908/p/753675/2787705#2787705

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

    谢谢、

    最棒的

    Rıza μ A