微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 關於CC2541 的UART收發的問題

關於CC2541 的UART收發的問題

时间:10-02 整理:3721RD 点击:

我目前設計的系統架構是有一peripheral端,接收來自PC端的UART訊號,再根據收到的訊號是什麼,回傳字串給PC端。

回傳字串的function,是呼叫NPI_WriteTransport("Ready", 5); 而AP端若收到不是正確的字串,就會再重送上一筆data下來給peripheral再次處理。

可目前遇到一個不太了解的現象,不管是收發都有機率會錯,而且一錯就持續錯,但正確就都正常,我在思考是不是buffer收發的時間點對不上或UART busy之類的問題。因為我在寫peripheral端的UART RX端的時候,是用if (events & HAL_UART_RX_TIMEOUT)再搭配收到的資料長度及其他特徵去辨別資料。

有看到一個HalUARTBusyDMA();可他宣告在_hal_uart_dma.c中,我在simpleBLEperipheral.c中無法呼叫,進行測試。

請問有沒有任何方式,或SFR可以確認,當UART RX ready時,我再來去收這些data。

仅仅根据接收数据的长度来判断一帧的结束不太好吧,如果有丢数据不就会出现连续一直错么。最好定一个协议,采用帧校验来判断是否接收到完整帧,校验出错就丢弃

您好,我在擷取資料的時候除了長度,還是有加入"在固定的buffer address找到特定字元"才進行接下來的工作,如if(buffer[1] == 0x54) && length == 19) 這樣的。

只是我做了這個仍然發現我上述所提到的狀況,所以不解,謝謝指教。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top