meishaoming / blog

MIT License
1 stars 2 forks source link

B-L072Z-LRWAN1 #45

Open meishaoming opened 5 years ago

meishaoming commented 5 years ago

新入一块板子,ST 官方出的 LoRa 开发板 B-L072Z-LRWAN1,可进行快速原型验证。





其中把 stm32 和 Lora 封装成了一个模块 CMWX1ZZABZ-091 LoRa®/Sigfox™ module (Murata)

板子上共有七个 LED 灯:

LED 序号 功能
LED1、LED2、LED3、LED4 通用功能、受GPIO 控制
LED5 ST-LINK烧录指示
LED6 电源错误指示
LED7 5V 电源指示

CMWX1ZZABZ-091 模块

image

STM32L072CZ    
PC0 RESET SX1276
PA7 MOSI
PA6 MISO
PB3 SCK
PB4 DIO0
PB1 DIO1
PB0 DIO2
PC13 DIO3
PA5 DIO4 (not fitted)
PA4 DIO5 (not fitted)
PA15 spi_css
PA12 TXCO
PA1 ANT_SWITCH_RX
PC1 ANT_SWITCH_TX_BOOST
PC2 ANT_SWITCH_TX_RFO
PB5 LED1 LED
PA5 LED2
PB6 LED3
PB7 LED4
PB2 BUTTON BUTTON
meishaoming commented 5 years ago

硬件电路分析

USB 电源

有四种供电方式:

  1. 接 USB ST-LINK 供电,(U5V) 同时给 ST-LINK 和 Murata 模块供电
  2. 外接 Arduino,(VIN) 同时给 ST-LINK 和 Murata 模块供电
  3. 接 USB User(CN1),(USB_LRA_5V) 只给 Murata 模块供电
  4. 接电池,只给 Murata 模块供电

image

接 USB ST-LINK 供电

image

USB 2.0 有三种速度

  • 低速 LOW SPEED 1.5Mbps
  • 全速 FULL SPEED 12Mbps
  • 高速 HIGH SPEED 480Mbps

STM32F103CBT6 的 USB 支持 FS(FULL SPEED)。当 USB 插入 PC 时,检查 DP 上的电平来决定是 FS 还是 LS(有上拉使用 FS)。

image

+3V3_ST_LINK 给 ST-LINK 供电。

LED5

image

SWD 接口

image

meishaoming commented 5 years ago

把 B_L072Z_LRWAN1 板载烧录器升级为 jlink

同时操作两个 JLink,用 S/N 来指定:

gateway : S/N: 776094621 sensor_push : S/N: 771068482

操作 gateway :

JLinkExe -SelectEmuBySN 776094621 -If SWD -Device STM32L072CZ -AutoConnect 1 -RTTTelnetPort 19021 -Speed 10000

JLinkRTTClient -RTTTelnetPort 19021

操作 sensor_push:

JLinkExe -SelectEmuBySN 771068482 -If SWD -Device STM32L072CZ -AutoConnect 1 -RTTTelnetPort 19022 -Speed 10000

JLinkRTTClient -RTTTelnetPort 19022
meishaoming commented 5 years ago

dash7-ap-open-source-stack 编译

编译 sensor_push

cd stack && mkdir -p build && cd build

cmake -DFRAMEWORK_LOG_OUTPUT_ON_RTT=TRUE \
            -DPLATFORM=B_L072Z_LRWAN1  \
            -DAPP_SENSOR_PUSH=y -DAPP_GATEWAY=y -DAPP_SENSOR_PULL=y ..

make -j8

## 烧录
make flash-sensor_push
meishaoming commented 5 years ago

上位机通过串口与 gateway 交互

PYTHONPATH=. python -u examples/unsolicited_response_logger.py -d /dev/cu.usbmodem000776094621

会首先下发一条读 UID + 读版本信息 的命令:

[426] [ALP] Free cmd 00
[427] [ALP] ALP command recv from console length=10
[428] B4 4B 01 00 00 08 01 02 00 0F
[429] [ALP] ALP cmd size 10
[430] [ALP] alloc cmd 0x20000984 in slot 0
[431] [ALP] READ FILE 0 LEN 8
[432] [ALP] READ FILE 2 LEN 15
[433] [ALP] add_tag_response 75
[434] [ALP] output ALP cmd of size 33

image

image

image

meishaoming commented 5 years ago

sensor_pull 接收 gateway 的 read request,并返回 response 的全过程

sensor pull 每秒监听一次 BG Frame,收到 gateway 发送 包含 ETA 的 BG Frame

image

sensor pull 收到 FG Frame

image

sensor pull 发送 response

image

注意其中有 Tc 和 Tl 两个时间段

image

gateway request 里有 Tc,表示 gateway 在 Tc 内等待对方的 response

sensor pull 的 response 里有 Tl,表示 sensor pull 发送完 response 之后还会在 Tl 时间内等待对方的数据