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/TMS320F28027:无 FIFO 和中断的 SPI 转换 TMS320F28027

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/638886/ccs-tms320f28027-spi-transmision-without-fifo-and-with-interrupts-tms320f28027

器件型号:TMS320F28027

工具/软件:Code Composer Studio

你好  

我尝试了在没有 FIFO 和中断的情况下进行简单的 SPI 转换。

在发送字符触发 SPIRXINTA 中断后。  

我不明白为什么。   我在发送字符之后需要 SPITXINTA。

这是我的初始化文件:

EALLOW;
PieVectTable.SPIRXINTA =& SpiRxInt;
PieVectTable.SPITXINTA =& SpiTxInt;
EDIS;

PieCtrlRegs.PIEIER6.bit.INTx2 = 1;//在 PIE 中启用 SPI TX 中断:组6中断2
;PieRx6中断

| PIE 中断1;SPIERR/ INT.Rx 中断1
//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM

void SPI_init ()
{
CLK_enableSpiaClock (myClk);
SPI_setCharLength (mySpi、SPI_CharLength _8_Bits);
SPI_setClkPhase (mySpi、SPI_ClkPhase_Normal);
SPI_setClkPolarity (mySpi、SPI_ClkPolarity_OutputRisingEdge_InputFallingEdge);
SPI_setMode (mySpi、SPI_Mode_Master);
SPI_setTxDelay (mySpi、0);
SPI_enableTx (mySpi);
SPI_setBaudRate (mySpi、SPI_bAUDRAATE_500_kbaud);
SPI_ENABLE (mySpi);
SPI_setPriority (mySpi、SPI_Priority_freeRun);
SPI_enableInt (mySpi);
SPI_enableLoopBack (mySpi);
SPI_RESET (mySpi);
return;
}

中断 void SpiRxInt (void)
{
GPIO_setHigh (myGpio、g_GPIO_SPI_cs);
PieCtrlRegs.PIEACK.all = PIEACK_group6;//清除中断标志和 PIE ACK

}
中断 void SpiTxInt (void)
{
GPIO_setHigh (myGpio、g_group6
;pio_pipe_flag 和 PIEACK = PIEACK
} 

MAIN ()

GPIO_setLow (myGpio、g_GPIO_SPI_cs);
SPI_WRITE (mySpi、0x55<<8);

 

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

    Rasto89

    当不使用 FIFO 时、SPI 只使用 SPIINT/SPIRXINT 线路来实现中断。 SPITXINT 线路未激活。

    请参阅 SPI 用户指南(http://www.ti.com/lit/SPRUG71)中的第1.6.1节 SPI 中断。 图7和表4清楚地描述了这种行为。

    此致、
    标记