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/SW-EK-TM4C129EXL:SPI 问题

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/713339/rtos-sw-ek-tm4c129exl-issues-with-spi

器件型号:SW-EK-TM4C129EXL

工具/软件:TI-RTOS

      我需要通过 SPI 协议每0.5ms 发送一次数据。 我已在状态上配置了0.5毫秒的计时器、并添加了用于通过 SPI 发送数据的代码、在配置的计时器的 ISR 中、它仍然不起作用。 这是代码

/* XDCtools 头文件*/
#include 
#include 
#include 

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

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

/*板头文件*/
#include "Board.h"
#include "driverlib/gpio.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include "driverlib/timer.h"
#include 

UChar array[8]={0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF};
UChar receiveBuffer[8];
UChar transmitBuffer[8];

void spiDataSend ()
{
int l;
对于(l = 0;l < 8;l++)
{
transmitBuffer[l]=数组[l];
}
int i;
SPI_Handle SPI;
SPI_Params spiParams;
SPI_Params_init (&spiParams);
spiParams.dataSize = 8;// dataSize 的范围可以是4到8位*/
spiParams.transferMode = SPI_MODE_BLOCKING;
spiParams.mode = SPI_MASTER;
spiParams.transferCallbackFxn =空;
SPI = SPI_OPEN (Board_SPI0、&spiParams);
if (SPI == NULL){
/*打开 SPI 时出错*/
}
SPI_Transaction spiTransaction;
bool transferOK;
spiTransaction.count = 8;
spiTransaction.txBuf = transmitBuffer;
receivTransaction.rxBuf = spieBuffer;
transferOK = SPI_transfer (SPI、&spiTransaction);

if (transferOK){
/* SPI 传输或传输中出现错误*/

System_printf ("SPI 传输成功\n");
system_flush();
}
System_printf ("transmitBuffer is :\n");
system_flush();
对于(I = 0;I < 8;I++)
{
System_printf ("%x "、transmitBuffer[i]);
}
System_printf ("\n");
system_flush();
SPI_CLOSE (SPI);
}
void hw_init()
{
Board_initGeneral();
Board_initGPIO();
Board_initSPI ();
}
/*
==== main ====
*/
int main (void)
{

hw_init();

/*启动 BIOS */
BIOS_start();
返回(0);
}

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

    几个方面。
    1.小心进行 System_flush 调用。 这会导致 CCS 暂停目标、读取 CIO 缓冲器并恢复目标。 我可以降低实时性能。 注意:我假设您在.cfg 文件中使用 SysMin。

    2.任务调用 spiDataSend 而不是 Hwi (计时器)。 您是计时器、可以发布任务待处理的信标。

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

    您好、Naveen、

    这是否得到了解决?

    Todd

    [更新:标记为 TI 认为已解决、因为原始海报8/3没有回复]

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