<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產品分類

      當前位置: 首頁 > 工業電子產品 > 其他電子產品 > IoT物聯網 > IoT傳感器

      類型分類:
      科普知識
      數據分類:
      IoT傳感器

      LoRa點對點系統7 剖析核心代碼

      發布日期:2022-05-25 點擊率:27

      線數據包外,還需要驅動射頻和響應多種中斷信號。為此,我們列出該進程的邏輯,并且剖析它的代碼。

      2 核心代碼邏輯

      有2個特別注意的地方:

      1. 如果RF_Rx_Error,需要重新啟動RF接收功能,以避免引發宕機錯誤;

      2. RF緩沖區中有多個數據包時,給自身發poll消息,讓其他進程有機會運行。

      3 剖析核心代碼

      PROCESS_THREAD(NetworkProcess, ev, data)

      {

      uint8_t    byDataSize;

      uint16_t    wCalcCRC16;

      uint16_t    wSrcCRC16;

       

      PROCESS_BEGIN();

       

      SX1278Receive(0);

      while(TRUE)

      {

      PROCESS_YIELD();

       

      if (NETWORK_EVENT_TX_RF_PACKAGE == ev)                                                      1

      {

      wCalcCRC16= util_CRC16( s_stTxRFPackage.a_byBuf,

      s_stTxRFPackage.byRFTxSize );

      *(uint16_t *)&s_stTxRFPackage.a_byBuf[s_stTxRFPackage.byRFTxSize] =

      wCalcCRC16;

       

      SX1278SetSleep();                                                                                                       2

      SX1278Send( s_stTxRFPackage.a_byBuf,

      s_stTxRFPackage.byRFTxSize +sizeof(uint16_t));                               3

       

      PROCESS_YIELD_UNTIL( RF_Tx_Done == s_tRFResult ||

      RF_Tx_Timeout ==s_tRFResult );                                  4

       

      SX1278Receive(0);                                                                                                       5

      }

      else                                                                                                                                6

      {

      if (RF_Rx_Error == s_tRFResult)

      {

      SX1278SetSleep();                                                                                                     7

      SX1278Receive(0);

      }

       

      if (!IsRadioBufEmpty())

      {

      s_stParseRFBuf.bySize = GetRadioBuf(s_stParseRFBuf.a_byBuf,RF_FIFO_SIZE); 8

       

      if (sizeof(uint16_t) < s_stParseRFBuf.bySize)

      {

      byDataSize = s_stParseRFBuf.bySize – sizeof(uint16_t);

      wSrcCRC16 = *(uint16_t *)&s_stParseRFBuf.a_byBuf[byDataSize];

      wCalcCRC16 = util_CRC16(s_stParseRFBuf.a_byBuf, byDataSize);

      if (wSrcCRC16 == wCalcCRC16)                                                                             9

      {

      comm2trm_RxRFPackage(s_stParseRFBuf.a_byBuf, byDataSize);                     10

      }

      else

      {

      SX1278SetSleep();                                                                                                11

      SX1278Receive(0);

      }

      }

       

      if (!IsRadioBufEmpty())                                                                                               12

      {

      process_poll(&NetworkProcess);

      }

      }

      }

      }

       

      PROCESS_END();

      }

      Line#1:用戶需要發送RF數據包;

      Line#2:將處于持續接收的RF設置休眠狀態;

      Line#3:通過SX1278發送該RF數據包;

      Line#4:阻塞進程,直到RF發送數據包完畢;

      Line#5:將RF切換到持續接收模式;

      Line#6:射頻中斷服務程序發來消息:接收到數據包,或,接收錯誤;

      Line#7:RF接收出錯,重新啟動RF接收功能,避免宕機錯誤;

      Line#8:從RF緩沖區復制數據包到解析工作區;

      Line#9:檢查接收數據包的CRC16是否正確;

      Line#10:交付接收數據給Comm2Trm進程;

      Line#11:如果數據包的CRC16錯誤,重新啟動RF接收功能,避免宕機錯誤;

      Line#12:如果RF緩沖區還有數據包,給自身發poll消息,允許Contiki調度其他進程運行。

      閱讀更多: LoRa實驗室, LoRa物聯網技術實戰

      參考分類:

      上一篇: LoRa點對點系統6 源代碼結構

      下一篇: NB-IoT和LoRa使用頻譜比較

      下一篇: PLC、DCS、FCS三大控

      上一篇: NB-IoT和LoRa使用頻譜

      推薦產品

      更多
      主站蜘蛛池模板: 综合五月激情二区视频| 丁香五月缴情综合网| 久久久久久久综合| 亚洲综合激情另类小说区| 国产成人人综合亚洲欧美丁香花 | 亚洲伊人久久成综合人影院| 久久久久久久尹人综合网亚洲| 色综合天天综合网国产成人网| 色偷偷91久久综合噜噜噜噜| 亚洲国产精品成人综合久久久| 亚洲精品国产综合久久久久紧| 亚洲av综合色区| 一本一本久久aa综合精品| 一本狠狠色丁香婷婷综合久久 | 色99久久久久高潮综合影院| 国产亚洲综合色就色| 久久综合久久久久88| 久久综合给合久久狠狠狠97色69| 伊人色综合久久天天五月婷| 伊人久久亚洲综合影院| 亚洲丁香婷婷综合久久| 偷自拍视频区综合视频区| 综合无码一区二区三区| 一本色道久久88综合日韩精品| 天天在线天天综合网色| 亚洲一本综合久久| 久久综合日韩亚洲精品色| 久久综合伊人77777| 天天做天天爱天天爽综合区| 色青青草原桃花久久综合| 亚洲综合久久1区2区3区| 色欲香天天天综合网站| 色婷婷久久综合中文久久蜜桃av| 久久综合综合久久综合| 色婷婷综合久久久久中文| 狠狠色丁香久久婷婷综合_中| 精品综合久久久久久97| 成人综合激情另类小说| 亚洲VA综合VA国产产VA中| 亚洲伊人久久大香线蕉综合图片| 国产美女亚洲精品久久久综合|