文章目录

  • 前言
  • 处理

前言

两路PWM驱动电机,一定情况下PHY6222存在复位且电机控制力度不足
两路PWM波形输出理应为异步,原因在于采用了定时不断开启,关闭,长时间运行会导致定时精度不准确,导致同一时间两路都输出高或者低时,或者高,低同步的时间长,整体电流就会变高且对应的电机转动力度降低

处理

在配置PWM时不用定时器去延时输出,两路采用相反的配置互补输出即可(附上测试demo),关键部分已框红

#define PWM0_PIN P32
#define PWM1_PIN P33
#define PWM_TOP_VALUE      1000
static void pwm_test_init(void)
{hal_pwm_init(PWM_CH1, PWM_CLK_DIV_16, PWM_CNT_UP, PWM_POLARITY_FALLING);hal_pwm_set_count_val(PWM_CH1, 400, PWM_TOP_VALUE);hal_pwm_open_channel(PWM_CH1, PWM1_PIN);hal_pwm_init(PWM_CH0, PWM_CLK_DIV_16, PWM_CNT_UP, PWM_POLARITY_RISING);hal_pwm_set_count_val(PWM_CH0, 400, PWM_TOP_VALUE);hal_pwm_open_channel(PWM_CH0, PWM0_PIN);hal_pwm_start();LOG("PWM init start\n");
}
void chufa_P14(gpio_pin_e pin, gpio_polarity_e type)
{static int cnt = 0;cnt++;LOG("P14_chufa_type==%d,cnt==%d\n", type, cnt);if(cnt % 2 == 0){pwm_test_init();}else{LOG("PWM stop\n");HAL_ENTER_CRITICAL_SECTION();*(volatile int*)0x4000E004 = 0x00;*(volatile int*)0x4000E008 = 0x00;*(volatile int*)0x4000E010 = 0x00;*(volatile int*)0x4000E014 = 0x00;HAL_EXIT_CRITICAL_SECTION();hal_pwm_destroy(PWM_CH0);hal_pwm_destroy(PWM_CH1);hal_pwm_stop();}}
void anjian_pwm(void)
{hal_gpio_pin_init(GPIO_P14, IE);//ÊäÈëhal_gpio_pull_set(GPIO_P14, STRONG_PULL_UP);hal_gpioin_register(P14, NULL, chufa_P14);
}
void Key_Demo_Init(uint8 task_id)
{uint8_t i = 0;key_TaskID = task_id;hal_pwm_module_init();anjian_pwm();
//      osal_start_reload_timer(key_TaskID,PWM_INIT,3000);}

PWM_POLARITY_FALLING 1
PWM_POLARITY_RISING 0

即可输出相反的PWM波形,注册按键下降沿中断,取余开关,两路输出1KHz的PWM,PWM输出的频率看datasheet的计算公式,波形效果如下

BLE芯片PHY6222---两路PWM互补输出相关推荐

  1. 基于CubeMX-STM32F103RCT6_单通道双路PWM互补输出

    文章目录 基于CubeMX-STM32F103RCT6_单通道双路PWM互补输出 简介 CubeMX-TIM配置详情 单通道双路 PWM 互补输出配置 参数配置 时钟配置 工程管理 修改代码 基于Cu ...

  2. LT8522EX 是 Lontium 的矩阵开关芯片基于两路输入,输出 (VGA 和 HDMI)

    1. 一般说明 LT8522EX 是 Lontium 的矩阵开关芯片,它支持基于 ClearEdge 技术的两路输入 (VGA 和 HDMI) 和两路输出 (VGA 和 HDMI). HDMI 输入 ...

  3. stm32 PWM互补输出

    stm32高级定时器例子-stm32 PWM互补输出 定时器初始化结构体 TIM_TimeBaseInitTypeDef 时基结构体,用于定时器基础参数设置,与TIM_TimeBaseInit函数配合 ...

  4. 高级定时器实例-PWM互补输出与刹车功能

    前言 仅以此篇文章梳理我编写该实例的过程 概述 我手中的正点原子STM32MINI板所用的主控型号为STM32F103C8T6,因此高级定时器只有TIM1和TIM8,本章我所使用的资源为TIM1的CH ...

  5. 【STC15】3路PWM波形输出示例演示

    [STC15]3路PWM波形输出示例演示 本示例采用的是STC官方所给的<STC15系列库函数与例程测试版V2.0>里面的示例程序,测试的芯片型号:STC15W408AS.自制的开发板,采 ...

  6. 蓝牙BLE芯片PHY6222之OTA

    蓝牙BLE芯片PHY6222之OTA 什么是OTA 将OTA驱动移植到应用代码 一.SLB移植 用PhyPlusKit烧录支持SLB的文件 支持SLB的OTA bin文件的制作 使用APP进行SLB升 ...

  7. 【Renesas RA6M4开发板之两路PWM驱动】

    [Renesas RA6M4开发板之两路PWM驱动] 1.0 PWM 简介 1.1 原理 1.2 访问 PWM 设备 2. RT-theard配置 2.1 硬件需求 2.2 软件配置 3. 代码分析 ...

  8. 【WB32库开发】第10章 TIM1高级定时器——PWM互补输出

    在上一章的输出多路PWM的基础上,本章主要讲述如何配置WB32上的高级定时器TIM1完成PWM互补输出. 对PWM互补输出的概括放到10.3节中,请大家先跟随10.1节了解PWM互补输出如何配置,再结 ...

  9. 蓝牙BLE芯片PHY6222之烧录以及调试

    蓝牙BLE芯片PHY6222之烧录调试 一. 环境 二. 接线 三. 操作 四. J-LINK调试 五. 烧录失败分析 前言:个人学习笔记,不做商业用途. 望每个工程师配得起工程师之名,有独立解决,分 ...

最新文章

  1. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作
  2. 华为android8适配进度,华为 荣耀 O版本(Android 8.0)适配进度公告
  3. 51Talk乘一带一路之东风,破普惠教育巨浪
  4. java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析
  5. .NET: 使用.NET Core CLI开发应用程序
  6. [转]LoadRunner 各个指标分析
  7. php实现工厂模式,PHP基于工厂模式实现的计算器实例
  8. linux系统状态(磁盘大小、内存、进程、cpu使用率、网络连接)
  9. python 查看excel 多少行_13行代码实现对Excel自动分表(python)
  10. c语言编程软件有个a开头的,厦门理工软件c语言程序设计A卷及答案
  11. 自动化测试---页面截图
  12. 百度C2C对决淘宝的两把利器
  13. Vuepress2.X从0-1保姆级入门教程
  14. 联想计算机系统重装,联想笔记本电脑重装系统教程
  15. 做一个靠谱的软件测试工程师:进行有效地沟通
  16. 高防服务器如何防御?
  17. 基于51单片机的数码管闹钟设计
  18. 关于多线程中的面试题
  19. UltraISO(软碟通)制作U盘启动安装CentOS 7
  20. Key Points on Innovation from Peter Drucker

热门文章

  1. 蹩脚的CSDN手机绑定
  2. Kitty-Cloud服务搭建过程剖析
  3. Codeforces 32A A. Reconnaissance (暴力)
  4. 股市第一赌局:百万赌金 侯宁催账叶荣添准备买单
  5. 城市公共交通规划掌握内容
  6. 阿里云服务器搭建wordpress个人博客
  7. ETW架构以及WPT(Windows Performance Toolkit)命令行的使用
  8. Forge 发布倒计时三天:陈天写下他加入 ArcBlock 一周年的感慨 | ArcBlock 博客
  9. php空间自动发邮件,PHP 发送QQ邮件【实例】
  10. 小白也能读懂的 ZigBee 3.0 简介