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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7983|回復: 9
收起左側

SX1262在stm32上的完整程序+PCB封裝 完全的設計資料

  [復制鏈接]
ID:588333 發表于 2019-7-23 09:40 | 顯示全部樓層 |閱讀模式
SX1262 在stm32單片機上的完整例子,SX1262TR4-GC資料包,包括:芯片數據手冊,模塊規格書,接線示意圖,PCB封裝,Demo程序(完整代碼,keil5驗證通過)
完整的資料,非常難得。

電路原理圖如下:
0.png

0.png

PCB封裝:
0.png

STM32單片機源程序如下:
  1. #include <string.h>
  2. #include "user.h"
  3. #include "sx126x-board.h"


  4. /**************************************************************************************************************************************
  5. Demo 程序流程  EnableMaster=true  為主機端,主機端發送一個"PING"數據后切換到接收,等待從機返回的應答"PONG"數據LED閃爍

  6.                EnableMaster=false 為從機端,從機端接收到主機端發過來的"PING"數據后LED閃爍并發送一個"PONG"數據作為應答
  7. ***************************************************************************************************************************************/


  8. #define USE_MODEM_LORA
  9. #define REGION_CN779

  10. #if defined( REGION_AS923 )

  11. #define RF_FREQUENCY                                923000000 // Hz

  12. #elif defined( REGION_AU915 )

  13. #define RF_FREQUENCY                                915000000 // Hz

  14. #elif defined( REGION_CN779 )

  15. #define RF_FREQUENCY                                434000000 // Hz

  16. #elif defined( REGION_EU868 )

  17. #define RF_FREQUENCY                                868000000 // Hz

  18. #elif defined( REGION_KR920 )

  19. #define RF_FREQUENCY                                920000000 // Hz

  20. #elif defined( REGION_IN865 )

  21. #define RF_FREQUENCY                                865000000 // Hz

  22. #elif defined( REGION_US915 )

  23. #define RF_FREQUENCY                                915000000 // Hz

  24. #elif defined( REGION_US915_HYBRID )

  25. #define RF_FREQUENCY                                915000000 // Hz

  26. #else

  27.     #error "Please define a frequency band in the compiler options."

  28. #endif

  29. #define TX_OUTPUT_POWER                             22        // 22 dBm

  30. extern bool IrqFired;




  31. bool EnableMaster=false;//主從選擇

  32. uint16_t  crc_value;
  33. /*!
  34. * Radio events function pointer
  35. */
  36. static RadioEvents_t RadioEvents;

  37. #if defined( USE_MODEM_LORA )

  38. #define LORA_BANDWIDTH                              1         // [0: 125 kHz,
  39.                                                               //  1: 250 kHz,
  40.                                                               //  2: 500 kHz,
  41.                                                               //  3: Reserved]
  42. #define LORA_SPREADING_FACTOR                       11         // [SF7..SF12]
  43. #define LORA_CODINGRATE                             2         // [1: 4/5,
  44.                                                               //  2: 4/6,
  45.                                                               //  3: 4/7,
  46.                                                               //  4: 4/8]
  47. #define LORA_PREAMBLE_LENGTH                        8         // Same for Tx and Rx
  48. #define LORA_SYMBOL_TIMEOUT                         0         // Symbols
  49. #define LORA_FIX_LENGTH_PAYLOAD_ON                  false
  50. #define LORA_IQ_INVERSION_ON                        false

  51. #elif defined( USE_MODEM_FSK )

  52. #define FSK_FDEV                                    5e3      // Hz
  53. #define FSK_DATARATE                                2.4e3      // bps
  54. #define FSK_BANDWIDTH                               20e3     // Hz >> DSB in sx126x
  55. #define FSK_AFC_BANDWIDTH                           100e3     // Hz
  56. #define FSK_PREAMBLE_LENGTH                         5         // Same for Tx and Rx
  57. #define FSK_FIX_LENGTH_PAYLOAD_ON                   false

  58. #else
  59.     #error "Please define a modem in the compiler options."
  60. #endif

  61. typedef enum
  62. {
  63.     LOWPOWER,
  64.     RX,
  65.     RX_TIMEOUT,
  66.     RX_ERROR,
  67.     TX,
  68.     TX_TIMEOUT,
  69. }States_t;

  70. #define RX_TIMEOUT_VALUE                            1000
  71. #define BUFFER_SIZE                                 64 // Define the payload size here

  72. const uint8_t PingMsg[] = "PING";
  73. const uint8_t PongMsg[] = "PONG";

  74. uint16_t BufferSize = BUFFER_SIZE;
  75. uint8_t TX_Buffer[BUFFER_SIZE];
  76. uint8_t RX_Buffer[BUFFER_SIZE];


  77. States_t State = LOWPOWER;

  78. int8_t RssiValue = 0;
  79. int8_t SnrValue = 0;
  80. void OnTxDone( void );
  81. void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr );
  82. void OnTxTimeout( void );
  83. void OnRxTimeout( void );
  84. void OnRxError( void );


  85. void SysClock_48()
  86. {
  87.    RCC_PLLCmd(DISABLE);
  88.    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);//48M
  89.    RCC_PLLCmd(ENABLE);
  90.    while(!RCC_GetFlagStatus(RCC_FLAG_PLLRDY));
  91.    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  92. }

  93. void Tick_Configration()
  94. {
  95.     /* Setup SysTick Timer for 1ms interrupts ( not too often to save power ) */
  96.     if( SysTick_Config( SystemCoreClock / 1000 ) )
  97.     {
  98.         /* Capture error */
  99.         while (1);
  100.     }
  101. }

  102. void RCC_Configuration()
  103. {   
  104.   /* Enable GPIO clock */
  105.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOF, ENABLE);
  106.   
  107.   /* Enable peripheral Clock */
  108.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2|RCC_APB1Periph_PWR, ENABLE);  
  109.   
  110.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_SYSCFG, ENABLE);
  111. }

  112. void HW_int(void)
  113. {
  114.     SysClock_48();
  115.     Tick_Configration();
  116.     RCC_Configuration();
  117.     GPIO_int();
  118.     SPI2_Int();
  119. }


  120. void LedToggle(void)
  121. {
  122.   GPIO_WriteBit( LED1_PORT, LED1_PIN,Bit_RESET);//LED閃爍
  123.   HAL_Delay_nMS(10);
  124.   GPIO_WriteBit( LED1_PORT, LED1_PIN,Bit_SET);
  125. }


  126. int main( void )
  127. {   
  128. //    uint8_t data[2]={0x12,0x34};
  129. //    static uint8_t test[2];
  130.    
  131.     HW_int();//MCU外圍資源初始化
  132.    
  133.    
  134.     // Radio initialization
  135.     RadioEvents.TxDone = OnTxDone;
  136.     RadioEvents.RxDone = OnRxDone;
  137.     RadioEvents.TxTimeout = OnTxTimeout;
  138.     RadioEvents.RxTimeout = OnRxTimeout;
  139.     RadioEvents.RxError = OnRxError;
  140.    
  141.    
  142.     Radio.Init( &RadioEvents );
  143.     Radio.SetChannel( RF_FREQUENCY );
  144.    
  145. //    Radio.WriteBuffer(0x06C0,data,2);
  146. //    Radio.ReadBuffer(0x06C0,test,2);
  147.    
  148. #if defined( USE_MODEM_LORA )

  149.     Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
  150.                                    LORA_SPREADING_FACTOR, LORA_CODINGRATE,
  151.                                    LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
  152.                                    true, 0, 0, LORA_IQ_INVERSION_ON, 3000 );

  153.     Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
  154.                                    LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
  155.                                    LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
  156.                                    0, true, 0, 0, LORA_IQ_INVERSION_ON, false );

  157. #elif defined( USE_MODEM_FSK )
  158.    
  159.     Radio.SetTxConfig( MODEM_FSK, TX_OUTPUT_POWER, FSK_FDEV, 0,
  160.                                   FSK_DATARATE, 0,
  161.                                   FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON,
  162.                                   true, 0, 0, 0, 3000 );

  163.     Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE,
  164.                                   0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH,
  165.                                   0, FSK_FIX_LENGTH_PAYLOAD_ON, 0, true,
  166.                                   0, 0,false, true );
  167. #else
  168.     #error "Please define a frequency band in the compiler options."
  169. #endif

  170.    
  171.     if(EnableMaster)
  172.     {
  173.           TX_Buffer[0] = 'P';
  174.           TX_Buffer[1] = 'I';
  175.           TX_Buffer[2] = 'N';
  176.           TX_Buffer[3] = 'G';
  177.          
  178.           crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//計算得出要發送數據包CRC值
  179.           TX_Buffer[4]=crc_value>>8;
  180.           TX_Buffer[5]=crc_value;
  181.           Radio.Send( TX_Buffer, 6);
  182.     }
  183.     else
  184.     {
  185.        Radio.Rx( RX_TIMEOUT_VALUE );
  186.     }
  187.    
  188.     while( 1 )
  189.     {
  190.         Radio.IrqProcess( ); // Process Radio IRQ
  191.     }
  192. }

  193. void OnTxDone( void )
  194. {   
  195.     Radio.Standby();
  196.     Radio.Rx( RX_TIMEOUT_VALUE ); //進入接收

  197. }

  198. void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
  199. {
  200.     BufferSize = size;
  201.     memcpy( RX_Buffer, payload, BufferSize );
  202.     RssiValue = rssi;
  203.     SnrValue = snr;
  204.    
  205.     Radio.Standby();
  206.    
  207.     if(EnableMaster)
  208.     {
  209.       if(memcmp(RX_Buffer,PongMsg,4)==0)
  210.       {
  211.         LedToggle();//LED閃爍
  212.         
  213.       }
  214.      
  215.         TX_Buffer[0] = 'P';
  216.         TX_Buffer[1] = 'I';
  217.         TX_Buffer[2] = 'N';
  218.         TX_Buffer[3] = 'G';
  219.         
  220.         crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//計算得出要發送數據包CRC值
  221.         TX_Buffer[4]=crc_value>>8;
  222.         TX_Buffer[5]=crc_value;
  223.         Radio.Send( TX_Buffer, 6);
  224.     }
  225.     else
  226.     {
  227.       if(memcmp(RX_Buffer,PingMsg,4)==0)
  228.       {
  229.         LedToggle();//LED閃爍
  230.         
  231.         TX_Buffer[0] = 'P';
  232.         TX_Buffer[1] = 'O';
  233.         TX_Buffer[2] = 'N';
  234.         TX_Buffer[3] = 'G';
  235.         
  236.         crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//計算得出要發送數據包CRC值
  237.         TX_Buffer[4]=crc_value>>8;
  238.         TX_Buffer[5]=crc_value;
  239.         Radio.Send( TX_Buffer, 6);
  240.       }
  241.       else
  242.       {
  243.         Radio.Rx( RX_TIMEOUT_VALUE );
  244.       }   
  245.     }
  246. }

  247. void OnTxTimeout( void )
  248. {
  249.    
  250. }

  251. void OnRxTimeout( void )
  252. {
  253.     Radio.Standby();
  254.     if(EnableMaster)
  255.     {
  256.         TX_Buffer[0] = 'P';
  257.         TX_Buffer[1] = 'I';
  258.         TX_Buffer[2] = 'N';
  259.         TX_Buffer[3] = 'G';
  260.         
  261.         crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//計算得出要發送數據包CRC值
  262.         TX_Buffer[4]=crc_value>>8;
  263.         TX_Buffer[5]=crc_value;
  264.         Radio.Send( TX_Buffer, 6);
  265.     }
  266.     else
  267.     {
  268.       Radio.Rx( RX_TIMEOUT_VALUE );
  269.     }
  270. }

  271. void OnRxError( void )
  272. {

  273.   
  274. }
復制代碼

所有資料51hei提供下載:
SX1262TR4-GC資料包.7z (5.78 MB, 下載次數: 288)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:588333 發表于 2019-7-23 09:41 | 顯示全部樓層
附件怎么沒了?
回復

使用道具 舉報

ID:609438 發表于 2019-9-9 12:10 | 顯示全部樓層
想問一下樓主有沒有遇到發射功率達不到的情況
回復

使用道具 舉報

ID:286308 發表于 2019-11-1 14:14 | 顯示全部樓層
非常好,非常感謝!
回復

使用道具 舉報

ID:85498 發表于 2019-12-16 20:16 | 顯示全部樓層
非常好,非常感謝!
回復

使用道具 舉報

ID:672719 發表于 2019-12-24 18:03 | 顯示全部樓層
這款芯片不需要用外部晶振嗎
回復

使用道具 舉報

ID:681479 發表于 2020-1-5 12:22 | 顯示全部樓層
非常好,非常感謝!
回復

使用道具 舉報

ID:41107 發表于 2020-3-29 19:00 | 顯示全部樓層
沒有mondy,how to do
回復

使用道具 舉報

ID:134779 發表于 2020-6-2 22:17 | 顯示全部樓層
厲害了
回復

使用道具 舉報

ID:389181 發表于 2020-8-12 21:04 | 顯示全部樓層
感謝提供資源
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级黄色片免费观看 | 在线播放日韩 | 干干干操操操 | 草草草久久久 | 日日草夜夜草 | 久久鲁视频 | 日本一区二区电影 | 日韩高清一区 | 国产人成精品一区二区三 | 日韩精品免费在线观看 | 欧美在线资源 | www.亚洲一区 | 激情国产视频 | 中文字幕一区在线观看视频 | 日本久久一区二区三区 | 国产精品国产精品国产专区不卡 | 日韩三级一区 | 我爱操 | 韩国精品在线观看 | 一级黄色裸片 | 国产99久久精品 | 天天弄| 99免费在线观看视频 | 在线a视频 | 中文字幕人成乱码在线观看 | 在线第一页 | 成人一区二区三区 | 成人免费大片黄在线播放 | 国产精品亚洲精品 | 日韩精品一区二区不卡 | 夜久久 | 亚洲男女视频在线观看 | 国产露脸国语对白在线 | 国产精品欧美一区二区三区 | 国产欧美精品 | 欧美专区在线视频 | 欧美日韩中文在线 | 欧美成视频在线观看 | 国产精品自拍一区 | 午夜精品一区二区三区在线视频 | 91精品国产91久久综合桃花 |