发作品签到
专业版

crsf转换8/12通道pwm

工程标签

4.2k
0
0
13

简介

CRSF协议信号转为PWM信号,用于航模遥控控制信号转换。STM32F103C8

简介:CRSF协议信号转为PWM信号,用于航模遥控控制信号转换。STM32F103C8

开源协议

GPL 3.0

创建时间:2023-02-17 01:08:35更新时间:2023-03-24 01:46:15

描述

CRSF转换PWM板说明

CRSF协议信号转为PWM信号。用于航模遥控控制信号转换,黑羊TBS、ELRS等接收机一般输出crsf信号给飞控板,经过此转换后拆分各个通道单独的PWM控制信号,接到各个舵机执行设备。

固件为capnBry网友的开源项目:CRSevorF
,本人根据网友分享和代码中引脚定义制作了PCB硬件,以及分享使用经验技巧。

使用

  • 嘉立创打板
  • 查看bom、ibom.html采购元件
  • 焊接,推荐PTC加热台低成本‘烧烤’工艺
  • 硬件检测
  • 烧录固件
    • 方法1:直接下载release提供的CRSevorF-F103.Vxx.bin固件 ,使用stlink V2硬件工具通过STM32 ST-LINK Utility软件刷入。
    • 方法2:自行编译,下载CRSevorF源码 xxx.zip,解压后使用VSCODE平台编译&烧录。
  • 连接ELRS接收机,5v输入上电
  • 对频,ELRS发射推荐设置
    • packt rate选择full 100hzfull 333hz
    • telem ratio选择std自动模式
    • switch mode选择
      • 8ch (1-4、6-9CH分辨率1024, 5ch为2段开关)
      • 12ch MIX (前4ch分辨率1024, 5ch为2段开关,6-13分辨率512位)
      • 16ch rate/2 (1-16ch分辨率512位)
  • 指示灯
    • 无CRSF接收机连接或接收机未与发射对频时,指示灯长亮。
    • 正常转换输出pwm时指示灯不亮。

代码部分自定义修改说明

修改源码以达成一些个性化设置、适配硬件,或扩展功能。
修改完成需配合VSCODE编译出固件。

2 通道映射修改

1-8 PWM输出默认使用的是crsf接收机的ch 1-4、6-8、12这8个通道,

constexpr int OUTPUT_MAP[NUM_OUTPUTS] = { 1, 2, 3, 4, 6, 7, 8, 12 };

如果要改成PWM输出与CRSF CH通道一一对应的,需要修改src/main.cpp文件:

constexpr int OUTPUT_MAP[NUM_OUTPUTS] = { 1, 2, 3, 4, 5, 6, 7, 8 };

TIPS: elrs高频头需要使用全分辨率模式 例如 full 333hz,但pwm5 依旧是2段开关式输出。


3 电压检测电阻修改

修改include/target.h文件,原代码使用8.2K:1.2K分压

#define VBAT_R1 820
#define VBAT_R2 120

10K:1K为例,改成如下

#define VBAT_R1 1000
#define VBAT_R2 100



4 C6T6芯片替代

使用STM32F103C6T6可以替代C8T6降低成本,但是只能输出8通道PWM

需要改动platformio.ini文件:

  1. C8改C6

    board = genericSTM32F103C6

  2. 添加#注释掉USB

    build_flags_cdc =
        #-DUSBCON
        #-DPIO_FRAMEWORK_ARDUINO_ENABLE_CDC
    


5 国产XX32芯片替代

直接使用会在upload时报错

Warn : UNEXPECTED idcode: 0x2ba01477  
Error: expected 1 of 1: 0x1ba01477

解决办法:

  • 方案1:修改cfg文件
    编辑~/.platformio/packages/tool-openocd/scripts/target/stm32f1x.cfgset _CPUTAPID 0x1ba01477 改为

    set _CPUTAPID 0x2ba01477` 。

  • 方案2:修改工程配置文件 【xi0n9FPV 推荐,已实测】
    在工程配置文件platformio.ini中[env...]下添加一行

    upload_flags = -c set CPUTAPID 0x2ba01477

    示例:

    [env:F103_serial]
    extends = env_common
    build_flags = ${env_common.build_flags_cdc}
        -DTARGET_BLUEPILL
    upload_flags = -c set CPUTAPID 0x2ba01477
    
  • 方案3: 修改 stm32f1x.cfg
    swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf 后添加

    -expected-id $_CPUTAPID -expected-id 0x2ba01477



6 增加通道数达12CH

默认输出8个通道,可修改达到输出12CH

  1. 修改include/target.h文件
    增加9-12通道PWM引脚定义,根据作者说明使用硬件定时器,查datasheet使用TIM1的4个引脚PA8-11

    #define OUTPUT_PIN_MAP PA_15, PB_3, PB_10, PB_11, PA_6, PA_7, PB_0, PB_1 // TIM2 CH1-4, TIM3CH1-4

    改为:

    #define OUTPUT_PIN_MAP PA_15, PB_3, PB_10, PB_11, PA_6, PA_7, PB_0, PB_1, PA_8, PA_9, PA_10, PA_11 // TIM2 CH1-4, TIM3CH1-4, TIM1CH1-4


  1. 修改platformio.ini文件
  • 2.1 通道总数

    #define NUM_OUTPUTS 8

    改为

    #define NUM_OUTPUTS 12


  • 2.2 通道输出序列

    constexpr int OUTPUT_MAP[NUM_OUTPUTS] = { 1, 2, 3, 4, 6, 7, 8, 12 };

    改为

    constexpr int OUTPUT_MAP[NUM_OUTPUTS] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };


  • 2.3 通道失控保护输出

    1500, 1500, 988, 1500, // ch1-ch4
    fsaHold, fsaHold, fsaHold, fsaNoPulses // ch5-ch8

    改成

    1500, 1500, 988, 1500, // ch1-ch4
    fsaHold, fsaHold, fsaHold, fsaHold, // ch5-ch8
    fsaHold, fsaHold, fsaHold, fsaNoPulses // ch9-ch12

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
crsf2pwm-c8t6-12ch-10k1k.bin
74
2
crsf2pwm-c6t6-1~8ch-10k1k.bin
48
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航