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.

TMS320F280049: SPIB SIMO吴信号输出

Part Number: TMS320F280049
Other Parts Discussed in Thread: ADS131M06, C2000WARE

MCU SPI能输出时钟信号,SOMI能接收外部输入信号,但是SIMO无输出信号,一直为0

IO映射:

RESET :GPIO56

DRDY   :GPIO27

SCLK    :GPIO26

SOMI    :GPIO31

SIMO    :GPIO30

SPI从设备为ads131m06,不管mcu发出什么数据,SIMO上捕获到的数据总是0.

将GPIO30配置为普通IO,可以控制其高低电平。

请帮忙看看是哪里出了问题

初始化SPI代码:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void SPI_Initialize(void)
{
SpibRegs.SPICCR.bit.SPISWRESET = 0; //spi reset to configuration mode
SpibRegs.SPICCR.bit.CLKPOLARITY = 0; //DOut on falling Edge,Din on rising Edge
SpibRegs.SPICCR.bit.SPICHAR = (8-1); //16-bit word
SpibRegs.SPICCR.bit.SPILBK = 0; //loopback disabled
SpibRegs.SPICTL.bit.MASTER_SLAVE = 1; //Master
SpibRegs.SPICTL.bit.TALK = 1; //Transmit Enable
SpibRegs.SPICTL.bit.CLK_PHASE = 0; //normal clocking scheme,no delaying
SpibRegs.SPICTL.bit.SPIINTENA = 0; //Interrupt Disable
SpibRegs.SPIBRR.bit.SPI_BIT_RATE = SPI_BRR; //500kbps
SpibRegs.SPIPRI.bit.FREE = 1; //Halting on a breakpoint will not halt the SPI
DELAY_US(10);
//b15,SPIRST =1,resume FIFO to transmit or receive
//b14,SPIFFENA =1,enable FIFO
//b13,TXFIFO =1,release TX FIFO from reset
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • SPI从设备是ADS131M0x,所以即便MCU发送的数据全部为0,从设备也会将此数据当成NULL_COMMAND,进行应答

  • SPI从设备是ADS131M0x,所以即便MCU发送的数据全部为0,从设备也会将此数据当成NULL_COMMAND,进行应答

    以下是DSP参考手册截图

    以下是通讯时逻辑分析仪截图,Master实际发送数据为3个字节(0xA0,0x00,0x00),即读取地址为0的单个寄存器

    请帮忙分析一下,程序配置方面是否有问题?

  • 你好,你的代码有参考TI的例程吗?你先可以使用尝试一下。

    C:\ti\c2000\C2000Ware_4_03_00_00\device_support\f28004x\examples\spi

  • 程序是根据spi_ex1_loopback.c来编写的,除了IO脚不同外还禁用了Loopback功能。

  • CLKPOLARITY = 0,CLK_PHASE=0:MOSI上全为低电平

    CLKPOLARITY = 0,CLK_PHASE=1:MOSI上有不固定时机出现的脉冲

    CLKPOLARITY = 1,CLK_PHASE=0:MOSI上全为低电平

    CLKPOLARITY = 1,CLK_PHASE=1:MOSI上位置和宽度不固定的脉冲

  • 原因已经找到了。

    原因是将SPI设置为8位模式,发送数据时直接往SPITXBUF写入1个字节数据:

    此操作实际上是往SPITXBUF的低8位写数据。

    没有注意到手册上写的往SPITXBUF或SPIDAT写入数据时必须左对齐。