Embedded SPI序列与MSB顺序EFR32不匹配的原因

Embedded SPI序列与MSB顺序EFR32不匹配的原因,embedded,Embedded,我正在使用SPI发送一个序列,如下面的MSB一阶所示。 当我查看下面显示在示波器上的序列时,我看到左端的111和右端的11与我发送的序列不匹配。 所附代码如下所示。 我哪里出错了? 谢谢 你没有使用SPI。您正在使用UART(类似于RS-232)。UART还为每个字节发送开始位和停止位。开始位通常较低,停止位较高。这已经非常接近您在示波器上看到的内容,尽管还不完全一致。也就是说,您的USART可能配置为异步、RS-232兼容模式,而不是同步SPI模式。这是您的示波器屏幕截图,其中包含我认为U

我正在使用SPI发送一个序列,如下面的MSB一阶所示。 当我查看下面显示在示波器上的序列时,我看到左端的111和右端的11与我发送的序列不匹配。 所附代码如下所示。 我哪里出错了? 谢谢


你没有使用SPI。您正在使用UART(类似于RS-232)。UART还为每个字节发送开始位和停止位。开始位通常较低,停止位较高。这已经非常接近您在示波器上看到的内容,尽管还不完全一致。也就是说,您的USART可能配置为异步、RS-232兼容模式,而不是同步SPI模式。这是您的示波器屏幕截图,其中包含我认为USART生成的内容。黄色位与您的数据匹配,蓝色位是某种启动和停止位(但与RS-232不一致)。@Codo Uart也处于高怠速状态。第一步是让OP知道他们在做什么。。。如果他们不能区分SPI和UART之间的区别,那么就不会有正确的结果。
uint8_t Tx_WRSR[TX_WRSR_BUFFER_SIZE] = {0x01,0x2F,0xEF,0xD8}; //write status register

           USART1->IEN = USART_IEN_TXC; //enable TXC interrupt flag

         while(1)
     {
            Delay(1);
               GPIO_PinOutClear(gpioPortA,4);
              USART_Tx(USART1, Tx_WRSR[0]);
               while( !(USART1->STATUS & USART_STATUS_TXC) );  //wait TILL TXC goes high
              USART_Tx(USART1, Tx_WRSR[1]);
               while( !(USART1->STATUS & USART_STATUS_TXC) );  //wait TILL TXC goes high
                USART_Tx(USART1, Tx_WRSR[2]);
                while( !(USART1->STATUS & USART_STATUS_TXC) );  //wait TILL TXC goes high
                USART_Tx(USART1, Tx_WRSR[3]);
               while( !(USART1->STATUS & USART_STATUS_TXC) );  //wait TILL TXC goes high
              GPIO_PinOutSet(gpioPortA,4);
             Delay(1);

            }

}