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/TMS320F28379D:SPI

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/697647/ccs-tms320f28379d-spi

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

您好,

有一个问题 ,需要 建议。
现在、我想在 CPU2中使用 spib、GPIO24、GPIO25、GPIO26、GPIO27。

CPU1代码:将 GPIO 设置为 CPU2和 SPI 模式。
GPIO_SetupPinOptions (24、GPIO_INPUT、GPIO_PULLUP|GPIO_异 步);
GPIO_SetupPinMux (24、GPIO_MUX_CPU2、0x06);
GPIO_SetupPinOptions (25、GPIO_INPUT、GPIO_PULLUP|GPIO_异 步);
GPIO_SetupPinMux (25、GPIO_MUX_CPU2、0x06);
GPIO_SetupPinOptions (26、GPIO_INPUT、GPIO_PULLUP|GPIO_异 步);
GPIO_SetupPinMux (26、GPIO_MUX_CPU2、0x06);
GPIO_SetupPinOptions (27、GPIO_INPUT、GPIO_PULLUP|GPIO_异 步);
GPIO_SetupPinMux (27、GPIO_MUX_CPU2、0x06);
DevCfgRegs.CPUSEL6.bit.SPI_B = 1;//CPU2 SPI-B

CPU2代码:在 main 函数中设置 FIFO 并启用中断
SpibRegs.SPIFFTX.ALL = 0xC060;//启用 FIFO、启用 TX FIFO 中断、将 TX FIFO 级别设置为16
SpibRegs.SPIFFRX.ALL = 0x0070;//启用接收 FIFO 中断,将 RX FIFO 级别设置为16,清除 FFRXINT 标志
SpibRegs.SPIFFCT.ALL = 0x00;
SpibRegs.SPIFFTX.bit.TXFIFO=1;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;//接收 FIFO 复位
SpibRegs.SPICCR.bit.SPISWRESET = 0;
SpibRegs.SPICCR.bit.CLKPOLARITY = 0;
// SpibRegs.SPICCR.bit.SPICHAR =(16-1);
SpibRegs.SPICCR.bit.SPICHAR =(8-1);
// SpibRegs.SPICCR.bit.SPILBK = 0;
SpibRegs.SPICCR.bit.SPILBK = 0;
//启用主设备(0 =从设备,1 =主设备)
//启用传输(TALK)
//时钟相位(0 =正常、1 =延迟)
//禁用 SPI 中断
SpibRegs.SPICTL.bit.MASTER_SLAVE = 1;
// SpibRegs.SPICTL.bit.MASTER_SLAVE = 0;
SpibRegs.SPICTL.bit.TALK = 1;
SpibRegs.SPICTL.bit.CLK_PHASE = 0;
SpibRegs.SPICTL.bit.SPIINTENA=0;
//设置波特率
SpibRegs.SPIBRR.bit.SPI_BIT_RATE = SPI_BRR;//500kHz
SpibRegs.SPIPRI.bit.FREE = 1;
//解除 SPI 复位
SpibRegs.SPICCR.bit.SPISWRESET = 1;


cputimer statemachine 中的 CPU2代码,每隔3ms 轮询一次中断标志:
if (1 = SpibRegs.SPIFFRX.bit.RXFFINT)

for (i=0;i<16;i++)

RDATA[i]= SpibRegs.SPIRXBUF;//读取数据

SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1;//清除溢出标志
SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;//清除中断标志


如果(1 = SpibRegs.SPIFFTX.bit.TXFFINT)//当 DSP 发送数据时,SCLK 正在运行并且 STe 被下拉至低电平。


for (i=0;i<16;i++)


sdata[i]++;
如果(sdata[i]= 0x100) sdata[i]= 0;
SpibRegs.SPITXBUF= sdata[i];//发送数据

SpibRegs.SPIFFTX.bit.TXFFINTCLR=1;//清除中断标志




我的问题是 CPU2可以接收数据,并在 clk 运行时下拉。但我的 Simo 引脚上没有数据。 我使用示波器检测 ste、clk 和 SOMI、除 Simo 外、所有引脚均正常。 Simo 引脚在示波器屏幕上显示为低电平。

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

    这是答案,dataformat 的规则是 spitxbuf 是左对齐,我错过了它。

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