日韩成人激情_欧美黑人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使用頻譜

推薦產品

更多
主站蜘蛛池模板: 午夜精品一区二区三区在线观看 | 国产精品一区二区三区在线播放 | 一区二区国产精品 | 2一3sex性hd| 成人欧美一区二区三区 | 久久国产高清视频 | 欧美精品成人一区二区三区四区 | 成人免费视频一区二区 | 亚洲精品一区二三区不卡 | 黄色片在线网站 | 国产免费又色又爽又黄在线观看 | 婷婷综合五月天 | 成人在线免费电影 | 日韩免费一级 | 高清视频一区二区三区 | 久久国产视频网 | 中文精品一区二区 | 久久中文一区二区 | 国产黄色在线观看 | 999观看免费高清www | 欧美日韩在线精品 | 美女张开腿露出尿口 | 精品美女久久久久久免费 | 亚洲 中文 欧美 日韩 在线观看 | 91伊人 | 伊人网在线看 | 成人av网站在线观看 | 日韩在线中文字幕 | 国产一区二区影院 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲嫩草| 国产高清在线 | 99久久精品免费看国产四区 | 综合国产在线 | 中文字幕精品一区二区三区精品 | 一区二区三区在线免费看 | 日本成人久久 | 欧美一区二区三区久久精品视 | 亚洲 欧美 日韩 在线 | 国产精品日女人 | 国产精品一区二区视频 |