SPI写0XA5,读0XA4

2019-10-14 22:31发布

我照搬了原子哥的代码,因为我调试NRF24l01,然后发现一直卡在这里while(NRF24L01_Check()); 我调试后发现是SPI的收发数据不一样,这是要写入的数据u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};,读出来后变成buf[5]={0XA4,0XA5,0XA5,0XA5,0XA5};,请各位帮我看看,因为换了个32板,所以端口不一样,原理图都发在下面谢谢大家了,感激不尽

void NRF24L01_Init(void){          SPI_InitTypeDef SPI_InitStructure;         GPIO_InitTypeDef GPIO_InitStructure;        EXTI_InitTypeDef EXTI_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        //配置SCK,MISO,MOSI引脚          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽复用        GPIO_Init(GPIOA, &GPIO_InitStructure);        //配置CE引脚        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14        ;         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出        GPIO_Init(GPIOB, &GPIO_InitStructure);        //配置CSN引脚        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出        GPIO_Init(GPIOA, &GPIO_InitStructure);                //配置IRQ引脚        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入        GPIO_Init(GPIOB, &GPIO_InitStructure);                        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource15);    EXTI_InitStructure.EXTI_Line=EXTI_Line15;    EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//外部中断    EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发    EXTI_InitStructure.EXTI_LineCmd=ENABLE;    EXTI_Init(&EXTI_InitStructure);                SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //双线全双工         SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主模式         SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //数据大小8位         SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //时钟极性,空闲时为低         SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //第1个边沿有效,上升沿为采样时刻         SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;  //NSS信号由软件产生         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8; //8分频,9MHz         SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //高位在前         SPI_InitStructure.SPI_CRCPolynomial = 7;         SPI_Init(SPI1, &SPI_InitStructure);                    SPI_Cmd(SPI1, ENABLE);//使能 SPI1
                NRF24L01_CE=0;         //使能24L01        NRF24L01_CSN=1;        //SPI片选取消                
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。