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.

关于6748作为主机,spi接收异常



您好!

SPI作主机发送时序正常,但是接收数据时,从示波器上主机没有提供CLK信号,

  • void SPI0Init(void)
    {
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_SPI0, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
    SPIPinMuxSetup(0);
    SPI0CSPinMuxSetup(1);
    SPIReset(SOC_SPI_0_REGS);// 复位
    SPIOutOfReset(SOC_SPI_0_REGS);// 取消复位
    SPIModeConfigure(SOC_SPI_0_REGS, SPI_MASTER_MODE);// 配置 主 / 从模式
    ***(SOC_SPI_0_REGS, 228000000, 1000000, SPI_DATA_FORMAT0);// 配置时钟
    unsigned int val = 0x00000E02;
    SPIPinControl(SOC_SPI_0_REGS, 0, 0, &val);// 使能 SIMO SOMI CLK 引脚
    SPIDefaultCSSet(SOC_SPI_0_REGS, 0x00);//设置CS1空闲时为高电平
    SPI0DataFormatConfig(SPI_DATA_FORMAT0);// 配置数据格式
    SPIDat1Config(SOC_SPI_0_REGS,(SPI_CSHOLD | SPI_DATA_FORMAT0), 0x02);
    SPIEnable(SOC_SPI_0_REGS);// 使能 SPI
    }
    void Spi0TransByte(unsigned char Data)
    {
    while (!SPIIntStatus(SOC_SPI_0_REGS, SPI_TRANSMIT_INT));
    SPITransmitData1(SOC_SPI_0_REGS, Data);
    }
    UINT32 Spi0ReceiveByte()
    {
    while (!SPIIntStatus(SOC_SPI_0_REGS, SPI_RECV_INT));
    return(SPIDataReceive(SOC_SPI_0_REGS));
    }
  • 图片显示不出来,需要到右下角的"使用高级编辑器编辑文本"插入图片。

    C6748 SPI做主的话,接收收据时,尝试dummy write(空写)一下产生时钟信号。
  • (空写)可以产生时钟信号,MISO信号线上有数据,但是执行Spi0ReceiveByte()返回的时0X00,
  • 请看一下RRDY标志位有没有置起来?