您好!
SPI 似乎在环回模式下工作。 我发送数据并看到它通过 SPIRXBUF 返回。
当我尝试连接到真实的器件时、我在 MISO 引脚上看到预期的数据(使用逻辑分析仪)、但没有通过从 SPIRXBUF 读取来看到它。
我将 GPIO17配置为
// GPIO-17 -引脚功能= SPI MISO
GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1;// 0=GPIO、1=SPISOMI-A、2=Resv、3=TZ3
GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 0x3;//异步
GpioCtrlRegs.GPADIR.bit.GPIO17 = 0;// 1=输出、0=输入
我要使用配置 SPI
// SPI 复位
SpiaRegs.SPICCR.bit.SPISWRESET = 0x0;
SpiaRegs.SPICCR.bit.SPISWRESET = 0x1;
SpiaRegs.SPICCR.bit.SPICHAR = 0x7;// 8位
SpiaRegs.SPICTL.bit.talk = 0x1;//发送启用
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 0x1;//主控方
SpiaRegs.SPICTL.bit.OVERRUNINTENA = 0x1;//启用 SPI 溢出 INT
SpiaRegs. SPIBRR = 29;// 1Mbaud @ LSPCLK = 30 MHz
SpiaRegs.SPICTL.bit.CLK_PHASE = 0x1;// SPI_Clk Phase_Delayed
SpiaRegs.SPICCR.bit.SPILBK = 0x0;//启用/禁用环回
SpiaRegs.SPIFFTX.bit.SPIFFENA = 0x1;// SPI FIFO 增强启用
SpiaRegs.SPIFFTX.bit.SPIRST = 0;
SpiaRegs.SPIFFTX.bit.SPIRST = 1;
SpiaRegs.SPIFFTX.bit.TXFIFO = 0x0;//复位发送 FIFO
SpiaRegs.SPIFFTX.bit.TXFFINTCLR = 0x1;
SpiaRegs.SPIFFRX.bit.RXFIFORESET = 0x0;//复位接收 FIFO
SpiaRegs.SPIFFRX.bit.RXFFIL = 0x3;// 3个字处的中断级别
SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 0x1;
SpiaRegs.SPIFFRX.bit.RXFFIENA = 0x1;//启用 Rx FIFO 中断
SpiaRegs.SPIFFTX.bit.TXFIFO = 0x1;
SpiaRegs.SPIFFRX.bit.RXFIFORESET = 0x1;
我要将中断设置为以三个字进行接收、
进入 SPI ISR 时、SPIFFRX = 0x23A3、在我从 SPIRXBUF 读取三次之后、SPIFFRX = 0x20A3
我正在读取 SPIRXBUF 的
易失性 uint16_t 数据;
数据= SpiaRegs。 SPIRXBUF;
该读取在回送模式中按预期工作
有什么想法、为什么我看不到数据从引脚传输到 SPIRXBUF? 还是其他尝试点?