zigbee 資料傳送週期和設定的週期不一致

2021-10-10 10:57:41 字數 2032 閱讀 6203

最後結論:

一直以為的硬體問題很可能是軟體問題,檢查下程式中是否有陣列操作溢位錯誤。

除錯現象:

用zigbee組網,協調器和路由器/終端組網後,發現路由器上傳到協調器的資料週期並非按照我程式的設定,**段如下:

週期處理段:

>

if傳送段:

>

void

(void

)>

else

>

}

預期出現的現象是協調器約3s收到一次路由器傳送的資料,如下圖:

實際收到的資料,如下圖:

原因分析:1、硬體問題!一定是硬體問題!於是我測試了電源質量,如下圖:

好傢伙,這麼大的紋波,再看看給cc2530模組供電的3.3v電源訊號質量,如下圖:

咦,我滴個乖,這不是很好嗎?難道是電源紋波對模組的電磁干擾!?管他三七二一,先乾了再說,磁阻,電感,電容,電阻,一切能夠消減電源紋波的手段全都上了,如下圖:

摸著電絡鐵,嗆了幾口松香發出老菸………………

電源質量是改善了,但協調器收到的資料依然是密密麻麻,我t,,。

2、難道不是硬體問題,難道是軟體問題?!

週期處理:

>

if資料傳送:

>

void

(void

)>

else

>

}

可以,正常傳送週期傳送啊?什麼情況。

3、轉角處的發現:

此時身體略微有些疲軟,深吸一口氣再切換到原來**、編譯,突然,

build框中乙個「金嘆號」閃過,並被我注意,如下圖:

什麼意思,out of range,直覺告訴我此處有鬼並且不一般;憑著我小學二年級的拼音能力,我找到了原因。

——定義的陣列溢位了!

——定義的陣列溢位了!

——定義的陣列溢位了!

你看到了嗎?

解決問題:

經過上面一頓猛如虎的操作,我拖著略顯疲憊但激動萬分的心情…………

我將 uint8 msgtable[12]改為了uint8 msgtable[13];

頓時,真個世界都有序而美好了。

真是應驗了唐朝李白的一首詩,《轉角遇見愛》

額外的發現。。。。

再排除硬體過程中,我本計畫用rc濾波將電源高頻干擾去除,結果導致cc2530模組直接無法工作,萬用表測量電壓也是3.3v正常,但示波器,測試電源卻發現,如下現象:

原因分析:zigbee在發射時會有較大瞬時功耗,如果此時電源環路阻抗過大將導致能量**不足進而傳送失敗。

解決辦法就是,提高供電迴路供電能力減小阻抗。

——————在兩外乙個專案中我將 ch340c做和cc2530做在一起,並用供電能力只有100ma的ldo進行供電,當插入usb口後,電腦無法識別,正是由於次原因。

Zigbee和wifi通道設定避免同頻干擾

為什麼是這七個通道呢?我們來看一下wifi通道的頻譜與zigbee通道頻譜的重疊就知道了。wifi常用是1,6,11,每個通道是22mhz的頻譜頻寬,那麼對照zigbee通道的分布,可以發現14,15通道正好在wifi通道的1,6通道的中間。這樣就可以理解zigbee聯盟推薦的通道的理由了。以上分析...

Tcp設定傳送和接收超時

linux和windows下用setsockopt設定so sndtimeo,so rcvtimeo的引數的一點區別 udp的socket在某些情況 如對方關閉時,本地可能sendto不出去資料,然後recvfrom就會被阻塞,這時就需要設定 這兩個引數的值提高程式質量。linux struct t...

splunk設定索引週期和索引大小

步驟一 messages coldpath splunk db messages colddb enabledataintegritycontrol 0 enabletsidxreduction 0 homepath splunk db messages db thawedpath splunk d...