找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1321|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

stm32 SubGHz_Phy_PingPong(點(diǎn)對點(diǎn)通信)例程無線收發(fā)數(shù)據(jù)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1078076 發(fā)表于 2023-5-17 15:53 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
官方程序的邏輯是,主設(shè)備發(fā)送PING給從設(shè)備,從設(shè)備回復(fù)PONG給主設(shè)備,一直重復(fù)這個過程。在官方程序中,每次發(fā)送PING(PONG)都發(fā)送了32字節(jié)的數(shù)據(jù),但是實(shí)際上PING(PONG)只需要4個字節(jié),剩下28個字節(jié)都是0。
現(xiàn)在需要將幾十K的數(shù)據(jù)發(fā)送給從設(shè)備。
軟件邏輯是,從設(shè)備收到PING,發(fā)送PONG給主設(shè)備,主設(shè)備收到PONG開始數(shù)據(jù)收發(fā)過程。主設(shè)備每發(fā)送一個數(shù)據(jù)包,就會進(jìn)入接收模式,直到接收到下一個pong。從設(shè)備接收到數(shù)據(jù),就發(fā)送一個pong給主設(shè)備。

官方程序設(shè)定最大有效負(fù)載長度為256字節(jié)   函數(shù)原型void    ( *SetMaxPayloadLength )( RadioModems_t modem, uint8_t max );

第一次實(shí)驗(yàn),每次發(fā)送8字節(jié)數(shù)據(jù),代碼運(yùn)行成功,耗時2.5小時
第二次實(shí)驗(yàn),每次發(fā)送32字節(jié)數(shù)據(jù),代碼運(yùn)行成功,耗時0.5小時
第三次實(shí)驗(yàn),每次發(fā)送64字節(jié)數(shù)據(jù),代碼運(yùn)行結(jié)束,數(shù)據(jù)有丟失
第四次實(shí)驗(yàn),每次發(fā)送40字節(jié)數(shù)據(jù),代碼運(yùn)行結(jié)束,數(shù)據(jù)有丟失
發(fā)現(xiàn)只要超過官方例程的32字節(jié)就會有數(shù)據(jù)丟失,上位機(jī)軟件會打印IRQ_CRC_ERROR,這個信息好像是硬件中斷函數(shù)打印的,但是我沒找到中斷回調(diào)函數(shù)在哪
//設(shè)置發(fā)送參數(shù)

  Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,//模式LoRa,發(fā)送功率14dbm,0 FSK模式下頻移參數(shù),信號帶寬124KHz
                    LORA_SPREADING_FACTOR, LORA_CODINGRATE,           //數(shù)據(jù)傳輸速率1024bps,編碼率
                    LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, //前導(dǎo)長度8、是否固定數(shù)據(jù)包長度(否)
                    true, 0, 0, LORA_IQ_INVERSION_ON, TX_TIMEOUT_VALUE);//是否CRC校驗(yàn)(是),是否頻率跳變,頻率跳變周期,IQ采樣反轉(zhuǎn)大多數(shù)情況為0,發(fā)送超時時間3秒


//設(shè)置接收參數(shù)

  Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, //模式,信號帶寬,數(shù)據(jù)傳輸速率
                    LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,     //編碼率,0設(shè)置FSK的AFC自動頻率控制,前導(dǎo)長度
                    LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, //超時符號數(shù),是否固定數(shù)據(jù)包長度
                    0, true, 0, 0, LORA_IQ_INVERSION_ON, true);  //0若為固定數(shù)據(jù)包則有這個參數(shù)設(shè)置長度,CRC校驗(yàn)true,是否頻率跳變0,頻率跳變周期0,IQ采樣反轉(zhuǎn)大多數(shù)情況為0,true


  Radio.SetMaxPayloadLength(MODEM_LORA, MAX_APP_BUFFER_SIZE); //設(shè)置最大負(fù)載長度255

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1078076 發(fā)表于 2023-5-17 22:03 | 只看該作者
問題已經(jīng)得到解決。STM32 Pingpong 收發(fā)例程是基于串口通信的,如果你遇到了數(shù)據(jù)丟失的問題,很可能是因?yàn)閿?shù)據(jù)傳輸速率過快導(dǎo)致。你可以嘗試調(diào)整波特率降低傳輸速率并重新測試。

IRQ_CRC_ERROR 表示接收到的數(shù)據(jù)在 CRC 校驗(yàn)時出錯,這可能是由于信號干擾、噪聲或者其他原因?qū)е碌。你可以檢查一下你的硬件連接是否穩(wěn)定,并且確認(rèn)發(fā)送端和接收端設(shè)置的參數(shù)是否匹配。

此外,如果你使用的是 DMA 方式進(jìn)行傳輸,也有可能是 DMA 緩沖區(qū)溢出導(dǎo)致的數(shù)據(jù)丟失。你可以查看 DMA 配置以確認(rèn)是否存在這種情況。

最后,如果你無法確定具體的問題所在,可以嘗試?yán)谜{(diào)試工具(如邏輯分析儀)來對串口通信進(jìn)行抓包分析,以便更好地定位問題。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表