CH573 如何使用双线SPI作为从机进行接收数据?

是这样的,通过我的一些分析,SPI作为 从机只接收是,把 SPI0_SlaveInit();里面的miso使能替换为MOSI使能,但是在通过中断每次只接收1个字节的情况下,我接收到的数据出错了,我可以肯定主机上的设置是没有问题,因为我在另外一个平台上实现了双线接收SPI数据,且没有错误这个过程,下面是我的代码,希望可以得到指点,我初始化哪里出现了问题?

(另外,我主机SPI上的时钟空闲状态是高电平,上升沿采样)


void SPI_INIT(void)

{

      //  PRINT("1.spi0 mul slave mode \n");

        GPIOA_ModeCfg(  GPIO_Pin_13 | GPIO_Pin_14 , GPIO_ModeIN_PU);  //PA13 SCK   PA15 MISO


        SPI0_SlaveInit();

        SPI0_ITCfg(ENABLE,SPI0_IT_BYTE_END);// 开启中断

        PFIC_EnableIRQ(SPI0_IRQn);



}


void SPI0_SlaveInit(void)

{

    R8_SPI0_CTRL_MOD = RB_SPI_ALL_CLEAR;

    R8_SPI0_CTRL_MOD = RB_SPI_MOSI_OE | RB_SPI_MODE_SLAVE;

    R8_SPI0_CTRL_MOD &= ~RB_SPI_MST_SCK_MOD;//空闲状态高电平

    R8_SPI0_CTRL_CFG |= RB_SPI_AUTO_IF;

}



__attribute__((interrupt("WCH-Interrupt-fast")))

__attribute__((section(".highcode")))

void SPI0_IRQHandler(void)

{


    if(SPI0_GetITFlag(SPI0_IT_BYTE_END))

        {


            SPI_Rx_Buffer[RxIdx] = SPI0_SlaveRecvByte();

            SPI_line_START_END();

            RxIdx++;


            SPI0_ClearITFlag(SPI0_IT_BYTE_END); // 清除中断标志

        }



}


有人回答一下吗?


我前面又看到点东西,我是想用双线只接收,而且是作为从机,我看到了这个寄存器,RB_SPI_2WIRE_MOD   但是他是设置MISO,也就是双线发送,我试了,完全接收不了数据,有没有官方回答一下,这个CH573可不可以双线单向只接收啊!!!!


各位老哥,能不能回句话 ,从机状态下SPI能否双线只接收?


我现在来写一下吧,刚刚打电话技术支持了,使用SPI单片机作为从机一方,只能发送,没法接收!


只有登录才能回复,可以选择微信账号登录