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片选取消                
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
他说他不在
1楼-- · 2019-10-15 15:48
347185100 发表于 2017-2-28 21:22
SPI的库函数,我不用管时序这个东西吧

初始化先启动一下传输试试、、SPI1_ReadWriteByte(0xff);
347185100
2楼-- · 2019-10-15 17:53
他说他不在 发表于 2017-2-28 21:23
有可能是时序少了一位。

能具体说说么,这个时序咋改啊
347185100
3楼-- · 2019-10-15 18:32
 精彩回答 2  元偷偷看……
347185100
4楼-- · 2019-10-15 18:34
我顶顶顶
347185100
5楼-- · 2019-10-15 21:42
不知道为什么突然好了,我记得我都没改动东西,真是郁闷了
诸葛亮的哥哥
6楼-- · 2019-10-16 02:37
只在初始化里面设置一次传输速率,以后的程序都不要加修改速率试试,我当初也有类似的问题,把设置速率去掉以后就没事了

一周热门 更多>