CC2500 RFチップに詳しい方はいらっしゃいますか?送信距離をより遠くするにはどのように設定すればよいでしょうか?

CC2500 RFチップに詳しい方はいらっしゃいますか?送信距離をより遠くするにはどのように設定すればよいでしょうか?

先直接说结论:要提升CC2500的传输距离,核心是最大化发射功率+降低数据速率+优化调制/带宽参数,结合你贴的配置,先修正几个关键寄存器~
你的PaTable[0] = 0xFF是错的!CC2500的发射功率由PATABLE寄存器配置,原生最大输出功率是 +1dBm,对应PATABLE值是0x3E(不同手册可能有细微差异,但0xFF是无效值)。
修改:const uint8_t PaTable[8] = {0x3E, 0xFF, ...}(只需要配置第0项,其他可以留空)。
CC2500的接收灵敏度和数据速率强相关:
数据速率由MDMCFG4+MDMCFG3决定,公式是:
建议配置成2.4kbaud(对应寄存器值:MDMCFG4=0x87,MDMCFG3=0x83),替换你现在的0x58/0x23。
OOK抗干扰极弱,优先用GFSK调制(CC2500的默认推荐),通过MDMCFG2寄存器配置:
MDMCFG2 = 0x02(MOD_FORMAT位设为GFSK),替换你现在的0x23。信道带宽越窄,接收灵敏度越高(但抗多径能力会弱一点,户外场景优先窄带宽):
通过MDMCFG3的CHANBW位配置,建议选203kHz带宽(对应MDMCFG3=0x83),和上面2.4kbaud的配置匹配。
弱信号下,更长的同步字更容易被接收端锁定,通过PKTCTRL0的SYNC_MODE配置:
PKTCTRL0 = 0x08(同步字长度设为4字节),替换你现在的0x06。你贴的PaTable是0xFF,这会导致发射功率异常(甚至可能没输出),先改成0x3E(芯片原生最大+1dBm),如果需要更远可以外挂PA(比如加PA后能到22dBm,但属于硬件扩展了)。
よ!CC2500と格闘しているのか。このチップはまさに古典だが、新しいLoRa系のものと比べて十分な通信距離を得るのは確かに難しいよな。
この悪党を使った設計はたくさんやってきた。君のコードスニペットを見ると(特にMDMCFGレジスタだ)、ここに通信距離を伸ばす「秘伝のタレ」を教えよう。
RFの世界では、データレートはレンジの敵だ。
MDMCFG4が0x5A、MDMCFG3が0xF8になっている。これがデータレートを設定している。MDMCFG4の上位ニブルを調整すること。世界最高のコードを書いても、RFパスがクズなら遠くまで届かない。
一番下にconst uint8_t PaTabel[8] = {0xFF ...とあるね。
0xFFは通常、CC2500の最大出力(+1 dBm)の設定だ。それを維持すること。まとめチェックリスト:
CC2500で通信距離を伸ばしたいなら、レジスタだけを見つめていてはダメです。まず「リンクバジェット」の考え方を理解しましょう:送信電力+アンテナ利得-経路損失-受信感度=マージン。マージンが大きければ大きいほど、距離が伸びます。以下、ソフトウェアとハードウェアの両面から「落とし穴リスト」をお渡しします。これを順番にチェックすれば、基本的に30%~50%の通信距離をさらに引き出せます。
一、ソフトウェア・レジスタ層(貼り付けたあの設定群)
まず電力をチップが出せる限界まで引き上げる
表のPA_TABLEに0xFFだけ書いてあるのは「乱暴な最大出力」ですが、CC2500の0xFFは+1 dBmに対応し、本来出せる+12 dBmからは程遠いです。
正しい方法:
const uint8_t paTable[8] = {0xFE,0xFC,0xF9,0xF6,0xF3,0xE8,0xD8,0xC0};データレートはできるだけ下げる
現在のMDMCFGはデータレートを250 kBaud以上に設定しており、感度は-90 dBm前後しかありません。
DRATE_E / DRATE_Mを下げて空中線上のレートを≤ 1.2 kBaudにすれば、感度は-110 dBmまで向上し、20 dBのマージンをそのまま獲得でき、理論距離はさらに10倍になります。
代償:遅延が大きく、スループットが小さくなりますが、リモコンやメータリング用途では問題ありません。
チャネル帯域幅を狭くする
AGCCTRL2でBWを812 kHzに設定すると、ノイズフロアが大量に入ってきます。
MDMCFG4.CHANBW_Eを上げてRX BW ≈ 2×データレートにします。1.2 kBaudの場合50 kHzで十分で、ノイズフロアは10log(812/50)≈12 dB低下し、またしても距離が2倍になります。
前方誤り訂正(FEC)&ホワイトニング
PKTCTRL0でFECを有効化(bit5=1)すると、CC2500内部の1/2畳み込み符号により感度がさらに2~3 dB改善します。データホワイトニングも有効化すれば、長い0/1列によるDC wanderを防止でき、実測で1~2 dBのフェージングを削減できます。
周波数は2.4Gにしないで、433/868に戻す
2.4 GHzの自由空間損失は433 MHzより16 dB大きく、壁の透過でもさらに10 dB劣ります。規制さえ許せば、迷わず433 MHzに切り替えましょう(中国の470 Mでも可)。同じパラメータで距離がそのまま2倍になります。
二、ハードウェア層(多くのソフトウェアエンジニアが見落としがち)
アンテナ端の「3点セット」
電源がクリーンでないと遠距離通信はできない
PAが瞬間的に60 mA立ち上がるとき、配線が5 cm長で幅0.2 mmだと瞬間電圧降下が200 mV、電力が2 dB低下します。
受信側LNA
マザーボードのスペースに余裕があれば、CC2500の前段にMAX2640を1個追加します。NF 0.9 dB、利得15 dBで、システム感度がそのまま12 dB改善し、送信側電力を変えずに距離がさらに2倍になります。LNA入力端には0900BL15B050型アイソレータを追加し、TXの大電力逆流を防いで破損を回避しましょう。
グランドプレーン&シールド
433 MHzの波長は69 cmで、基板のグランドプレーンがλ/4未満になると放射効率が急降下します。
高度&偏波
実測では433 MHzで1 m高度の通信距離は300 mですが、一端を3 mに上げればフレネルゾーンのクリアランスが確保され、距離がそのまま800 mになります。両端のアンテナを垂直偏波に統一すれば、交差偏波損失を20 dB削減できます。
三、クイック検証フロー
一言で言えば:まずデータレートを下げ、電力を最大に、帯域幅を狭くし、その後でアンテナ/マッチング/電源/シールドなどの「硬い骨」を噛み砕けば、CC2500でも1km以上飛ばせます。レジスタの中でいじくり回すだけに留まるな。デバッグが順調に行きますように!
嘿,我已經把 CC2500 推遠超過它「官方」30 公尺的視距範圍。
你貼的暫存器表格是個不錯的起點,但它仍然設定在 250 kbit / 2-FSK,這是吞吐量優先,而非距離優先的設定檔。
要從這顆晶片榨出每一公尺的距離,你必須用資料速率換取靈敏度,然後給 PA 一些東西來發揮。
以下是我調整東西的確切順序:
降低資料速率
1.2 kbit / 2-GFSK 是最佳甜蜜點 – 仍然符合 20 ppm 晶體規格,而且比 250 kbit 多出約 9 dB 的靈敏度。
MDMCFG4 = 0xF5 // 26 MHz / 256 / 12 ≈ 1.2 k
MDMCFG3 = 0x43 // DRATE_E = 0x4, DRATE_M = 0x3
DEVIATN = 0x15 // 5.2 kHz 頻偏 (≈ 0.4 × DR)
縮窄通道濾波器
MDMCFG2.CHARIC = 0 // 停用 DC 阻隔(約增益 1 dB)
DCFILT_OFF
AGCCTRL2 = 0x03 // 03h 使用 62 kHz 濾波器而非 93 kHz
加大 PA 輸出
PATABLE = {0xFF, 0x00, ...} // +0 dBm
並從應用說明文件中焊上 1.5 pF / 2 nH 的匹配電路,才能把訊號從晶片拉出來。PATABLE = {0xC0} // 參見 DN049
封包引擎技巧
保持合成器穩定
天線與佈局
用這些參數,我在 915 MHz 用鈕扣電池經常能達到 450 公尺視距,並穿透兩道木框牆達到 200 公尺。
把速率降到 0.6 kbit 還能更遠,但那就很接近 20 ppm 的偏移極限了;你需要 TCXO,否則熱天會掉封包。