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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5707|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

sx1278LORA+stm32單片機(jī)無線模塊可用源程序分享

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:385001 發(fā)表于 2019-7-19 20:59 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
弄了這個(gè)半天了    不想別人也這么累
出現(xiàn)了很多問題  本來以為GND 接一個(gè)就可以  誰知道所有都要接地
SX1278端口配置:


復(fù)位:PA1

射頻開關(guān)芯片收發(fā)切換:       CTRL  /CTRL
CTRL:  PA2                   1     0      RF_RX
/CTRL: PA3                   0     1      RF_TX

DIO0: PA0    可做收發(fā)中斷用
DIO1: PB1
DIO2: PB2
DIO3: PA8
DIO4: PA11
DIO5: PA12

LED指示燈: PB0

單片機(jī)源程序如下:
  1. /****************************************************************************
  2. * 本例程在 STM32開發(fā)板上調(diào)試通過           
  3. *
  4. * 文件名: main.c
  5. * 內(nèi)容簡述:        *      
  6. *        演示的是安信可LoRa無線通信的功能。
  7. *   
  8. *        定義:       
  9. *        LED1-LED3 ---V1--V3  注意郭版的開發(fā)板上LED燈為高電平點(diǎn)亮!
  10. *                V1----- PB5-LED1
  11. *                V2----- PD6-LED2
  12. *                V3----- PD3-LED3                       
  13. *                Key1----PC5
  14. *                Key2----PC2
  15. *                Key3----PC3
  16. *                Key4----PE6
  17. * 硬件連接:
  18. *
  19. * LoRa模塊引腳連接
  20. *  1--VDD--3.3V
  21. *  3--GND--GND
  22. *  5--PE1--RESET
  23. *  7--PD4--DIO0
  24. *  9--PD5--DIO1
  25. * 11--PD7--DIO2
  26. * 13--PD11--DIO3
  27. *
  28. * 2--PA5--SCK
  29. * 4--PB7--NSS
  30. * 6--PA7--MOSI
  31. * 8--PA6--MISO
  32. * -----
  33. *20--PD8--DIO5
  34. * 22--PE15--DIO4
  35. * 24--GND--GND
  36. *  ------------------------
  37. * | PA9  - USART1(Tx)      |
  38. * | PA10 - USART1(Rx)      |
  39. *  ------------------------   
  40. *        基于MDK版本:        3.8
  41. *        基于官方外設(shè)庫版本: 3.5
  42. *
  43. * 文件歷史:
  44. * 版本號  日期       作者    說明
  45. * v0.1   2017-2-11         Duke 創(chuàng)建該文件
  46. *
  47. *******************************************************************************/

  48. #include "sys_config.h"

  49. #define BUFFER_SIZE     30                          // Define the payload size here

  50. static uint16_t BufferSize = BUFFER_SIZE;                        // RF buffer size
  51. static uint8_t  Buffer[BUFFER_SIZE];                                // RF buffer

  52. static uint8_t EnableMaster = false;                                 // Master/Slave selection

  53. tRadioDriver *Radio = NULL;

  54. const uint8_t PingMsg[] = "PING";
  55. const uint8_t PongMsg[] = "PONG";
  56. const uint8_t MY_TEST_Msg[] = "LoRa_SX1278_TEST";


  57. void OnMaster( void );
  58. void OnSlave( void );
  59. /*
  60. * Manages the master operation
  61. */
  62. void OnMaster( void )
  63. {
  64.     uint8_t i;
  65.    
  66.     switch( Radio->Process( ) )
  67.     {
  68.     case RF_RX_TIMEOUT:
  69.         // Send the next PING frame
  70.         Buffer[0] = 'P';
  71.         Buffer[1] = 'I';
  72.         Buffer[2] = 'N';
  73.         Buffer[3] = 'G';
  74.         for( i = 4; i < BufferSize; i++ )
  75.         {
  76.             Buffer[i] = i - 4;
  77.         }
  78.         Radio->SetTxPacket( Buffer, BufferSize );   //RFLR_STATE_TX_INIT
  79.         break;
  80.     case RF_RX_DONE:
  81.         Radio->GetRxPacket( Buffer, ( uint16_t* )&BufferSize );

  82.                 for(i=0;i<17;i++)
  83.                 {
  84.                         USART_putchar(USART1,Buffer[i]);
  85.                 }
  86.                 printf("\n");
  87.    
  88.                 if( BufferSize > 0 )
  89.         {
  90.             if( strncmp( ( const char* )Buffer, ( const char* )PongMsg, 4 ) == 0 )
  91.             {
  92.                 // Indicates on a LED that the received frame is a PONG
  93. //                LedToggle( LED_GREEN );
  94.                                 LED0_TOGGLE;

  95.                 // Send the next PING frame            
  96.                 Buffer[0] = 'P';
  97.                 Buffer[1] = 'I';
  98.                 Buffer[2] = 'N';
  99.                 Buffer[3] = 'G';
  100.                 // We fill the buffer with numbers for the payload
  101.                 for( i = 4; i < BufferSize; i++ )
  102.                 {
  103.                     Buffer[i] = i - 4;
  104.                 }
  105.                 Radio->SetTxPacket( Buffer, BufferSize );    //RFLR_STATE_TX_INIT
  106.             }
  107.             else if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 )
  108.             { // A master already exists then become a slave
  109.                 EnableMaster = false;
  110. //                LedOff( LED_RED );
  111.                                 LED0_OFF;
  112.             }
  113.         }            
  114.         break;
  115.     case RF_TX_DONE:
  116.         // Indicates on a LED that we have sent a PING
  117. //        LedToggle( LED_RED );
  118.                 LED0_TOGGLE;
  119.         Radio->StartRx( );   //RFLR_STATE_RX_INIT
  120.         break;
  121.     default:
  122.         break;
  123.     }
  124. }

  125. /*
  126. * Manages the slave operation
  127. */
  128. void OnSlave( void )
  129. {
  130.     uint8_t i;

  131.     switch( Radio->Process( ) )
  132.     {
  133.     case RF_RX_DONE:
  134.         Radio->GetRxPacket( Buffer, ( uint16_t* )&BufferSize );
  135.    
  136.         if( BufferSize > 0 )
  137.         {
  138.             if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 )
  139.             {
  140.                 // Indicates on a LED that the received frame is a PING
  141. //                LedToggle( LED_GREEN );
  142.                                 LED0_TOGGLE;

  143.                // Send the reply to the PONG string
  144.                 Buffer[0] = 'P';
  145.                 Buffer[1] = 'O';
  146.                 Buffer[2] = 'N';
  147.                 Buffer[3] = 'G';
  148.                 // We fill the buffer with numbers for the payload
  149.                 for( i = 4; i < BufferSize; i++ )
  150.                 {
  151.                     Buffer[i] = i - 4;
  152.                 }

  153.                 Radio->SetTxPacket( Buffer, BufferSize );      //RFLR_STATE_TX_INIT
  154.             }
  155.         }
  156.         break;
  157.     case RF_TX_DONE:
  158.         // Indicates on a LED that we have sent a PONG
  159. //        LedToggle( LED_RED );
  160.                 LED0_TOGGLE;
  161.         Radio->StartRx( );   //RFLR_STATE_RX_INIT
  162.         break;
  163.     default:
  164.         break;
  165.     }
  166. }




  167. #define SX1278_RX
  168. //#define SX1278_TX

  169. /**
  170.   * @brief  主函數(shù)
  171.   * @param  無
  172.   * @retval 無
  173.   */
  174. int main(void)
  175. {
  176.         uint8_t i;
  177.         //stm32 config
  178.         sys_Configuration();
  179.        
  180.         BoardInit( );
  181.    
  182.     Radio = RadioDriverInit( );
  183.    
  184.     Radio->Init( );
  185.                
  186. #if defined (SX1278_RX)
  187.     Radio->StartRx( );   //RFLR_STATE_RX_INIT
  188.         //printf("StartRx\n");
  189. #elif defined (SX1278_TX)
  190.         Radio->SetTxPacket( MY_TEST_Msg, 18 );
  191. #endif
  192.        
  193.         while(1)
  194.         {
  195. #if defined (SX1278_RX)
  196.                 while( Radio->Process( ) == RF_RX_DONE)
  197.                 {
  198.                         Radio->GetRxPacket( Buffer, ( uint16_t* )&BufferSize );
  199. //                        if( strncmp( ( const char* )Buffer, ( const char* )MY_TEST_Msg, 18 ) == 0 )
  200. //                        {
  201.                                 for(i=0;i < BufferSize;i++)
  202.                                 {
  203.                                         USART_putchar(USART1,Buffer[i]);
  204.                                 }
  205.                                 printf("\n");
  206.                                 LED0_TOGGLE;
  207.                                 for(i=0;i<BUFFER_SIZE;i++)
  208.                                 {
  209.                                                 Buffer[i] = 0;
  210.                                 }
  211.                                 Radio->StartRx( );
  212.                                
  213.                 }
  214. #elif defined (SX1278_TX)
  215. //                printf("運(yùn)行在RF_LoRa_TX_OK? \n");
  216.                 while(Radio->Process( ) == RF_TX_DONE)
  217.                 {
  218.                         printf("RF_LoRa_TX_OK! \n");
  219.                         LED0_TOGGLE;
  220.                         Soft_delay_ms(500);
  221.                 Radio->SetTxPacket( MY_TEST_Msg, strlen(MY_TEST_Msg) );   //RFLR_STATE_TX_INIT
  222.                 }               
  223. #endif
  224.                
  225.         }
  226. }



  227. /*********************************************END OF FILE**********************/
復(fù)制代碼

所有資料51hei提供下載:
STM32_SX1278_RX_Test.7z (268.74 KB, 下載次數(shù): 114)

評分

參與人數(shù) 2黑幣 +55 收起 理由
言西 + 5 絕世好帖!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:230975 發(fā)表于 2019-11-2 11:00 | 只看該作者
樓主有沒有LORA與51的通信范例程序
回復(fù)

使用道具 舉報(bào)

板凳
ID:634328 發(fā)表于 2019-11-2 13:43 | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報(bào)

地板
ID:412030 發(fā)表于 2019-11-25 23:36 | 只看該作者
hmgqljz111 發(fā)表于 2019-11-2 11:00
樓主有沒有LORA與51的通信范例程序

51單片機(jī)直接寫一個(gè)模擬SPI把樓主提供的demo中的SPI管腳替換一下就可以了
回復(fù)

使用道具 舉報(bào)

5#
ID:502931 發(fā)表于 2020-2-2 18:43 | 只看該作者
多謝分享,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

6#
ID:399111 發(fā)表于 2024-4-22 15:53 | 只看該作者
樓主,看來遇到坑不少啊,,,,
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频三区 | 情侣黄网站免费看 | 精产国产伦理一二三区 | 成人精品在线视频 | 久久精品亚洲国产 | 日韩毛片在线免费观看 | 国产精品久久片 | 日韩午夜精品 | 国产成人在线视频 | 欧美成人精品一区二区三区 | 激情 一区| 久草新在线 | 日日摸夜夜添夜夜添精品视频 | 七七婷婷婷婷精品国产 | 欧美一级二级三级视频 | 香蕉久久a毛片 | 99亚洲精品视频 | 午夜小视频在线观看 | 夜夜爽99久久国产综合精品女不卡 | 2019天天操 | www.日韩免费 | 中文字字幕在线中文乱码范文 | 成人在线 | 久久久久国产精品一区二区 | 99pao成人国产永久免费视频 | 91在线最新 | 婷婷久久五月天 | 欧美成视频 | 欧美日韩国产精品一区二区 | 成人小视频在线观看 | www.亚洲一区二区三区 | 亚洲日韩中文字幕一区 | 妞干网视频 | 免费成人毛片 | 亚洲三级av| 欧美中文字幕一区二区 | 99精品国产一区二区青青牛奶 | 亚洲午夜av | 欧美精品在线播放 | 蜜桃在线播放 | 日本在线一区二区三区 |