日韩成人激情_欧美黑人xxx_国产一区二精品区在线_精品在线一区_97成人资源_久久久久久一区

產品分類

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

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

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

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

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

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视频免费在观看 | 999精品视频在线观看 | 99精品福利视频 | 亚洲第一视频网站 | 欧美八区 | 在线视频一区二区三区 | 亚洲有码转帖 | 久草新在线 | 国产精品久久久久久久久久久久 | 亚洲激情一区二区三区 | 国产高清一区二区三区 | 日韩一区二区三区在线 | 午夜小视频在线观看 | 国产91在线播放 | 日韩成人在线网站 | 亚洲视频免费 | 97国产精品 | 日本中文字幕一区 | 日韩久久久一区二区 | 91视频中文| 在线免费黄色小视频 | 久久精品二区 | 国产成人精品一区 | 国产乱码精品1区2区3区 | 午夜影院在线观看版 | 一区二区三区四区国产 | 一区二区三区电影在线观看 | 美国黄色一级片 | 国产精品黄色 | 国产精品久久久久久久久免费 | 久久久久一区 | 亚洲天堂一区 | 国产精品久久99 | 久久久91精品国产一区二区精品 | 婷婷福利视频导航 | 欧美精品91爱爱 | 成人精品视频在线观看 | 精品久久中文 | 自拍亚洲 | 2020亚洲天堂| 免费成人毛片 |