OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3622|回复: 15

调试nrf24l01,能够读写寄存器,但是收发数据还是不可以

[复制链接]

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
发表于 2017-1-17 19:55:19 | 显示全部楼层 |阅读模式
20金钱
我用的一个是探索者板子,一个是NUCLEO_F411RE板子,附上代码求助[mw_shl_code=applescript,true]u8 adds[]={0xE7,0xE7,0xE7,0xE7,0xE7};
extern u8 num[32];
//SPI3õê¼»ˉ   PB3=SCK  PB4=MISO PB5=MOSI   PG8=IRQ   PG6=CE  PG7=CSN
void SPI_Set()
{
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
       
        GPIO_InitTypeDef GPIO_Structure;
        GPIO_Structure.GPIO_Mode=GPIO_Mode_AF;
        GPIO_Structure.GPIO_OType=GPIO_OType_PP;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
        GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Structure.GPIO_Speed=GPIO_High_Speed;
        GPIO_Init(GPIOB,&GPIO_Structure);
       
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3¸′óÃÎa SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4¸′óÃÎa SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5¸′óÃÎa SPI1
       
        GPIO_Structure.GPIO_Pin = GPIO_Pin_14;
  GPIO_Structure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
  GPIO_Structure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_Structure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_Structure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOB, &GPIO_Structure);//3õê¼»ˉPB14
       
        GPIO_Structure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_Structure.GPIO_OType=GPIO_OType_PP;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
        GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Structure.GPIO_Speed=GPIO_High_Speed;
        GPIO_Init(GPIOG,&GPIO_Structure);
        //IRQò»Ö±à-¸ß
        GPIO_Structure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Structure.GPIO_OType=GPIO_OType_PP;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_8;
        GPIO_Structure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Structure.GPIO_Speed=GPIO_High_Speed;
        GPIO_Init(GPIOG,&GPIO_Structure);
       
        GPIO_SetBits(GPIOG,GPIO_Pin_6);
        GPIO_SetBits(GPIOB,GPIO_Pin_14);
       
        SPI_InitTypeDef SPI_Structure;
        SPI_Structure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;//·ÖÆμ,ó|8·ÖÆμòÔéÏ
        SPI_Structure.SPI_CPHA=SPI_CPHA_1Edge;
        SPI_Structure.SPI_CPOL=SPI_CPOL_Low;
        SPI_Structure.SPI_CRCPolynomial=1;//CRC
        SPI_Structure.SPI_DataSize=SPI_DataSize_8b;
        SPI_Structure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
        SPI_Structure.SPI_FirstBit=SPI_FirstBit_MSB;
        SPI_Structure.SPI_Mode=SPI_Mode_Master;
        SPI_Structure.SPI_NSS=SPI_NSS_Soft;
        SPI_Init(SPI1,&SPI_Structure);
        SPI_Cmd(SPI1,ENABLE);       
}
//·¢Ëí»ò½óêÕò»¸ö×Ö½ú
u8 Send_Read_Byte (u8 dat)
{
       
        while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
        SPI_I2S_SendData(SPI1,dat);
        while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);
        return SPI_I2S_ReceiveData(SPI1);
}
//D′èëò»¸ö×Ö½úμ½¼Ä′æÆ÷,·μ»Ø±ê־λ
u8 Write_Byte(u8 add,u8 date)
{
        u8 status=0;
        GPIO_ResetBits(GPIOG,GPIO_Pin_7);
        status=Send_Read_Byte(0x20+add);
        Send_Read_Byte(date);
        GPIO_SetBits(GPIOG,GPIO_Pin_7);
        return status;
}
//′ó¼Ä′æÆ÷¶áè¡ò»¸ö×Ö½ú£¬·μ»Øêy¾Y
u8 Read_Byte(u8 add)
{
        u8 date=0;
        GPIO_ResetBits(GPIOG,GPIO_Pin_7);
        Send_Read_Byte(add);
        date=Send_Read_Byte(0xFF);
        GPIO_SetBits(GPIOG,GPIO_Pin_7);
        return date;
}
//D′èë¼Ä′æÆ÷n¸ö×Ö½ú,·μ»Ø±ê־λ
u8 Write_nBytes(u8 add,u8 num,u8 date[])
{
        u8 status=0,i;
        GPIO_ResetBits(GPIOG,GPIO_Pin_7);
        status=Send_Read_Byte(0x20+add);
        for(i=0;i<num;i++)
                Send_Read_Byte(date);
        GPIO_SetBits(GPIOG,GPIO_Pin_7);
        return status;
}
//&#182;áè&#161;n&#184;&#246;×&#214;&#189;ú
void Read_nBytes(u8 add,u8 num,u8 date[])
{
        u8 i;
        GPIO_ResetBits(GPIOG,GPIO_Pin_7);
        Send_Read_Byte(add);
        for(i=0;i<num;i++)
                date=Send_Read_Byte(0xFF);
        GPIO_SetBits(GPIOG,GPIO_Pin_7);
}
//éè&#214;&#195;&#189;óê&#213;&#196;£ê&#189;
void nrf24l01_RX(void)
{
        GPIO_ResetBits(GPIOG,GPIO_Pin_6);
        Write_nBytes(0x11,5,adds);
        Write_nBytes(0x0A,5,adds);
        Write_Byte(0x01,0x01);
        Write_Byte(0x02,0x01);
        Write_Byte(0x05,40);
        Write_Byte(0x06,0x0F);
        Write_Byte(0x00,0x2F);
        GPIO_SetBits(GPIOG,GPIO_Pin_6);
}
//&#189;óê&#213;êy&#190;Y°ü
u8 nrf24l01_Receive(u8 dat[])
{
        u8 flag;
        GPIO_SetBits(GPIOG,GPIO_Pin_6);
        while(!GPIO_ReadInputDataBit(GPIOG,GPIO_Pin_8));
        flag=Read_Byte(0x07);
        Write_Byte(0x07,flag);
        if(flag&0x40)
        {
                Read_nBytes(0x61,32,num);
                Write_Byte(0xE2,0xFF);
                return 1;//&#189;óê&#213;μ&#189;êy&#190;Y
        }
        return 0;//&#195;&#187;&#189;óê&#213;μ&#189;êy&#190;Y
}[/mw_shl_code][mw_shl_code=applescript,true]u8 adds[]={0xE7,0xE7,0xE7,0xE7,0xE7};

//SPI3&#245;ê&#188;&#187;ˉ   PB3=SCK  PB4=MISO PB5=MOSI   PG8=IRQ   PG6=CE  PG7=CSN  TXA0=IRQ PA1=CE  PA4=CSN
void SPI_Set()
{
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
       
        GPIO_InitTypeDef GPIO_Structure;
        GPIO_Structure.GPIO_Mode=GPIO_Mode_AF;
        GPIO_Structure.GPIO_OType=GPIO_OType_PP;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
        GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Structure.GPIO_Speed=GPIO_High_Speed;
        GPIO_Init(GPIOB,&GPIO_Structure);
       
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3&#184;′ó&#195;&#206;a SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4&#184;′ó&#195;&#206;a SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5&#184;′ó&#195;&#206;a SPI1
       
        GPIO_Structure.GPIO_Pin = GPIO_Pin_14;
  GPIO_Structure.GPIO_Mode = GPIO_Mode_OUT;//&#198;&#213;í¨ê&#228;3&#246;&#196;£ê&#189;
  GPIO_Structure.GPIO_OType = GPIO_OType_PP;//í&#198;íìê&#228;3&#246;
  GPIO_Structure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_Structure.GPIO_PuPd = GPIO_PuPd_UP;//é&#207;à-
  GPIO_Init(GPIOB, &GPIO_Structure);//3&#245;ê&#188;&#187;ˉPB14
       
        GPIO_Structure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_Structure.GPIO_OType=GPIO_OType_PP;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_4;
        GPIO_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Structure.GPIO_Speed=GPIO_High_Speed;
        GPIO_Init(GPIOA,&GPIO_Structure);
        //IRQò&#187;&#214;±à-&#184;&#223;
        GPIO_Structure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Structure.GPIO_OType=GPIO_OType_PP;
        GPIO_Structure.GPIO_Pin=GPIO_Pin_0;
        GPIO_Structure.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Structure.GPIO_Speed=GPIO_High_Speed;
        GPIO_Init(GPIOA,&GPIO_Structure);
       
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOB,GPIO_Pin_14);
       
        SPI_InitTypeDef SPI_Structure;
        SPI_Structure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;//·&#214;&#198;μ,ó|8·&#214;&#198;μò&#212;é&#207;
        SPI_Structure.SPI_CPHA=SPI_CPHA_1Edge;
        SPI_Structure.SPI_CPOL=SPI_CPOL_Low;
        SPI_Structure.SPI_CRCPolynomial=1;//CRC
        SPI_Structure.SPI_DataSize=SPI_DataSize_8b;
        SPI_Structure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
        SPI_Structure.SPI_FirstBit=SPI_FirstBit_MSB;
        SPI_Structure.SPI_Mode=SPI_Mode_Master;
        SPI_Structure.SPI_NSS=SPI_NSS_Soft;
        SPI_Init(SPI1,&SPI_Structure);
        SPI_Cmd(SPI1,ENABLE);       
}
//·¢&#203;í&#187;ò&#189;óê&#213;ò&#187;&#184;&#246;×&#214;&#189;ú
u8 Send_Read_Byte(u8 dat)
{
       
        while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
        SPI_I2S_SendData(SPI1,dat);
        while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);
        return SPI_I2S_ReceiveData(SPI1);
}
//D′è&#235;ò&#187;&#184;&#246;×&#214;&#189;úμ&#189;&#188;&#196;′&#230;&#198;÷,·μ&#187;&#216;±ê&#214;&#190;&#206;&#187;
u8 Write_Byte(u8 add,u8 date)
{
        u8 status=0;
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);
        status=Send_Read_Byte(0x20+add);
        Send_Read_Byte(date);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);
        return status;
}
//′ó&#188;&#196;′&#230;&#198;÷&#182;áè&#161;ò&#187;&#184;&#246;×&#214;&#189;ú£&#172;·μ&#187;&#216;êy&#190;Y
u8 Read_Byte(u8 add)
{
        u8 date=0;
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);
        Send_Read_Byte(add);
        date=Send_Read_Byte(0xFF);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);
        return date;
}
//D′è&#235;&#188;&#196;′&#230;&#198;÷n&#184;&#246;×&#214;&#189;ú,·μ&#187;&#216;±ê&#214;&#190;&#206;&#187;
u8 Write_nBytes(u8 add,u8 num,u8 date[])
{
        u8 status=0,i;
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);
        status=Send_Read_Byte(0x20+add);
        for(i=0;i<num;i++)
                Send_Read_Byte(date);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);
        return status;
}
//&#182;áè&#161;n&#184;&#246;×&#214;&#189;ú
void Read_nBytes(u8 add,u8 num,u8 date[])
{
        u8 i;
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);
        Send_Read_Byte(add);
        for(i=0;i<num;i++)
                date=Send_Read_Byte(0xFF);
        GPIO_SetBits(GPIOA,GPIO_Pin_4);
}
//éè&#214;&#195;·¢&#203;í&#196;£ê&#189;
void nrf24l01_TX(void)
{
        GPIO_ResetBits(GPIOA,GPIO_Pin_1);
        Write_nBytes(0x10,5,adds);
        Write_nBytes(0x0A,5,adds);
        Write_Byte(0x01,0x01);
        Write_Byte(0x02,0x01);
        Write_Byte(0x04,0x1A);
        Write_Byte(0x05,40);
        Write_Byte(0x06,0x0F);
        Write_Byte(0x00,0x0E);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
}
//·¢&#203;íêy&#190;Y°ü
u8 nrf24l01_Send(u8 dat[])
{
        u8 flag;
        GPIO_ResetBits(GPIOA,GPIO_Pin_1);
        Write_nBytes(0xA0,32,dat);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0));
        flag=Read_Byte(0x07);
        Write_Byte(0x07,flag);
        if(flag&0x10)
        {
                Write_Byte(0xE1,0xFF);
                return 0x10;//′&#239;μ&#189;×&#238;′ó·¢&#203;í′&#206;êy
        }
        if(flag&0x20)
                return 0x20;//·¢&#203;í3é1|
        return 0;//·¢&#203;í꧰ü
}[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

我知道哪里出问题了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-17 19:55:20 | 显示全部楼层
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-17 20:55:30 | 显示全部楼层
我也是,NRF_Check()可以通过,但是Tx和Rx不行。
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-17 22:08:03 | 显示全部楼层
我接收端想检测发射端的载波,根本检测不到
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-17 23:46:08 | 显示全部楼层
心语心愿 发表于 2017-1-17 22:08
我接收端想检测发射端的载波,根本检测不到

我应该也是这种情况,我怀疑最近这批NRF有问题。。。以前我用没出现过这种情况啊
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-18 09:41:16 | 显示全部楼层
wszdxmh 发表于 2017-1-17 23:46
我应该也是这种情况,我怀疑最近这批NRF有问题。。。以前我用没出现过这种情况啊

你有没有换新的试试?我手头就一对,暂时没法换。
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-18 10:40:45 | 显示全部楼层
心语心愿 发表于 2017-1-18 09:41
你有没有换新的试试?我手头就一对,暂时没法换。

我手头也就一对啊,没办法。我刚去淘宝买了两对,这要是还不行就是我自己的问题了。
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-18 12:50:29 | 显示全部楼层
wszdxmh 发表于 2017-1-18 10:40
我手头也就一对啊,没办法。我刚去淘宝买了两对,这要是还不行就是我自己的问题了。

你把你的程序附上来吧
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-18 13:54:23 | 显示全部楼层
SPI1初始化:
[mw_shl_code=c,true]void SPI1_Init(void)
{            
        GPIO_InitTypeDef GPIO_InitStructure;
          SPI_InitTypeDef  SPI_InitStructure;
         
        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE );//PORTB£&#172;SPI2ê±&#214;óê1&#196;ü

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //PA5.6.7&#184;′ó&#195;í&#198;íì  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); //PA5.6.7é&#207;à-
                       
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //éè&#214;&#195;SPIμ¥&#207;ò&#187;ò&#213;&#223;&#203;&#171;&#207;òμ&#196;êy&#190;Y&#196;£ê&#189;:SPIéè&#214;&#195;&#206;a&#203;&#171;&#207;&#223;&#203;&#171;&#207;òè&#171;&#203;&#171;1¤
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //éè&#214;&#195;SPI1¤×÷&#196;£ê&#189;:éè&#214;&#195;&#206;a&#214;÷SPI
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                //éè&#214;&#195;SPIμ&#196;êy&#190;Y′óD&#161;:SPI·¢&#203;í&#189;óê&#213;8&#206;&#187;&#214;&#161;&#189;á11
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //&#209;&#161;&#212;&#241;á&#203;′&#174;DDê±&#214;óμ&#196;&#206;èì&#172;:ê±&#214;óDü&#191;&#213;&#184;&#223;
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;        //êy&#190;Y2&#182;&#187;&#241;óúμú&#182;t&#184;&#246;ê±&#214;ó&#209;&#216;
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSSD&#197;o&#197;óéó2&#188;t£¨NSS1ü&#189;&#197;£&#169;&#187;1ê&#199;èí&#188;t£¨ê1ó&#195;SSI&#206;&#187;£&#169;1üàí:&#196;ú2&#191;NSSD&#197;o&#197;óDSSI&#206;&#187;&#191;&#216;&#214;&#198;
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;                //&#182;¨ò&#229;2¨ì&#216;&#194;ê&#212;¤·&#214;&#198;μμ&#196;&#214;μ:2¨ì&#216;&#194;ê&#212;¤·&#214;&#198;μ&#214;μ&#206;a16
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;        //&#214;&#184;&#182;¨êy&#190;Y′&#171;ê&#228;′óMSB&#206;&#187;&#187;1ê&#199;LSB&#206;&#187;&#191;aê&#188;:êy&#190;Y′&#171;ê&#228;′óMSB&#206;&#187;&#191;aê&#188;
        SPI_InitStructure.SPI_CRCPolynomial = 7;        //CRC&#214;μ&#188;&#198;&#203;&#227;μ&#196;&#182;à&#207;&#238;ê&#189;
        SPI_Init(SPI1, &SPI_InitStructure);  //&#184;ù&#190;YSPI_InitStruct&#214;D&#214;&#184;&#182;¨μ&#196;2&#206;êy3&#245;ê&#188;&#187;ˉíaéèSPIx&#188;&#196;′&#230;&#198;÷

        SPI_Cmd(SPI1, ENABLE); //ê1&#196;üSPIíaéè
       
        SPI1_ReadWriteByte(0xff);//&#198;&#244;&#182;ˉ′&#171;ê&#228;       
}[/mw_shl_code]
NRF IO初始化:
[mw_shl_code=c,true]//3&#245;ê&#188;&#187;ˉ24L01μ&#196;IO&#191;ú
void NRF24L012_Init(void)
{        
        GPIO_InitTypeDef GPIO_InitStructure;
          SPI_InitTypeDef  SPI_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
                               

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_15;        //PA11 15 í&#198;íì           
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);//3&#245;ê&#188;&#187;ˉ&#214;&#184;&#182;¨IO
        GPIO_SetBits(GPIOA,GPIO_Pin_11 | GPIO_Pin_15);//é&#207;à-       
  
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_12;   
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA12 ê&#228;è&#235;  
        GPIO_Init(GPIOA, &GPIO_InitStructure);
                         
  SPI1_Init();                    //3&#245;ê&#188;&#187;ˉSPI         

        SPI_Cmd(SPI1, DISABLE); // SPIíaéè2&#187;ê1&#196;ü

        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //SPIéè&#214;&#195;&#206;a&#203;&#171;&#207;&#223;&#203;&#171;&#207;òè&#171;&#203;&#171;1¤
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //SPI&#214;÷&#187;ú
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                //·¢&#203;í&#189;óê&#213;8&#206;&#187;&#214;&#161;&#189;á11
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;                //ê±&#214;óDü&#191;&#213;μí
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;        //êy&#190;Y2&#182;&#187;&#241;óúμú1&#184;&#246;ê±&#214;ó&#209;&#216;
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSSD&#197;o&#197;óéèí&#188;t&#191;&#216;&#214;&#198;
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;                //&#182;¨ò&#229;2¨ì&#216;&#194;ê&#212;¤·&#214;&#198;μμ&#196;&#214;μ:2¨ì&#216;&#194;ê&#212;¤·&#214;&#198;μ&#214;μ&#206;a16
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;        //êy&#190;Y′&#171;ê&#228;′óMSB&#206;&#187;&#191;aê&#188;
        SPI_InitStructure.SPI_CRCPolynomial = 7;        //CRC&#214;μ&#188;&#198;&#203;&#227;μ&#196;&#182;à&#207;&#238;ê&#189;
        SPI_Init(SPI1, &SPI_InitStructure);  //&#184;ù&#190;YSPI_InitStruct&#214;D&#214;&#184;&#182;¨μ&#196;2&#206;êy3&#245;ê&#188;&#187;ˉíaéèSPIx&#188;&#196;′&#230;&#198;÷
       
        SPI_Cmd(SPI1, ENABLE); //ê1&#196;üSPIíaéè
       
        NRF24L012_CE=0;                         //ê1&#196;ü24L01
        NRF24L012_CSN=1;                        //SPI&#198;&#172;&#209;&#161;è&#161;&#207;&#251;  
                                   
}[/mw_shl_code]
读写数据:
[mw_shl_code=applescript,true]u8 SPI1_ReadWriteByte(u8 TxData)
{                                                            
        u8 retry=0;                                        
        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //&#188;ì2é&#214;&#184;&#182;¨μ&#196;SPI±ê&#214;&#190;&#206;&#187;éè&#214;&#195;ó&#235;·&#241;:·¢&#203;í&#187;o′&#230;&#191;&#213;±ê&#214;&#190;&#206;&#187;
                {
                retry++;
                if(retry>200)return 0;
                }                          
        SPI_I2S_SendData(SPI1, TxData); //í¨1yíaéèSPIx·¢&#203;íò&#187;&#184;&#246;êy&#190;Y
        retry=0;

        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) //&#188;ì2é&#214;&#184;&#182;¨μ&#196;SPI±ê&#214;&#190;&#206;&#187;éè&#214;&#195;ó&#235;·&#241;:&#189;óêü&#187;o′&#230;·&#199;&#191;&#213;±ê&#214;&#190;&#206;&#187;
                {
                retry++;
                if(retry>200)return 0;
                }                                                              
        return SPI_I2S_ReceiveData(SPI1); //·μ&#187;&#216;í¨1ySPIx×&#238;&#189;ü&#189;óê&#213;μ&#196;êy&#190;Y                                            
}[/mw_shl_code]
[mw_shl_code=applescript,true]u8 NRF24L012_Check(void)
{
        u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
        u8 i;
        SPI1_SetSpeed(SPI_BaudRatePrescaler_4); //spi&#203;ù&#182;è&#206;a9Mhz£¨24L01μ&#196;×&#238;′óSPIê±&#214;ó&#206;a10Mhz£&#169;            
        NRF24L012_Write_Buf(WRITE_REG_NRF2+TX_ADDR2,buf,5);//D′è&#235;5&#184;&#246;×&#214;&#189;úμ&#196;μ&#216;&#214;·.       
        NRF24L012_Read_Buf(TX_ADDR2,buf,5); //&#182;á3&#246;D′è&#235;μ&#196;μ&#216;&#214;·  
        for(i=0;i<5;i++)if(buf!=0XA5)break;                                                                   
        if(i!=5)return 1;//&#188;ì2a24L01′í&#206;ó       
        return 0;                 //&#188;ì2aμ&#189;24L01
}                  
//SPID′&#188;&#196;′&#230;&#198;÷
//reg:&#214;&#184;&#182;¨&#188;&#196;′&#230;&#198;÷μ&#216;&#214;·
//value′è&#235;μ&#196;&#214;μ
u8 NRF24L012_Write_Reg(u8 reg,u8 value)
{
        u8 status;       
           NRF24L012_CSN=0;                 //ê1&#196;üSPI′&#171;ê&#228;
          status =SPI1_ReadWriteByte(reg);//·¢&#203;í&#188;&#196;′&#230;&#198;÷o&#197;
          SPI1_ReadWriteByte(value);      //D′è&#235;&#188;&#196;′&#230;&#198;÷μ&#196;&#214;μ
          NRF24L012_CSN=1;                 //&#189;&#251;&#214;1SPI′&#171;ê&#228;          
          return(status);                               //·μ&#187;&#216;×′ì&#172;&#214;μ
}
//&#182;áè&#161;SPI&#188;&#196;′&#230;&#198;÷&#214;μ
//reg:òa&#182;áμ&#196;&#188;&#196;′&#230;&#198;÷
u8 NRF24L012_Read_Reg(u8 reg)
{
        u8 reg_val;            
        NRF24L012_CSN = 0;          //ê1&#196;üSPI′&#171;ê&#228;               
          SPI1_ReadWriteByte(reg);   //·¢&#203;í&#188;&#196;′&#230;&#198;÷o&#197;
          reg_val=SPI1_ReadWriteByte(0XFF);//&#182;áè&#161;&#188;&#196;′&#230;&#198;÷&#196;úèY
          NRF24L012_CSN = 1;          //&#189;&#251;&#214;1SPI′&#171;ê&#228;                    
          return(reg_val);           //·μ&#187;&#216;×′ì&#172;&#214;μ
}       
//&#212;ú&#214;&#184;&#182;¨&#206;&#187;&#214;&#195;&#182;á3&#246;&#214;&#184;&#182;¨3¤&#182;èμ&#196;êy&#190;Y
//reg:&#188;&#196;′&#230;&#198;÷(&#206;&#187;&#214;&#195;)
//*pBuf:êy&#190;Y&#214;&#184;&#213;&#235;
//len:êy&#190;Y3¤&#182;è
//·μ&#187;&#216;&#214;μ,′&#203;′&#206;&#182;áμ&#189;μ&#196;×′ì&#172;&#188;&#196;′&#230;&#198;÷&#214;μ
u8 NRF24L012_Read_Buf(u8 reg,u8 *pBuf,u8 len)
{
        u8 status,u8_ctr;               
          NRF24L012_CSN = 0;           //ê1&#196;üSPI′&#171;ê&#228;
          status=SPI1_ReadWriteByte(reg);//·¢&#203;í&#188;&#196;′&#230;&#198;÷&#214;μ(&#206;&#187;&#214;&#195;),2¢&#182;áè&#161;×′ì&#172;&#214;μ             
        for(u8_ctr=0;u8_ctr<len;u8_ctr++)pBuf[u8_ctr]=SPI1_ReadWriteByte(0XFF);//&#182;á3&#246;êy&#190;Y
          NRF24L012_CSN=1;       //1&#216;±&#213;SPI′&#171;ê&#228;
          return status;        //·μ&#187;&#216;&#182;áμ&#189;μ&#196;×′ì&#172;&#214;μ
}
//&#212;ú&#214;&#184;&#182;¨&#206;&#187;&#214;&#195;D′&#214;&#184;&#182;¨3¤&#182;èμ&#196;êy&#190;Y
//reg:&#188;&#196;′&#230;&#198;÷(&#206;&#187;&#214;&#195;)
//*pBuf:êy&#190;Y&#214;&#184;&#213;&#235;
//len:êy&#190;Y3¤&#182;è
//·μ&#187;&#216;&#214;μ,′&#203;′&#206;&#182;áμ&#189;μ&#196;×′ì&#172;&#188;&#196;′&#230;&#198;÷&#214;μ
u8 NRF24L012_Write_Buf(u8 reg, u8 *pBuf, u8 len)
{
        u8 status,u8_ctr;            
        NRF24L012_CSN = 0;          //ê1&#196;üSPI′&#171;ê&#228;
          status = SPI1_ReadWriteByte(reg);//·¢&#203;í&#188;&#196;′&#230;&#198;÷&#214;μ(&#206;&#187;&#214;&#195;),2¢&#182;áè&#161;×′ì&#172;&#214;μ
          for(u8_ctr=0; u8_ctr<len; u8_ctr++)SPI1_ReadWriteByte(*pBuf++); //D′è&#235;êy&#190;Y         
          NRF24L012_CSN = 1;       //1&#216;±&#213;SPI′&#171;ê&#228;
          return status;          //·μ&#187;&#216;&#182;áμ&#189;μ&#196;×′ì&#172;&#214;μ
}                                  
//&#198;&#244;&#182;ˉNRF24L01·¢&#203;íò&#187;′&#206;êy&#190;Y
//txbuf:′y·¢&#203;íêy&#190;Yê×μ&#216;&#214;·
//·μ&#187;&#216;&#214;μ:·¢&#203;ííê3é×′&#191;&#246;
u8 NRF24L012_TxPacket(u8 *txbuf)
{
        u8 sta;
        SPI1_SetSpeed(SPI_BaudRatePrescaler_8);//spi&#203;ù&#182;è&#206;a9Mhz£¨24L01μ&#196;×&#238;′óSPIê±&#214;ó&#206;a10Mhz£&#169;   
        NRF24L012_CE=0;
          NRF24L012_Write_Buf(WR_TX_PLOAD2,txbuf,TX_PLOAD_WIDTH2);//D′êy&#190;Yμ&#189;TX BUF  32&#184;&#246;×&#214;&#189;ú
        NRF24L012_CE=1;//&#198;&#244;&#182;ˉ·¢&#203;í          
        while(NRF24L012_IRQ!=0);//μè′y·¢&#203;ííê3é
        sta=NRF24L012_Read_Reg(STATUS2);  //&#182;áè&#161;×′ì&#172;&#188;&#196;′&#230;&#198;÷μ&#196;&#214;μ          
        NRF24L012_Write_Reg(WRITE_REG_NRF2+STATUS2,sta); //&#199;&#229;3yTX_DS&#187;òMAX_RT&#214;D&#182;&#207;±ê&#214;&#190;
        if(sta&MAX_TX2)//′&#239;μ&#189;×&#238;′ó&#214;&#216;·¢′&#206;êy
        {
                NRF24L012_Write_Reg(FLUSH_TX2,0xff);//&#199;&#229;3yTX FIFO&#188;&#196;′&#230;&#198;÷
                return MAX_TX2;
        }
        if(sta&TX_OK2)//·¢&#203;ííê3é
        {
                return TX_OK2;
        }
        return 0xff;//&#198;&#228;&#203;&#251;&#212;-òò·¢&#203;í꧰ü
}
//&#198;&#244;&#182;ˉNRF24L01·¢&#203;íò&#187;′&#206;êy&#190;Y
//txbuf:′y·¢&#203;íêy&#190;Yê×μ&#216;&#214;·
//·μ&#187;&#216;&#214;μ:0£&#172;&#189;óê&#213;íê3é£&#187;&#198;&#228;&#203;&#251;£&#172;′í&#206;ó′ú&#194;&#235;
u8 NRF24L012_RxPacket(u8 *rxbuf)
{
        u8 sta;                                                                              
        SPI1_SetSpeed(SPI_BaudRatePrescaler_8); //spi&#203;ù&#182;è&#206;a9Mhz£¨24L01μ&#196;×&#238;′óSPIê±&#214;ó&#206;a10Mhz£&#169;   
        sta=NRF24L012_Read_Reg(STATUS2);  //&#182;áè&#161;×′ì&#172;&#188;&#196;′&#230;&#198;÷μ&#196;&#214;μ             
        NRF24L012_Write_Reg(WRITE_REG_NRF2+STATUS2,sta); //&#199;&#229;3yTX_DS&#187;òMAX_RT&#214;D&#182;&#207;±ê&#214;&#190;
        if(sta&RX_OK2)//&#189;óê&#213;μ&#189;êy&#190;Y
        {
                NRF24L012_Read_Buf(RD_RX_PLOAD2,rxbuf,RX_PLOAD_WIDTH2);//&#182;áè&#161;êy&#190;Y
                NRF24L012_Write_Reg(FLUSH_RX2,0xff);//&#199;&#229;3yRX FIFO&#188;&#196;′&#230;&#198;÷
                return 0;
        }          
        return 1;//&#195;&#187;ê&#213;μ&#189;è&#206;o&#206;êy&#190;Y
}                                            
//&#184;&#195;oˉêy3&#245;ê&#188;&#187;ˉNRF24L01μ&#189;RX&#196;£ê&#189;
//éè&#214;&#195;RXμ&#216;&#214;·,D′RXêy&#190;Y&#191;í&#182;è,&#209;&#161;&#212;&#241;RF&#198;μμà,2¨ì&#216;&#194;êoíLNA HCURR
//μ±CE±&#228;&#184;&#223;oó,&#188;′&#189;&#248;è&#235;RX&#196;£ê&#189;,2¢&#191;éò&#212;&#189;óê&#213;êy&#190;Yá&#203;                  
void NRF24L012_RX_Mode(void)
{
        NRF24L012_CE=0;          
          NRF24L012_Write_Buf(WRITE_REG_NRF2+RX_ADDR_P02,(u8*)TX_ADDRESS2,TX_ADR_WIDTH2);//D′RX&#189;úμ&#227;μ&#216;&#214;·
          
          NRF24L012_Write_Reg(WRITE_REG_NRF2+EN_AA2,0x01);    //ê1&#196;üí¨μà0μ&#196;×&#212;&#182;ˉó|′e   
          NRF24L012_Write_Reg(WRITE_REG_NRF2+EN_RXADDR2,0x01);//ê1&#196;üí¨μà0μ&#196;&#189;óê&#213;μ&#216;&#214;·           
          NRF24L012_Write_Reg(WRITE_REG_NRF2+RF_CH2,70);             //éè&#214;&#195;RFí¨D&#197;&#198;μ&#194;ê                  
          NRF24L012_Write_Reg(WRITE_REG_NRF2+RX_PW_P02,TX_PLOAD_WIDTH2);//&#209;&#161;&#212;&#241;í¨μà0μ&#196;óDD§êy&#190;Y&#191;í&#182;è             
          NRF24L012_Write_Reg(WRITE_REG_NRF2+RF_SETUP2,0x26);//éè&#214;&#195;TX·¢é&#228;2&#206;êy,0db&#212;&#246;ò&#230;,2Mbps,μí&#212;&#235;éù&#212;&#246;ò&#230;&#191;a&#198;&#244;   
          NRF24L012_Write_Reg(WRITE_REG_NRF2+CONFIG2, 0x0f);//&#197;&#228;&#214;&#195;&#187;ù±&#190;1¤×÷&#196;£ê&#189;μ&#196;2&#206;êyWR_UP,EN_CRC,16BIT_CRC,&#189;óê&#213;&#196;£ê&#189;
          NRF24L012_CE = 1; //CE&#206;a&#184;&#223;,&#189;&#248;è&#235;&#189;óê&#213;&#196;£ê&#189;
          delay_us(5);
}                                                 

//&#184;&#195;oˉêy3&#245;ê&#188;&#187;ˉNRF24L01μ&#189;TX&#196;£ê&#189;
//éè&#214;&#195;TXμ&#216;&#214;·,D′TXêy&#190;Y&#191;í&#182;è,éè&#214;&#195;RX×&#212;&#182;ˉó|′eμ&#196;μ&#216;&#214;·,ì&#238;3&#228;TX·¢&#203;íêy&#190;Y,&#209;&#161;&#212;&#241;RF&#198;μμà,2¨ì&#216;&#194;êoíLNA HCURR
//PWR_UP,CRCê1&#196;ü
//μ±CE±&#228;&#184;&#223;oó,&#188;′&#189;&#248;è&#235;RX&#196;£ê&#189;,2¢&#191;éò&#212;&#189;óê&#213;êy&#190;Yá&#203;                  
//CE&#206;a&#184;&#223;′óóú10us,&#212;ò&#198;&#244;&#182;ˉ·¢&#203;í.         
void NRF24L012_TX_Mode(void)
{                                                                                                                 
        NRF24L012_CE=0;            
          NRF24L012_Write_Buf(WRITE_REG_NRF2+TX_ADDR2,(u8*)TX_ADDRESS2,TX_ADR_WIDTH2);//D′TX&#189;úμ&#227;μ&#216;&#214;·
          NRF24L012_Write_Buf(WRITE_REG_NRF2+RX_ADDR_P02,(u8*)TX_ADDRESS2,TX_ADR_WIDTH2); //éè&#214;&#195;TX&#189;úμ&#227;μ&#216;&#214;·,&#214;÷òa&#206;aá&#203;ê1&#196;üACK          
                NRF24L012_Write_Buf(WR_TX_PLOAD2,(u8*)tx_buf,TX_PLOAD_WIDTH2);

          NRF24L012_Write_Reg(WRITE_REG_NRF2+EN_AA2,0x01);     //ê1&#196;üí¨μà0μ&#196;×&#212;&#182;ˉó|′e   
          NRF24L012_Write_Reg(WRITE_REG_NRF2+EN_RXADDR2,0x01); //ê1&#196;üí¨μà0μ&#196;&#189;óê&#213;μ&#216;&#214;·  
          NRF24L012_Write_Reg(WRITE_REG_NRF2+SETUP_RETR2,0x1a);//éè&#214;&#195;×&#212;&#182;ˉ&#214;&#216;·¢&#188;&#228;&#184;&#244;ê±&#188;&#228;:500us + 86us;×&#238;′ó×&#212;&#182;ˉ&#214;&#216;·¢′&#206;êy:10′&#206;
          NRF24L012_Write_Reg(WRITE_REG_NRF2+RF_CH2,70);       //éè&#214;&#195;RFí¨μà&#206;a40
          NRF24L012_Write_Reg(WRITE_REG_NRF2+RF_SETUP2,0x26);  //éè&#214;&#195;TX·¢é&#228;2&#206;êy,0db&#212;&#246;ò&#230;,2Mbps,μí&#212;&#235;éù&#212;&#246;ò&#230;&#191;a&#198;&#244;   
          NRF24L012_Write_Reg(WRITE_REG_NRF2+CONFIG2,0x0e);    //&#197;&#228;&#214;&#195;&#187;ù±&#190;1¤×÷&#196;£ê&#189;μ&#196;2&#206;êyWR_UP,EN_CRC,16BIT_CRC,&#189;óê&#213;&#196;£ê&#189;,&#191;a&#198;&#244;&#203;ùóD&#214;D&#182;&#207;
        NRF24L012_CE=1;//CE&#206;a&#184;&#223;,10usoó&#198;&#244;&#182;ˉ·¢&#203;í
        delay_us(5);//±£3&#214;10us&#195;&#235;ò&#212;é&#207;
}[/mw_shl_code]

做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-18 13:55:25 | 显示全部楼层
心语心愿 发表于 2017-1-18 12:50
你把你的程序附上来吧

贴了,我就是移植原子哥的
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

0

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2016-8-16
在线时间
32 小时
发表于 2017-1-18 17:00:38 | 显示全部楼层
调试nRF24L01,先调一方向,比如说发送,或者接收,通了再调另一个,你2个模块同时调,你根本不知道是接收的问题还是发送的问题
最好的用nRF24L01转USB的串口模块,直接解决一端,自己再处理另一端
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-18 20:11:37 | 显示全部楼层
PPlucky 发表于 2017-1-18 17:00
调试nRF24L01,先调一方向,比如说发送,或者接收,通了再调另一个,你2个模块同时调,你根本不知道是接收的问题 ...

先调一个需要一个确定好使的模块,可是我现在手头没有确定好使的模块……
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-18 23:25:38 | 显示全部楼层
心语心愿 发表于 2017-1-18 20:11
先调一个需要一个确定好使的模块,可是我现在手头没有确定好使的模块……

是模块的问题,昨天买一对新的模块,刚换上,好了。被气死
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-19 10:39:34 | 显示全部楼层
wszdxmh 发表于 2017-1-18 23:25
是模块的问题,昨天买一对新的模块,刚换上,好了。被气死

我的还在路上,但愿我的也是模块问题
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
 楼主| 发表于 2017-1-23 12:23:01 | 显示全部楼层
wszdxmh 发表于 2017-1-18 23:25
是模块的问题,昨天买一对新的模块,刚换上,好了。被气死

我读FIFO_STATUS寄存器始终都是0x11,也就是说TX和RXFIFO始终都是满的,而且我读取RXFIFO也读取不出来,清空也清空不了…你是怎么读RXFIFO的?还有怎么清空它的?
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
2503
注册时间
2015-8-17
在线时间
383 小时
发表于 2017-1-23 21:21:50 | 显示全部楼层
心语心愿 发表于 2017-1-23 12:23
我读FIFO_STATUS寄存器始终都是0x11,也就是说TX和RXFIFO始终都是满的,而且我读取RXFIFO也读取不出来, ...

你看原子哥的例程,我完全没有改过,就改了一下引脚。
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-30 19:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表