久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: nrf905 stm32自帶spi接口控制 驅動程序下載 [打印本頁]

作者: 劉長江    時間: 2017-3-23 15:26
標題: nrf905 stm32自帶spi接口控制 驅動程序下載
nrf905的stm32驅動程序,stm32單片機自帶的spi接口控制的

完整源碼下載:
32自帶spi接口控制.zip (9.02 MB, 下載次數: 45)



發送程序部分預覽:
  1. #include "NRF905.h"
  2. #include "bsp_SPI_nrf.h"
  3. #include "stm32f10x_spi.h"

  4. void nrf_GPIO_Config(void)
  5. {
  6.         //定義一個GPIO InitTypeDef類型的結構體
  7.         GPIO_InitTypeDef GPIO_InitStructure;
  8.         //開啟GPIOB的外設時鐘
  9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  10.        
  11. //---------------nrf905 IO output-------------------------       
  12.         //選擇要控制GPIO的引腳
  13.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_10; //en,pwr,ce,led
  14.         //設置引腳為通用推挽輸出
  15.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       
  16.         //設置引腳速率為50MHz
  17.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  18.         //調用庫函數,初始化GPIOB9
  19.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  20.         GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_10);
  21.                
  22. //---------------nrf905 IO input-------------------------
  23.                 //選擇要控制GPIO的引腳
  24.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7; //am, dr ,cd       
  25.         //設置引腳為上拉輸入
  26.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  
  27.         GPIO_Init(GPIOB,&GPIO_InitStructure);       
  28. }

  29. //****nrf905???????********//
  30. u8 code_config[10]=
  31. { 0x4c, //????430mhz
  32.         0x0c, //????10db,?????,???????
  33.         0x44, //???????4??
  34.         0x01, 0x01,//???????????1??
  35.         0xb2, 0xb2, 0xb2,0xb2,//接收地址
  36.         0x58  //?????,16m??,crc??,8?crc??
  37. };   

  38. void delay_xms(u16 xms)                //??xms??
  39. {          
  40.   u16 i=0;     
  41.         while(xms--)   
  42.         {
  43.     i=12000;   
  44.                 while(i--);     
  45.         }
  46. }

  47. u8 SPI_NRF_RW(u8 dat)
  48. {         
  49.    /* 當 SPI發送緩沖器非空時等待 */
  50.   while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
  51.   
  52.    /* 通過 SPI2發送一字節數據 */
  53.   SPI_I2S_SendData(SPI2, dat);

  54.    /* 當SPI接收緩沖器為空時等待 */
  55.   while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);

  56.   /* Return the byte read from the SPI bus */
  57.   return SPI_I2S_ReceiveData(SPI2);
  58. }

  59. void init_nrf905(void)
  60. {        u8 i;
  61.         nrf_GPIO_Config();
  62.         ce(0);
  63.         en(0);
  64.        
  65.         delay_xms(2);
  66.         csn(0);//delay_xms(1);
  67.         SPI_NRF_RW(WC);
  68.         for (i=0;i<10;i++)
  69.         {        SPI_NRF_RW(code_config[i]);
  70.         }
  71.         csn(1);
  72. }


  73. u8 read_nrf905(void)
  74. { u8 pp;
  75.         ce(0);
  76.   en(0);
  77.         delay_xms(1);                                        //nRF905?????,??????,???????
  78.         csn(0);
  79.         SPI_NRF_RW(RRP);                //發送讀取指令
  80.         pp=SPI_NRF_RW(0x00);       
  81.         csn(1);       
  82.         en(0);                                                        //en???  ,dr??
  83.         ce(1);                                                        //重新進入接收模式
  84.         delay_xms(1);                                        //nRF905?????,??????,???????
  85.         return pp;
  86. }

  87. void send(u8 byte,u16 adre)  
  88. {        ce(0);
  89.         en(0);
  90.         led(1);                                                                                                               
  91.         delay_xms(1);
  92. //----------寫地址
  93.         csn(0);//delay_xms(1);
  94.         SPI_NRF_RW(WTA);           
  95.         SPI_NRF_RW(adre);       
  96.         SPI_NRF_RW(adre);
  97.         SPI_NRF_RW(adre);               
  98.         SPI_NRF_RW(adre);
  99. //        csn(1);
  100. ////---------寫數據       
  101. //csn(0);
  102.         SPI_NRF_RW(WTP);                               
  103.         SPI_NRF_RW(byte);
  104. csn(1);
  105. //---------發送       
  106.         ce(1);                                       
  107.         en(1);                                                                                                        //
  108.         while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8));  //dr
  109. //        delay_xms(10);                                                                //
  110.         ce(0);
  111.   en(0);                                                                                                        //
  112.         delay_xms(1);
  113. csn(0);
  114.         SPI_NRF_RW(WTP);                        //
  115.         SPI_NRF_RW(0xaa);                  //
  116. csn(1);

  117.   en(0);                                                                                                        //
  118.         ce(1);                                                                                                        //進入接收模式
  119.         delay_xms(1);                                                                                //
  120. //        led(0);                                                                                                        //
  121. }

  122. void IntoReceive_Sate(void)
  123. {
  124.         en(0);                                                                                                        //
  125.         ce(1);                                                                                                        //進入接收模式
  126.         delay_xms(1);                                                                                //
  127.         led(0);               
  128. }

  129. int receive_scan(void)
  130. {
  131.         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==1)
  132.         {
  133.                         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)
  134.                         {
  135.                                         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==1)
  136.                                         {
  137.                                                 return 1;
  138.                                         }
  139.                                         else
  140.                                                 return 0;
  141.                         }
  142.                         else
  143.                                 return 0;
  144.         }
  145.         else
  146.                 return 0;

  147. }


  148. //進入調試模式 觀察讀出的值pp是否等于寫入的配置數據
  149. void test(void)
  150. {
  151.         u16 pp,i,a;
  152.        
  153.         ce(0);
  154.   en(0);               
  155.         delay_xms(1);                                        //nRF905?????,??????,???????
  156.                
  157.                
  158.         csn(0);
  159.         SPI_NRF_RW(RTA);
  160.         pp=SPI_NRF_RW(0x00);
  161.         a=pp;
  162.         csn(1);
  163.        
  164.         csn(0);
  165.         SPI_NRF_RW(RTP);
  166.         i=SPI_NRF_RW(0xa1);
  167.         a=i;
  168.         csn(1);
  169.                                                
  170. }

  171. /*********************************************END OF FILE**********************/
復制代碼



作者: tyler880    時間: 2020-4-11 10:47
沒調試成功你也放出來???




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品人伦一区二区三区蜜桃网站 | 日本人和亚洲人zjzjhd | 日本黄色一级片视频 | 亚洲免费视频一区 | 在线视频91 | 国产成人免费 | 玖玖视频免费 | 一区二区在线看 | 欧美日韩综合 | 日韩在线一区二区 | 亚洲欧美综合 | 伊人狠狠 | 国产精品视频一二三区 | 欧美不卡视频一区发布 | 精品久久精品 | 成人在线视频免费观看 | 一级h片| 国产一级在线观看 | 毛片高清 | 精品在线播放 | 欧美精品一区二区三区蜜桃视频 | 久久久久精| 日韩一区二区三区精品 | 99久久久无码国产精品 | 久久久精品影院 | 欧美亚洲国产精品 | 欧美久久一区二区三区 | 久久综合伊人 | 午夜男人天堂 | 一区二区三区四区不卡视频 | www.日韩免费 | 在线观看日本网站 | 伊人伊人伊人 | 中文字幕第十一页 | 国产精品永久免费观看 | 久久免费福利 | 欧美一级免费片 | 日韩一区二区av | 久久国产一区二区三区 | 久久精品日 | 欧美成人手机在线 |