简 介: 对于MindMotion在11月22日发送过来的移植有PWM功能的MicroPython的软件进行了测试。首先,在两个PWM的通道(PA6,PA7)上可以测试到输出的波形,但信号参数与设置之间还存在着差异: 输出频率比设置频率小; 输出的占空比正好与设置的相反。

关键词MM32PWMMicroPython

#mermaid-svg-5Oxex7gJqok5y6mg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5Oxex7gJqok5y6mg .error-icon{fill:#552222;}#mermaid-svg-5Oxex7gJqok5y6mg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5Oxex7gJqok5y6mg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5Oxex7gJqok5y6mg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5Oxex7gJqok5y6mg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5Oxex7gJqok5y6mg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5Oxex7gJqok5y6mg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5Oxex7gJqok5y6mg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5Oxex7gJqok5y6mg .marker.cross{stroke:#333333;}#mermaid-svg-5Oxex7gJqok5y6mg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5Oxex7gJqok5y6mg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5Oxex7gJqok5y6mg .cluster-label text{fill:#333;}#mermaid-svg-5Oxex7gJqok5y6mg .cluster-label span{color:#333;}#mermaid-svg-5Oxex7gJqok5y6mg .label text,#mermaid-svg-5Oxex7gJqok5y6mg span{fill:#333;color:#333;}#mermaid-svg-5Oxex7gJqok5y6mg .node rect,#mermaid-svg-5Oxex7gJqok5y6mg .node circle,#mermaid-svg-5Oxex7gJqok5y6mg .node ellipse,#mermaid-svg-5Oxex7gJqok5y6mg .node polygon,#mermaid-svg-5Oxex7gJqok5y6mg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5Oxex7gJqok5y6mg .node .label{text-align:center;}#mermaid-svg-5Oxex7gJqok5y6mg .node.clickable{cursor:pointer;}#mermaid-svg-5Oxex7gJqok5y6mg .arrowheadPath{fill:#333333;}#mermaid-svg-5Oxex7gJqok5y6mg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5Oxex7gJqok5y6mg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5Oxex7gJqok5y6mg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5Oxex7gJqok5y6mg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5Oxex7gJqok5y6mg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5Oxex7gJqok5y6mg .cluster text{fill:#333;}#mermaid-svg-5Oxex7gJqok5y6mg .cluster span{color:#333;}#mermaid-svg-5Oxex7gJqok5y6mg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5Oxex7gJqok5y6mg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

MM32 MicroPython
目 录
Contents
背景介绍
PWM功能
下载MicroPython
测试PWM
基本测试
测试总结
问题溯源
问题修复

§01 MM32 MicroPython


一、背景介绍

  在过去的周末,MindMotion SuYong对于移植的MicroPython中的带有PWM版本进行了修正,发送过来了最新的版本:

  MicroPython/MindMotion/firmware-2021-11-22.bin · 卓晴/编程技术 - Gitee.com

  这个版本时对于 测试MindMotion MM32F3277 MicroPython -2021-11-20新增PWM版本 所存在的问题进行修复。但程序的主要框架没有改变。即仍然借助于两个Timer完成八个PWM通道的功能。

▲ 图1.1.1 测试实验电路板

二、PWM功能

  根据前天的测试,可以知道PWM的主要管脚与内部定时器资源如下:

【表1-1 PWM资源配置】
PWM 定时器 GPIO
PWM0 TIM3 PA6
PWM1 TIM3 PA7
PWM2 TIM3 PB0
PWM3 TIM3 PB1
PWM4 TIM4 PB6
PWM5 TIM4 PB7
PWM6 TIM4 PB8
PWM7 TIM4 PB9

三、下载MicroPython

1、下载MicroPython

  将下载的MicroPython下载到 设计带有SD卡的 MM32F3277 MicroPython 实验板 ,然后使用STM32BOOTLOADER进行REPL测试。

▲ 图1.3.1 将新版的MicroPython下载到测试版中

2、上电测试

  上电后,在REPL界面显示:


>> Open COM8, baud : 115200[Y] sdcard ready.
[Y] file system on sdcard ready.
[Y] run the main.py on disk ...
[Y] done. 1
MicroPython v1.16 on 2021-11-22; MB_F3270 with MM32F3277G7P
>>>

§02 测试PWM


一、基本测试

1、测试基本波形

  初始化PWM通道0,1,分别占用PA6,PA7输出对应的PWM波形。

(1) 测试代码

from machine                import Pin,PWM
import utimepwm0 = PWM(0, freq=10000, duty=200)
pwm1 = PWM(1, freq=10000, duty=500)print("Test PWM.")

(2) 输出波形

  测量输出波形,如下图所示:

▲ 图2.1.1 PWM输出波形

  可以看到这个波形与设置参数之间存在误差:

  • 频率误差: 实际的PWM输出频率为9.589kHz,使用FLUKE45数字万用表的频率档测量的信号的频率为9.5914kHz。
  • 占空比误差: 设置的duty=200。实际输出则为800。输出波形反向了。

  下面是PWM0的duty分别设置为 1, 999对应的波形。

▲ 图2.1.2 PWM0设置duty=1对应的波形

▲ 图2.1.3 PWM0设置duty=999对应的波形

2、动态改变duty

(1)测试代码

from machine                import Pin,PWM
import utimepwm0 = PWM(0, freq=10000, duty=500)
pwm1 = PWM(1, freq=10000, duty=1)print("Test PWM.")duty = 1
dutyinc = 20
dir = 0while True:if dir == 0:duty += dutyincif duty >= 1000:duty = 999dir = 1else:if duty < dutyinc:duty = 1dir = 0else:duty -= dutyincpwm1.duty(duty)utime.sleep_ms(100)

▲ 图2.1.4 动态改变PWM1的占空比

※ 测试总结 ※


  对于MindMotion在11月22日发送过来的移植有PWM功能的MicroPython的软件进行了测试。首先,在两个PWM的通道(PA6,PA7)上可以测试到输出的波形,但信号参数与设置之间还存在着差异:

  • 输出频率比设置频率小;
  • 输出的占空比正好与设置的相反。

▲ 图3.1 设置PWM品味100kHz对应的输出波形

■ 问题溯源

  后来经过测试,只初始化PWM0, 而不初始化PWM1,则输出波形的极性正常了。

▲ 图3.1.1 只是初始化PWM0, 输出duty=100对应的波形

  如果同时初始化PWM0,PWM1,则输出波形中PWM0 的波形不正常。

  下面是初始化PWM0,duty=200, PWM1,duty=100对应的波形:

▲ 图3.1.2 初始化PWM0,duty=200, PWM1,duty=100对应的波形

■ 问题修复

1、信号极性

经过修改,SuYong 修改完底层的BUG之后,极性正常了。

▲ 图3.2.1 底层的HAL存在问题

2、频率误差

频率误差仍然存在问题。尚无法达到准确输出频率。主要是因为分频整除对应的问题。SuYong在这个环节并没有能够进行进一步的 优化。


■ 相关文献链接:

  • MicroPython/MindMotion/firmware-2021-11-22.bin · 卓晴/编程技术 - Gitee.com
  • 测试MindMotion MM32F3277 MicroPython -2021-11-20新增PWM版本
  • 设计带有SD卡的 MM32F3277 MicroPython 实验板

● 相关图表链接:

  • 图1.1.1 测试实验电路板
  • 表1-1 PWM资源配置
  • 图1.3.1 将新版的MicroPython下载到测试版中
  • 图2.1.1 PWM输出波形
  • 图2.1.2 PWM0设置duty=1对应的波形
  • 图2.1.3 PWM0设置duty=999对应的波形
  • 图2.1.4 动态改变PWM1的占空比
  • 图3.1 设置PWM品味100kHz对应的输出波形
  • 图3.1.1 只是初始化PWM0, 输出duty=100对应的波形
  • 图3.1.2 初始化PWM0,duty=200, PWM1,duty=100对应的波形

MindMotion MM32 单片机上的MicroPython移植-PWM相关推荐

  1. POWERLINK协议源码(最新)在stm32单片机上的移植指南

    最近着了powerlink的道,连续几晚十二点前没睡过觉.不得不说兴趣这东西劲太大了,让人睡不着.喜欢上研究POWERLINK,最新版的源码结构挺清晰的,移植并测试了嵌入式linux作为从站和电脑主站 ...

  2. uCOS-II在51单片机上的移植

    uCOS-II在51单片机上的移植 约定:文中所写的硬件堆栈或系统堆栈是指51单片机SP指针所指向的堆栈空间,而用户堆栈或任务堆栈是指用来保存任务状态为每个任务分配的堆栈空间. 前一段时间一直在学习U ...

  3. 在MM32F3273上运行MicroPython,对于性能进行测试

    简 介: 通过设计简单的测试电路,验证了MicroPython在MM32F3273上运行的情况.初步证实它可以运行移植后的MicroPython. 关键词: MM32F3273,MicroPython ...

  4. 在mm32f3270上为MicroPython启用Timer模块

    在mm32f3270上为MicroPython启用Timer模块 文章目录 在mm32f3270上为MicroPython启用Timer模块 Requirements Implementation A ...

  5. XMOVE3.0手持终端——软件介绍(五):在2KB内存的单片机上实现的T9中文输入法

    编者注: X-MOVE是作者在业余时间于2010年6月份启动的以运动传感开发,算法和应用的平台,目前已经发展了三个版本,第四版的开发接近尾声.发布在博客园仅为交流技术,不存在商业目的,作者保留一切权利 ...

  6. uIP TCP/IP协议栈在51系列单片机上的应用

    uIP 协议栈是一种免费的可实现的极小的TCP/IP协议栈,可以使用于由8位或16位微处理器构建的嵌入式系统.本文分析了uIP协议栈的结构和应用接口,并讨论了如何将其应用到51系列单片机上. 关键字: ...

  7. micropython移植教程_移植MicroPython到NUCLEO_L476RG开发板

    在最新的 MicroPython 源码中,已经加入了STM32L476DISC开发板,但是还没有NUCLEO-L476RG开发板.而我只有NUCLEO-L476RG开发板,要在NUCLEO-L476R ...

  8. MicroPython移植到STM32H750

    Micropython移植到STM32H750 tb上买了块stm32h750vbt6的核心板,想折腾一下,正好最近在学python,于是尝试在这块板子上移植一下micropython.然而官方貌似还 ...

  9. [长文干货]MicroPython移植到野火STM32F429开发板

    最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...

最新文章

  1. kingwell Calendar V1.0 日历时间组件
  2. 【整理】ABAP 7.40新特性介绍(下)
  3. sql针对某字段去重查询_sql的简单查询
  4. 【图文详解】第一个Java程序HelloWorld详解,写Java程序需要注意什么
  5. Java快速提升_java快速复习 一 基础语法
  6. 华为手机的分类有何区别_“鸿蒙”系统能不能玩安卓游戏?如果能,它跟安卓系统有何区别?...
  7. html5 对比 HTML4 新增,HTML5对比HTML4的主要改变和改进总结
  8. .net core下简单构建高可用服务集群
  9. VCIX-NV学习指南
  10. Knowledge Integration Networks for Action Recognition AAAI 2020
  11. 果断放弃gnome 3
  12. C#获取IP和整数IP方法
  13. Arduion 底层原理之 setup函数和loop函数
  14. 非常详细的光纤入户方案书
  15. JS红宝书学习记录(一)
  16. 看透网络执法官的本质
  17. 小米,红米手机miui安装谷歌服务框架GMS三件套安,安装Google Play商店
  18. 三年开发转行测试没人要
  19. android studio链接海马玩模拟器
  20. ARP项添加失败:请求的操作需要提升 ARP项添加失败:拒绝访问

热门文章

  1. mongooseim xmpp 服务器docker 安装试用
  2. 13.19. File system test
  3. 利用单臂路由实现VLAN间路由
  4. web开发小记2:js触发css过渡
  5. relink 11gR2 数据库
  6. Linux内核进程调度的时机和进程切换
  7. Openldap/ldap 双向同步/复制/Mastsr/slave
  8. 买了一本老镇的swift语言实战晋级
  9. Centos 7 学习之静态IP设置
  10. Android学习笔记(1)----播放音乐文件