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.

[参考译文] 编译器/TMS320F28027:TMS320F28027发布 SPI

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/680640/compiler-tms320f28027-tms320f28027-issue-spi

器件型号:TMS320F28027

工具/软件:TI C/C++编译器

您好!

我正在使用 TMS320F28027、我想设置 SPI 接口以与 Raspberry PI 配合使用。 问题在于、RXFFIENA 寄存器变为高电平一次、然后中断被激活、但该寄存器从不变为低电平。 它不再进入回调、我认为这是由于该寄存器的永久高电平状态。 因此、我要感谢您的帮助、以了解这种情况的发生原因。

另一个问题是发送回调永远不会进入。

这是我的代码。

void SPIA_Init (void (* TX_int)(void)、void (* Rx_int)(unsigned char)
){


EALLOW;

SpiaRegs.SPICCR.bit.SPISWRESET = 0;//复位条件

SpiaRegs.SPICCR.bit.CLKPOLARRegis = 1;// SPICTRIST.STAL.SPICT.STAL.SPICT.STAL.SPICT.STAL.SPICS0


;SPICT.SPICT.SPICT.SPICT.SPICT.SPICT.STAL.SIT.SPICS/ SPICT.STAL.SIT.STAL.SIT.STAL.SIT.SPICS/ SPICRIST.STINT.SPICS/ SPICRIST.SPICRIST.STINT.STINT.STINT.



/* SPI_A FIFO 模式*/

SpiaRegs.SPIFFRX.bit.RXFFIL = 4; //将 RX FIFO 级别设置为0
SpiaRegs.SPIFFRX.bit.RXFFIENA=1;

SPIA_Rx_CALLIBRAY = Rx_int;
SPIA_TX_CALLBACK = TX_int;

SpiaRegs.SPICCR.bit.SPISWRESET = 1;

EDIS;

DINT;

//启用 SCI 接收中断
Hwi_create (72、SPIARX_ISR、NULL、NULL);//在 PIE 组6
中启用 SPIRXINTA Hwi_create (73、SPIATX_ISR、NULL、NULL);//在 PIE 组6

EINT 中启用 SPIRXINTA; //在 CPU 级别启用中断

返回;
}

void SPIARX_ISR (UARg arg)
{
RDATA[1]= SpiaRegs.SPIRXBUF;//从机读取数据
RDATA[2]= SpiaRegs.SPIRXBUF;//从机读取数据
RDATA[3]= SpiaRegs.SPIRXBUF


;//从机读取数据 RDIRECT_4;//从机读取数据 RDIRECT_SPIRF;//从机读取数据 RTE.SPIRXBUF;// SPIRX4= SPIRXC.0/从机读取数据 RTE.SPIRXT./SPIRXBUF
(* SPIA_Rx_callback)(RDATA[1]); //将数据发送到 sci_callback
EALLOW 指向的函数;

SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;//清除中断标志
// PieCtrlRegs.PIEACK.ALL=0x20; //发出 PIE ack
EDIS;
}

void SPIATX_ISR (UArg_arg)
{
//if (SPIA_TX_callback!= 0)
//(* SPIA_TX_callback)(); //执行 sci_callback
指向的函数}

void SPIATX_ISR (UArg)
{
SpiaRegs.SPITXBUF = sdata[1];//从器件发送数据

SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACK.All|=0x20; //发出 PIE ACK
//if (SPIA_TX_CALLBACK!= 0)
//(* SPIA_TX_CALLBACK)(); //执行 sci_callback
指向的函数}

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

    我写信告诉您、已指派一名 C2000团队成员回答此帖子。

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

    此查询与您创建的以下查询的副本类似。 我要关闭这个。 请避免为同一问题创建多个查询。
    请使用以下查询进行进一步沟通。
    e2e.ti.com/.../680641

    谢谢
    Vasudha