STM8、STM8S003F3P6は、ZM470SX-MPモジュールを介してlora通信を実現します

バックグラウンド

モノのインターネットが普及している今、loraは避けては通れませんが、STM8S003F3P6を使って周立功のloraモジュールZM470SX-MPを使ってlora通信を実現するプロジェクトもあります。

回路図

くだらない話はやめて、回路図に行きましょう

この回路図を長い間探していましたが、見つかりませんでした。説明書に従ってピン図を見つけました。この回路図は非常に単純です。つまり、スイッチング信号が STM8S003F3P6 双方向で検出されます。 IO、スイッチング値情報は lora を通じて報告されます。

 ZM470SX-MPの紹介

取扱説明書の資料もここにあります。その他の資料については、マニュアルを参照してください。これは透明な LORA ではないことに注意してください。使用するのは少し複雑です。Zhou Ligong はいくつかの API 関数を提供していますが、比較しました。これらの透過型 LORA の設計手法を使用すると、制御 MCU が不要になるため、消費電力が若干低くなります。

ZM470SX-MP モジュールは、Guangzhou Zhiyuan Electronics Co., Ltd. が独自に開発した産業グレードの高周波無線製品です。このモジュールは軍事戦術通信システムから派生したLoRa変調技術設計を採用しており、複雑な環境における少ないデータ量での超長距離通信の問題を完全に解決します。ZM470SX-MPモジュールは、従来の変調技術と比較して、同一チャネル干渉を抑制する性能において明らかな利点もあり、従来の設計方式では距離、干渉耐性、消費電力を同時に考慮できないという欠点を解決します。 。さらに、チップには +30dBm 調整可能なパワーアンプが統合されており、-148dBm を超える受信感度を得ることができ、リンクバジェットは業界をリードするレベルに達しています。

 周波数範囲: 410~525MHz

 動作電圧 2.6~3.6V。

 受信電流 14mA、送信電流 800mA@28dBm;

 調整可能な送信電力: 23~30dBm;

 受信感度は-148dBmに達します。

 伝送速度 0.123~300 kbps;

 FSK/GFSK/MSK/GMSK/LoRa/OOK およびその他の変調方式をサポートします。

 キャリア周波数はプログラム可能。

 送信バッファと受信バッファの合計 256 バイト。

 複数の低電力動作モードをサポートします。

 同一チャネル干渉を効果的に抑制できます。

 3.3Vインターフェースレベル;

 SPIバス通信インターフェースを使用します。

 長さ×幅×高さ:15×15×2.2(mm)

ソフトウェア設計

これは主にZhou LigongのAPI関数を移植するもので、以下のように対応するIOを直接呼び出し、main関数内で初期化を完了させた後、IOスイッチ情報を定期的に送信します。

void main(void)
{
  BSP_Initializes();
  Init_IO();                //IO口配置

  Radio = RadioDriverInit();//注册相关的函数
  Radio->Init();            //无线模块初始化
  Radio->RFOpModeSet(RFLR_OPMODE_SLEEP);//进入睡眠状态  

  while(1)
  {
    LED_ON;                                      //LED亮
    SoftwareDelay(0x6000);
    LED_OFF;                                     //LED灭
    SoftwareDelay(0x6000);
    SendHeartbeat();
//    Temp =  0;
//    if(INTPUT_0 != 0) 
//            Temp += 1;
//    if(INTPUT_1 != 0) 
//            Temp += 2;
//    if(Temp != 0)
//    {
//      SensorFlag = 0xF0 + Temp;
//      Temp = 0;
//      SendHeartbeat();
//    }
  }
}

モジュールインターフェースIOマクロの定義は以下のとおりです。


#define  INPUT_0_Port  GPIOD
#define  INPUT_0_Pin   GPIO_PIN_3 

#define  INPUT_1_Port  GPIOD
#define  INPUT_1_Pin   GPIO_PIN_4 
    
    
 
#define  RF_RST_Port  GPIOC
#define  RF_RST_Pin   GPIO_PIN_3 

#define  RF_SEL_Port  GPIOC
#define  RF_SEL_Pin   GPIO_PIN_4 

#define  RF_MOSI_Port  GPIOC
#define  RF_MOSI_Pin   GPIO_PIN_5 

#define  RF_MISO_Port  GPIOC
#define  RF_MISO_Pin   GPIO_PIN_6 

#define  RF_SCK_Port  GPIOC
#define  RF_SCK_Pin   GPIO_PIN_7 

#define  RF_DIO0_Port  GPIOB
#define  RF_DIO0_Pin   GPIO_PIN_4 

#define  RF_DIO1_Port  GPIOB
#define  RF_DIO1_Pin   GPIO_PIN_5 

#define  RF_DIO2_Port  GPIOD
#define  RF_DIO2_Pin   GPIO_PIN_2 


//******************************************************************
//**无线模块相关IO口************************************************
#define RF_SEL_L          RF_SEL_Port->ODR &=~RF_SEL_Pin    //无线模块片选低电平
#define RF_SEL_H          RF_SEL_Port->ODR |= RF_SEL_Pin     //无线模块片选高电平

#define RF_MOSI_L         RF_MOSI_Port->ODR &=~RF_MOSI_Pin
#define RF_MOSI_H        RF_MOSI_Port->ODR |= RF_MOSI_Pin

#define RF_SCK_L          RF_SCK_Port->ODR &=~RF_SCK_Pin
#define RF_SCK_H          RF_SCK_Port->ODR |= RF_SCK_Pin

#define RF_MISO_READ      (RF_MISO_Port->IDR&RF_MISO_Pin)

#define RF_RST_L          RF_RST_Port->ODR &=~RF_RST_Pin;
#define RF_RST_H          RF_RST_Port->ODR |= RF_RST_Pin;

#define RF_IRQ0_READ      ((RF_DIO0_Port->IDR&RF_DIO0_Pin) != 0)/*读取模块中断输出引脚状态*/
#define RF_IRQ1_READ      ((RF_DIO1_Port->IDR&RF_DIO1_Pin) != 0)/*读取模块中断输出引脚状态*/
/*
#define RF_DIO1           P2IFG & BIT3
#define RF_DIO0           P2IFG & BIT7
#define RF_DIO1_0         P2IFG &= ~BIT3
#define RF_DIO0_0         P2IFG &= ~BIT7
*/

提供されたライブラリの移植 

 要約すると、実際、lora のコア モジュールは sx1276 チップです。ZM470SX-MP モジュールはこのチップをベースに周辺回路を設計しているだけです。実際の制御と loar プロトコルは STM8 上に配置する必要があります。私のアプリケーションは比較的一部の複雑なアプリケーションの場合、STM8 を使用するのは少し難しいです。結局のところ、STM8 の RAM/ROM スペースは大きくありません。

おすすめ

転載: blog.csdn.net/li171049/article/details/130889199