tag 标签: stm32

相关帖子
相关博文
  • 热度 10
    2019-6-4 22:54
    32277 次阅读|
    2 个评论
    前言 板子申请了也有一段时间了,也快到评测截止时间了,想着做点有意思的东西,正好前一段时间看到过可以在MCU上移植MicroPython的示例,就自己尝试一下,记录移植过程。 MicroPython是什么 程序猿中有句俗语: 人生苦短,我用Python 。Python的强大和易用性让它不仅可以写网站,编程序,在嵌入式领域也有一席之地。 MicroPython ,是Python3编程语言的一个完整软件实现,包括Python标准库的一小部分,用C语言编写,经过优化可在微控制器和受限环境中运行。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。 MicroPython官方网站: MicroPython - Python for microcontrollers ( http://www.micropython.org/ ) MicroPython中文社区: micropython - 中文社区( http://www.micropython.org.cn/bbs/ ) MicroPython支持的开发板 从官方网站我们可以了解到,官方开发板主要有以下几种: PYB Nano V1.1基于STM32F401 PYB Nano V2基于STM32F411 PyBoard CN V2基于STM32F405 MicroPython ESP32 另外还支持其他系列的开发板: WiPy ESP8266 boards ESP32 boards STM32F4 Discovery board NUCLEO-F401RE board NUCLEO-F411RE board NUCLEO-F767ZI board NUCLEO-L476RG board Espruino Pico MicroPython移植和板子关系不大,主要支持的是芯片,如果自己的板子芯片是上面的这些型号,也可以刷MicroPython固件,对应的IO口需要更改,而且需要重新编译生成对应的固件。具体操作方法可以查看:官方Github地址:https://github.com/micropython/micropython,里面包括了源代码和Linux下的编译方法。开发板固件下载: MicroPython downloads( http://www.micropython.org/download ) Nucleo-F411RE移植MicroPython固件 正好MicroPython支持本次申请的 Nucleo-F411RE开发板 ,就试着把刷成MicroPython的固件,尝试一下使用Python来开发STM32,具体移植过程。 1.准备工作 支持Nucleo-F411RE的MicroPython固件: NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu ( http://www.micropython.org/resources/firmware/NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu ) 用于STM32 DFU下载的软件: STSW_STM32080_V3.0.6.zip ( https://comm.eefocus.com/media/download/index/id-1015890 ) PUTTY串口终端: putty-64bit-0.71-installer.msi ( https://the.earth.li/~sgtatham/putty/0.71/w64/putty-64bit-0.71-installer.msi ) 2.安装Dfu下载软件 下载完成后,安装DFU下载软件DfuSeDemo,非常简单,一路Next就行,在选择安装目录时,可以选择非系统盘。 3.硬件连接 由于Nucleo-F411RE板子的USB口是连接到ST-Link调试器,并没有一个连接到STM32 USB引脚的接口,所以我使用的是这种转接板,把USB的5个信号转接成5个排针,并和板子上的引脚连接: 转接板 开发板 VBUS 3.3 D- PA11 D+ PA12 IO GND GND GND 4.烧录MicroPython固件 和串口下载程序一样,使用DFU烧录固件前,也要先把STM32切换为 系统存储器启动模式 :即下载模式。上电之前要先设置BOOT0=1,BOOT1(PB2)=0,然后烧录MicroPython固件。 设置完成之后,连接电脑,设备管理会出现一个DFU设备 打开DfuSeDemo软件,选择已经下载的固件: NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu ( http://www.micropython.org/resources/firmware/NUCLEO_F411RE-20190604-v1.11-25-gce8262a16.dfu ) 点击Upgrade升级,在弹出的界面,点击“是”。 等待升级完成,断电,把BOOT短接线拔掉,重新上电。 5.安装Putty 安装Putty,打开串口终端,选择ST-Link虚拟串口号,波特率115200 按一下板子上的黑色复位按键,串口输出: MicroPython v1.11-12-g6077d1715 on 2019-06-03; NUCLEO-F411RE with STM32F411xE Type "help()" for more information. help() Welcome to MicroPython! For online help please visit http://micropython.org/help/. Quick overview of commands for the board: pyb.info() -- print some general information pyb.delay(n) -- wait for n milliseconds pyb.millis() -- get number of milliseconds since hard reset pyb.Switch() -- create a switch object Switch methods: (), callback(f) pyb.LED(n) -- create an LED object for LED n (n=1,2,3,4) LED methods: on(), off(), toggle(), intensity( ) pyb.Pin(pin) -- get a pin, eg pyb.Pin('X1') pyb.Pin(pin, m, ) -- get a pin and configure it for IO mode m, pull mode p Pin methods: init(..), value( ), high(), low() pyb.ExtInt(pin, m, p, callback) -- create an external interrupt object pyb.ADC(pin) -- make an analog object from a pin ADC methods: read(), read_timed(buf, freq) pyb.DAC(port) -- make a DAC object DAC methods: triangle(freq), write(n), write_timed(buf, freq) pyb.RTC() -- make an RTC object; methods: datetime( ) pyb.rng() -- get a 30-bit hardware random number pyb.Servo(n) -- create Servo object for servo n (n=1,2,3,4) Servo methods: calibration(..), angle( ]), speed( ]) pyb.Accel() -- create an Accelerometer object Accelerometer methods: x(), y(), z(), tilt(), filtered_xyz() Pins are numbered X1-X12, X17-X22, Y1-Y12, or by their MCU name Pin IO modes are: pyb.Pin.IN, pyb.Pin.OUT_PP, pyb.Pin.OUT_OD Pin pull modes are: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN Additional serial bus objects: pyb.I2C(n), pyb.SPI(n), pyb.UART(n) Control commands: CTRL-A -- on a blank line, enter raw REPL mode CTRL-B -- on a blank line, enter normal REPL mode CTRL-C -- interrupt a running program CTRL-D -- on a blank line, do a soft reset of the board CTRL-E -- on a blank line, enter paste mode For further help on a specific object, type help(obj) For a list of available modules, type help('modules') 6.开始Python开发之旅——点亮一个LED 点亮板载的绿色LED,串口输入命令点亮和熄灭LED pyb.LED(1).on() pyb.LED(1).off() pyb.LED(1).on() 更多Python控制外设的命令: Quick reference for the pyboard ( http://docs.micropython.org/en/latest/pyboard/quickref.html ) 参考资料 Micropython学习(二)STM32移植( https://blog.csdn.net/bobo184/article/details/84174990 ) 我的博客文章链接: http://www.wangchaochao.top/2019/06/04/Nucleo-F411RE-2/
  • 热度 10
    2019-6-3 20:23
    5584 次阅读|
    4 个评论
    NUCLEO_H743ZI移植MicroPython
    H743 的开发板拿到手有一段时间了,本来我是想先在 Ubuntu18.04 (因为我个人的笔记本目前只有这个系统)下搞个纯 Linux 的开发环境,然后再做点其他评测的,奈何 Linux 版本下的 stlink 驱动编译后居然没 H743 的支持,暂时搁置,后面抽点时间看看怎么把 H743 的支持加到 stlink 源码去,再编译下(对移植过程兴趣的可以到我另一篇博文看看 https://www.mianbaoban.cn/blog/1779404-406940.html )。 评测时间快到了,我就换了我工作的电脑来完成评测吧。开发环境的搭建可能没从零开始那么详细,各位见谅。评测环境是 Win7+Ubuntu12.04-server 版。 去年开始受到了 AI 的蛊惑,体验了一下 Python 编程的简单易用,今年顺手考过了二级 Python 。但那都是 PC 平台上的,一直想体验下 Python 的嵌入式编程。所以这次的评测,我打算围绕 MicroPython 进行。第一步先给 H743 移植 MicroPython 支持;第二步引入 MicroPython 网络编程;最后还想在 MicroPython 的基础上体验下 OpenMV (这个要加个子板)。这些评测内容较多,当然不太可能在最近一下子完成,我会持续的在这里发博文,有兴趣的继续关注即可。 好,以上是闲话。下面开始评测的第一部分内容,移植 MicroPython 支持。 开始前,有必要了解下 MicroPython 是什么,看下官方描述即可: 图 0-MicroPython 官方描述 1. 下载 / 安装交叉编译链 由于 H743 用的其实是 arm 的 thumb 指令,在 PC 平台上需要使用交叉编译链来编译。当然裸机编程最好用的是官方的编译链或 sdk 啦,此处为了后续用 MicroPython 开发,就安装 arm 的交叉编译链。这里我图省事,直接下载编译链安装了。如有需要,也可以从我的网盘下载(链接 : https://pan.baidu.com/s/1YvkWy-pYcWgYr5dZ8J7f7A 提取码 : hfi8 )。 注意安装编译链时,需要把解压的路径整个加入到 $PATH 变量,否则后面用交叉编译链编译时可能导致编译失败。 例如,把交叉编译链下载到 Ubuntu ,并解压后,放在 ~/ toolchain/gcc-arm-none-eabi-5_4-2016q3 目录,则在 ~/.bashrc 里加一句 export PATH="$HOME/toolchain/gcc-arm-none-eabi-5_4-2016q3/bin:$PATH" 然后执行 source ~/.bashrc ,这样就安装完成了。 装完之后确认下版本号: 图 1-arm 交叉编译链 2. 下载安装 MicroPython 直接到 github 下载最新的 MicroPython $ git clone https://github.com/micropython/micropython.git MicroPython 支持的处理器在 ports 目录下。支持的版型在 micropython/ports/stm32/boards 里,可以看到,里面已经支持了 NUCLEO_H743ZI 了: 图 2 micropython stm32 版型支持 MicroPython 的 stm32 库支持是放在 micropython/lib/stm32lib 目录下,刚才的 git clone 后,该目录还是空的,需要继续下载 lib (继续在源码下载目录执行以下命令): $ git init $ git submodule update --init 下载成功后可以看到这些库的目录。 图 3 MicroPython stm32lib 在 ports/stm32 目录下执行 micropython/ports/stm32$ make BOARD=NUCLEO_H743ZI 编译最后看到下面结果,表示成功: 图 4-MicroPython 编译成功 编译结果在 micropython/ports/stm32/build-NUCLEO_H743ZI 目录下的 firmware.hex 。注意,此处我是在 Ubuntu 系统下编译,最后通过 samba 共享到 Win10 的,这些可以通过 Windows+ 虚拟机安装 Ubuntu 进行,此处操作步骤不详细描述,还不懂的网上搜一下其他教程。 我把编译出来的hex上传了一份到网盘,想直接验证的朋友可以直接下载使用: 链接:https://pan.baidu.com/s/1_lJkgBsOnuXhd-UuXInkYA 提取码:06wl 烧录试试,打开烧录软件 stsw (可到官网下载 https://www.stmcu.org.cn/document/detail/index/id-214265 ),加载 firmware.hex ,下载: 图 5- MicroPython 编译结果下载 烧录完成后,需要连接 usb slave 口连线到 PC 上( MicroPython 的虚拟盘),而 stlink 的那个 usb 口,可以断开和电脑的连接,但因为板子还需要供电,所以 stlink 的 usb 口我就直接拿移动电源给了 5V 过去。我看网上有些教程说两个 usb 口都连 PC ,不知道是不是软硬件环境不一样,我两个都连 PC 时, MicroPython 的虚拟盘一直都不能正常连接,时通时断的。所以我最后就只把 usb slave 口连到 PC 上, stlink 的 usb 口用 5V 供电(充电宝或其他可以提供 5V 的电源都可以),这样 MicroPython 的虚拟盘就正常了,连线如下图示: 图 6- 烧录成功后板子的连线 之后,就可以直接在 PC 上的 pybflash 目录下用 python 编程。 图 7-pybflash 虚拟盘 在 pybflash 虚拟盘里,有这几个文件: 图 8-pybflash 虚拟盘内容 直接编辑里面的 main.py 就可以进行 Python 编程了。如果要开机自动运行 main.py 里的脚本,可以直接修改 boot.py : 图 9- 开机自动执行 Python 脚本 当然,这个 micropython 也有虚拟串口的功能(我在用这个时发现驱动用自动联网装装不上,就直接本地安装驱动,驱动位置选择 pybflash ),然后就可以用 securecrt 或 putty 进行串口连接,直接在串口里敲代码了。 图 10-MicroPython 虚拟串口 图 11-putty 通过串口连接 H743ZI 下面我就用 MicroPython 的虚拟串口试下控制板上的资源。 3.MicroPython 使用体验 启动体验: 图 12- 上手体验 控制 LED 亮灭。看头文件定义: micropython/ports/stm32/boards/NUCLEO_H743ZI/mpconfigboard.h 图 13-led gpio 定义 从头文件可以看到,这些已经被定义了。那我就直接用就可以了,看着 MicroPython 的官方文件来操作。先点亮 LED 试试: 图 14- 点亮 LED 图 15- 板子效果 图 16- 按键亮灭灯 图 17- 按键全灭 至此, LED 控制正常。 图 18- 任意控制 GPIO 输出 万用表测着 PC10 ,观察其电压变化。 总结: 由以上简单实验看出,MicroPython的移植是成功的。 MicroPython 以无操作系统的方式跑在 H743 上,其易用性及可移植性可圈可点。 MicroPython 的底层也是 C ,上层语法和 python 3.4 一样。在熟悉 python 的情况下,使用一块硬件开发板是相当简单的,也可以很快的打造出一个产品原型。相同的 Python 脚本代码在不同的开发板移植,所需的工作量非常少,甚至只是复制过来( MicroPython 相当于对底层进行了封装)。 Python 是解析语言,不需编译,直接运行即可。 有空再详细解读下MicroPython的源码,接下来还会继续评测,将引入MicroPython的网络编程,最后还会上OpenMV。
  • 热度 4
    2019-5-13 20:26
    1517 次阅读|
    9 个评论
    NUCLEO-H743ZI开箱评测
    NUCLEO-H743ZI 开箱评测 最近在面包板社区参加 ST 官方开发板的活动,有幸获得一块 NUCLEO-H743ZI 。这是目前 ST 官方 ARM Cortex M7 系列的高性能 MCU ,可以好好学习一番了。 拿到手的是一块全新的开发板(手机拍照质量不好,读者见谅): 图一:开箱前正面 图二:开箱前反面 可见,开发板仅为裸板,不带任何的额外的线材、电源 Adapter 和 LCD 显示屏,使用前要自己准备好 Micro USB 接口线。从正面看,参数亮点: ARM Cortex M7@400MHz ; 2MB 内置 Flash ; 1MB 内置 SRAM ;支持 USB-OTG ;支持 Ethernet 。 图三:开箱后正面 图四:开箱后反面 可见: 1. 板子布局相当合理,中间穿透的排母插件是 ST Zio 接口(兼容 Arduino ),基本把绝大部分的 GPIO 都引出来了,丝印相当清晰,要飞线的话,只要用排针或杜邦线直接飞就可以了;如果要自己设计底板,也可以直接通过背面穿透出来的排针来设计底板,相当方便。 2. 板上几乎所有的元器件都用了贴片,做工相当厚道。 3. 板子集成了 STLink V2-1 ,方便调试。 图五: STLink STLink 可以通过排针引出,用于其他 ST 开发板的调试。 STLink 上有一个 Micro USB 接口,这个接口是整个板子的电源输入口,通过 Micro USB 线 5V 直流输入。 图六: USB-OTG 和 Ethernet 接口 USB-OTG 接口是 Micro USB 接口,有此接口说明主控芯片支持 USB Host ,可以接入 U 盘、鼠标等 USB 设备,为和之前STLink上的那个Micro USB口做区别,此处我接了一个某宝上淘的 otg 转接口,当然用 otg 转接线也可以;旁边那个就是 Ethernet 接口,和台式机上的网络接口差不多,百兆自适应。 图七:上电测试 板子自带了测试程序,上电后,红 LED 灯不停闪烁。和红灯并列的还有绿灯和黄灯。按板子左下方的 USER 按键,可以切换点亮 LED 灯。按右下角的 RESET 可以恢复为上电时的红 LED 等闪烁。通过该测试程序可见,板子的基本功能响应是正常的。 以上便是 NUCLEO-H743ZI 开发板的开箱评测,接下来还会通过一些有意思的实验,进一步熟悉和学习使用 Stm32 H7 。 最后汇总一下该开发板可能用到的信息: 1.stm8/stm32 社区 https://www.stmcu.org.cn/ 2.STM32H7X3 中文参考手册 https://pan.baidu.com/s/1-Ge5E0fS0IfEpdKUbjVJ8A 3.STM32H743 数据手册(英文版) https://www.stmcu.org.cn/document/download/index/id-214772 4.STM32H743 数据勘误手册(英文版) https://www.stmcu.org.cn/document/download/index/id-214743 5.STM32H7 完整编程指南 https://www.stmcu.org.cn/document/download/index/id-214016/odid-218419 6.STM32H7 应用笔记 https://www.stmcu.org.cn/document/list/index/category-1123 7.STM32H7 用户手册 https://www.stmcu.org.cn/document/list/index/category-1124 8.STM32H7 固件库 https://www.stmcu.org.cn/document/list/index/category-1125 9.STM32H7 PC 端软件 https://www.stmcu.org.cn/document/list/index/category-1127 10.NUCLEO-H743 开发板电路图 https://www.stmcu.org.cn/document/download/index/id-213889 11.NUCLEO-H743 移植 MicroPython http://m.elecfans.com/article/886484.html 12.STM32 ucLinux 开发环境搭建 https://blog.csdn.net/u010444107/article/details/78580947 13.STM32F722ZE 开发板评测 http://bbs.21ic.com/icview-1703152-1-2.html 14.Ubuntu 搭建 stm32 开发环境 https://blog.csdn.net/lanqilovezs/article/details/80657911
  • 热度 3
    2019-5-10 16:04
    27536 次阅读|
    4 个评论
    前言 IAP(In-application-programming),即在应用中编程。当产品发布之后,可以通过网络方便的升级固件程序,而不需要拆机下载程序。IAP系统的固件一般由两部分组成,即BootLoader Code和Application Code,并存储在不同起始地址的空间里: 系统运行时,先运行Bootloader程序,检测状态,判断是执行应用程序还是升级固件。在实际开发过程中,这两段程序一般是单独编写,然后生成两个Bin文件,为了方便下载程序,可以把两个文件合并为一个文件,这样会节省很多时间。本文将介绍如何使用JFlash来合并两个Bin文件或者两个Hex文件, 准备 要合并的文件1:bootloader.hex,起始地址:0x8000000 要合并的文件2:app.hex,起始地址:0x20001000,如果是Bin文件要先确定起始地址。 JFlash软件 创建工程 和之前下载程序一样,首先要新建一个工程。 1.打开JFlash 2.创建新工程 NewProject 3.选择芯片的型号 这里支持很多ARM Cortex内核的芯片,选择对应的芯片,我这里选择的是STM32F103RE系列。 4.打开要合并的程序文件1:bootloader.hex Open data file,打开bootloader程序。 5.打开要合并的程序文件2:app.hex Merge data file,打开app程序。 要保证,bootloader程序起始地址+bootloader代码大小不超过app程序的起始地址,如下图示意: 6.保存合并后的文件 Save data file as,将合并后的文件另存,可根据需要选择要保存的文件类型。 注意 如果要合并的文件为bin文件,自身不带地址信息,所以会让你指定地址,注意不要互相重叠地址。所以最好各种文件生成的时候就保存为带地址信息的格式,比如hex。关于Hex文件和Bin文件的区别,可以参考文章: BIN、HEX、AXF、ELF文件格式有什么区别 JLink软件的下载 JLink_Windows_V614b软件下载链接: JLink_Windows_V614b.exe(https://wcc-blog.oss-cn-beijing.aliyuncs.com/BlogFile/JLink_Windows_V614b.exe)
  • 热度 4
    2018-11-29 18:36
    2082 次阅读|
    0 个评论
    让更多人知道“ 中国芯 ” 第 1 章 SWM320 控制器简介 单片微型计算机简称单片机,是典型的嵌入式微控制器( Microcontroller Unit ),常用缩写 MCU 表示。单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统)。与计算机相比,单片机缺少了外围设备等,概括的讲:一块芯片就成了一台计算机,它的体积小、质量轻、价格便宜,从而为学习、应用和开发提供了便利条件。 INTEL 的 8080 是最早按照这种思想设计出的处理器,当时的单片机都是 4 位或 8 位的。其中最成功的是 INTEL 的 8051 ,此后发展出了 MCS51 系列单片机系统,因为简单可靠而性能不错获得了很大的好评。可 2000 年以后 ARM 公司先后推出了 32 、 64 位,主频从几十 MHz 到上 GHz 。在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。事实上单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。 几乎现代人类生活中的每件有电子器件的产品中都会集成有单片机。例如手机、智能穿戴、智能家居、掌上电脑等电子产品。 汽车上一般配备几十片单片机,复杂的工业控制系统上甚至可能有数百、上千片单片机在协同工作!单片机的数量不仅远超过 PC 机和其他计算机的总和。截止 17 年末,据官方统计,基于 ARM 核的芯片出货量达到了 600 多亿,是世界人口的 10 倍之多。 可见单片机应用之广,前景之大,随着物联网、人工智能、区块链等新兴技术的兴起,加之对速度、功耗、性能等方面的严格要求,基于 ARM 核的控制器以优越的性价比取代 8 位机,是大势所趋,设计所向,那么学习基于 ARM 核的单片机也迫在眉睫。 1.1 ARM 知多少 一、 ARM 公司简介 ARM ( Advanced RISC Machine )有三种含义,它是一家公司的名称;是一种技术的名称;是一类处理器的通称。 ARM 公司是微处理器行业的一家知名企业,提供基于 ARM 体系的知识产权。 ARM 公司并不生产芯片,也不出售芯片;转让设计方案给半导体厂商,由半导体厂商生产 SOC ,并销售;同时提供一些其他的技术服务,比如物理 IP 、图像内核、开发工具、实时操作系统。 二、 ARM 处理器家族 ARM 处理器家族现阶段有四大类,具体如下: 早先经典处理器,包括ARM7、ARM9、ARM11,称之为Classic系列; · Cortex-M系列,该系列为单片机驱动的系统提供了低成本优化方案,应用于传统的微控制器市场,蓝牙、WiFi设备,智能传感器,汽车周边部件等。具体分类有Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4、Cortex-M7。 · Cortex-A系列,主要针对开放式操作系统的高性能处理器。应用于智能手机、数字电视、智能本等高端领域。按性能可分为Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A53、Cortex-A57。 · Cortex-R系列,主要针对实时系统、满足实时性的控制需求,应用于汽车控制系统、动力系统等。分类有Cortex-R4、Cortex-R5、Cortex-R7。 三、 ARM 处理器指令集 所谓指令集就是处理器能够识别并执行的指令集合,每条指令可处理一个简单或复杂操作(加、加乘 … ) , 并且每一条指令对应一条或几条汇编指令。 常见指令集分两大类,复杂指令集( CISC ),包括处理复杂操作的特定指令,指令长度不固定,执行需要多个周期;精简指令集( RISC ),指令简单有效,格式和长度通常是固定的,大多数指令在一个周期内可以执行完毕。其中 ARM 的内核是基于 RISC 体系结构的。 四、片上系统 -SOC 片上系统是指在单个芯片上集成一个完整的计算机系统,所谓完整的系统一般包括中央处理器( CPU )、存储器、外围电路等。我们入门的 51 单片机同样是一个片上系统,只是他的资源没有基于 ARM 的这么丰富,运行主频么有那么快,功耗等方面没有那么有优势。 既然 ARM 公司不出芯片,那我们用的 IC 是有哪些厂商制造了?世界上能制造芯片的厂商很多,这里不一一列举,其中以 Cortex-M 为核心的有欧美的 Microchip 、 Silicon Labs 、 NXP 、 ST 等,台湾的新唐、松翰、合泰,大陆的上海灵动、北京兆易、佛山华芯微特。这里我们着重以华芯微特的 SWM320(M4 核 ) 为主,来讲述 SWM320 的学习和应用。 1.2 SWM320 简述 SWM320 是一款基于 ARM 公司 CortexTM-M4 的 32 位微控制器。具有高性能、低功耗、代码密度大等突出特点,适用于工业控制、白色家电、电机驱动等诸多应用领域。 SWM320 内嵌 CortexTM-M4 控制器,片上包含精度为 1% 以内的 20MHz 、 40MHz 时钟,可通过 PLL 倍频到 120MHz 时钟,提供多种内置 FLASH/SRAM 大小可供选择,支持 ISP (在系统编程)操作及 IAP (在应用编程)。 外设串行总线包括 1 个 CAN 接口,多个 UART 接口、 SPI 通信接口(支持主 / 从选择)及 I2C 接口(支持主 / 从选择)。此外还包括 1 个 32 位看门狗定时器, 6 组 32 位通用定时器, 1 组 32 位专用脉冲宽度测量定时器, 12 通道 16 位的 PWM 发生器, 2 个 8 通道 12 位、 1MSPS 的逐次逼近型 ADC 模块, 1 SDIO 接口模块, TFT-LCD 液晶驱动模块以及 RTC 实时时钟、 SRAMC 、 SDRAMC 、 NORFLC 接口控制模块,同时提供欠压检测及低电压复位功能。同时外设可通过编程,自由分配到各个 GPIO 口上,这样极大简化了 PCB 的设计。 1.3 SWM320 的特性 内核 32位CortexTM-M4内核 24位系统定时器 工作频率最高120MHz 硬件单周期乘法 集成嵌套向量中断控制器(NVIC),提供最多240个、8级可配置优先级的中断 通过SWD接口烧录 内置LDO,供电电压范围为2.0V~3.6V 128KB的片上SRAM存储器 256/512KB的片上FLASH存储器,支持用户定制ISP(在系统编程)更新用户程序 串行接口 UART模块,具有独立8字节FIFO,最高支持主时钟16分频 SPI模块,具有8字节独立FIFO,支持SPI、SSI协议,支持master/slave模式 I2C模块,支持7位、10位地址方式,支持master模式 CAN模块,支持协议2.0A(11Bit标识符)和2.0B(29Bit标识符) PWM控制模块 12通道16位PWM产生器 可设置高电平结束或周期开始两种条件触发中断 具有普通、互补、中心对称等多种输出模式 支持死区控制 ADC采用触发 定时器模块 6路32位通用定时器 可做计数器使用 支持输入单脉冲捕获功能 32位看门狗定时器,溢出后可配置触发中断或复位芯片 RTC 模块 使用支持自校正功能的内部32KHz时钟 可自由设置日期(年、月、周、日)和时间(时、分、秒 可自由设置闹钟(周、时、分、秒) 自动识别当前设置年份是否为闰年 支持RTC中断从Sleep模式下唤醒芯片 DMA 模块,支持存储器到存储器之间的数据搬运 SRAMC模块,支持8位数据位宽和16位数据位宽的外部SRAM存储颗粒,最大支持24位地址线 SDRAMC模块 支持16Bit位宽的SDRAM 支持兼容PC133标准的SDRAM颗粒 支持2MB到64MB的外部SDRAM颗粒 NORFLC模块 支持并行NOR FLASH接口 支持8位数据位宽和16位数据位宽的外部NOR FLASH存储颗粒 最大支持24位地址线 SDIO接口模块,支持标准SDIO接口协议 TFT-LCD 驱动模块 支持MPU/SYNC两种接口的外部LCD扩展 支持最高分辨率1024*768,实际分辨率可以配置 输出数据宽度16Bit 支持横屏和竖屏模式 GPIO 可配置成4种IO模式(上拉输入、下拉输入、推挽输出、开漏输出) 灵活的中断配置 触发类型设置(边沿检测、电平检测) 触发电平设置(高电平、低电平、双电平) GPIO可配置灵活配置为I2C、UART、SPI、CAN等接口 模拟外设 12位8通道高精度SAR ADC 采样率高达3M SPS 内建7档参考电压,最低至100mV 支持single、scan两种模式 独立的结果寄存器 提供独立 FIFO 可由软件、PWM、TIMER 触发 支持 DMA 欠压检测( BOD) 支持欠压检测 支持欠压中断和复位选择 时钟源 20MHz/40MHz 精度可达1%的片内时钟源 32KHz精度可达5‰的片内时钟源 2~32MHz片外晶振 环境 工作温度:-40℃~105℃ 保存温度:-40℃~150℃ 湿度等级:MSL3 可定制 ISP 程序,可定制96BIT独立ID 1.4 SWM320 功能框图及其封装实物 前面了解到,每个单片机实质是一个片上系统,这里我们看看 SWM320 的片上系统结构框图,具体如图 1-1 所示。 图 1-1 SWM320 结构框图 具体资源在特性里有详细介绍这里,这里不再赘述。其封装形式有 LQFP64 (图 1-2 左)、 LQFP100 (图 1-2 右) , 其示意图见图 1-2 。 图 1-2 SWM320 封装示意图 1.5 SWM320 应用领域 基于以上丰富的特性和惠民的价格,可广泛应用于各行各业。 音频系统:专业麦克风、吉他控制板 工业计算设计:EBS、PLC、测量和测试、工厂自动化、HMI控制系统 消费类产品:智能家电、LCD、数码产品 楼宇和家庭自动化:物联网关、照明控制、温湿度控制 电机控制和电源转换:3D打印机、无人自动驾驶、机器人
相关资源
  • 所需E币: 1
    时间: 昨天 17:44
    大小: 4.88MB
    上传者: Argent
    使用单片机可以开发一些常见的智能设备,无需高昂的价格,低成本高稳定性的产品才是市场竞争的王道,掌握单片机的设计思路,使用人类的编程语言去操控机器设备的运转,单片机改变了这个时代。一个既需要懂单片机的硬件基础知识,又需掌握软件上的编程控制的岗位应运而生,即单片机开发工程师,高级一点的叫嵌入式开发工程师,下载我的这些有关单片机开发的应用知识,助你更深入地了解单片机工作原理,增强你的编程动手能力。
  • 所需E币: 0
    时间: 6 天前
    大小: 5.45MB
    上传者: Argent
    模电数电是电路的基础,掌握基础才能更好的理解智能芯片的工作原理,万物互联,没有电路的支持,一切都是废墟。射频无线,创造无限可能,5G的兴起,FPGA的火爆,快来下载基础性的资料吧,让你从零开始掌握底层电路的实现原理。
  • 所需E币: 1
    时间: 2020-5-12 22:42
    大小: 68KB
    上传者: symic
    STM32简单多任务调度
  • 所需E币: 1
    时间: 2020-4-28 15:38
    大小: 95.11MB
    打包资料精选汇聚了22个新颖的STM32创意原创项目,分为“极客创作”、“大赛作品”、“毕业设计”和“基础知识”四个方面。从简单的课程设计触控示波器、平衡车,到智能家居控制,从实用的GPS路径记录仪、老人健康监测智能手表,到热门的四轴飞行器、物联网,以简明的图文形式,和完整的设计流程,原理图,代码展示了创新思路。推荐的几十个项目很容易跟着操作,让我们一起创作燃烧的小宇宙吧!
  • 所需E币: 1
    时间: 2020-4-28 15:40
    大小: 91.95MB
    打包资料精选汇聚了22个新颖的STM32创意原创项目,分为“极客创作”、“大赛作品”、“毕业设计”和“基础知识”四个方面。从简单的课程设计触控示波器、平衡车,到智能家居控制,从实用的GPS路径记录仪、老人健康监测智能手表,到热门的四轴飞行器、物联网,以简明的图文形式,和完整的设计流程,原理图,代码展示了创新思路。推荐的几十个项目很容易跟着操作,让我们一起创作燃烧的小宇宙吧!
  • 所需E币: 0
    时间: 2020-4-28 15:41
    大小: 54.82MB
    打包资料精选汇聚了22个新颖的STM32创意原创项目,分为“极客创作”、“大赛作品”、“毕业设计”和“基础知识”四个方面。从简单的课程设计触控示波器、平衡车,到智能家居控制,从实用的GPS路径记录仪、老人健康监测智能手表,到热门的四轴飞行器、物联网,以简明的图文形式,和完整的设计流程,原理图,代码展示了创新思路。推荐的几十个项目很容易跟着操作,让我们一起创作燃烧的小宇宙吧!
  • 所需E币: 1
    时间: 2020-4-28 15:44
    大小: 58.68MB
    22个STM32项目-小白容易上手(4)
  • 所需E币: 5
    时间: 2020-4-3 15:50
    大小: 3.12KB
    上传者: givh79_163.com
    STM32硬件设计问答STM32硬件设计问题解答2009年STMCU巡回演讲北京、深圳、上海、台北、青岛、重庆、南京、哈尔滨、武汉、福州、西安内容一览如何保证ADC精度VDD与VDDA的处理如何达到最优功耗水准如何保证RTC精度复位电路SWJ调试电路Q&ASTMicroelectronicsSept.14~25,20092STM32的ADC共有最多3个ADC模块,最多21个ADC输入通道特性12位分辨率自校准转换结束,注入转换结束和发生模拟看门狗事件时产生中断带内嵌数据一致的数据对齐非常丰富的操作模式双重模式(带2个或以上ADC的器件)ADC转换时间:1μs:ADC时钟为14MHz时达到最快14个时钟周期,转换周期可调:14、20、26、41、54、68、84、252ADC供电要求:2.4V~3.6VADC输入范围:VREF-≤VIN≤VREF+规则通道转换期间有DMA请求产生模拟看门狗STMicroelectronicsSept.14~25,20093ADC输入通道映射ADC1通道0通道1通道2通道3通道4通道5通道6通道7通道8通道9通道10通道11通道12通道13通道14通道15PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PC0PC1PC2PC3PC4PC5ADC2PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PC0PC1PC2PC3PC4PC5Sept.14~25,20094ADC3PA0PA1PA2PA3PF6PF7PF8PF9PF10PC0PC1PC2PC3STMicr……
  • 所需E币: 4
    时间: 2019-12-25 16:21
    大小: 727.46KB
    上传者: 微风DS
    源文件下载(使用开发工具RealViewMDK,STM32F103V100开发板,其它STM32开发板只需稍作修改即可使用).……
  • 所需E币: 3
    时间: 2019-12-30 13:39
    大小: 2.17MB
    上传者: 微风DS
    这是开发板上的例程,通过stm32与超声比测距模块配合测量距离……
  • 所需E币: 4
    时间: 2019-12-25 16:01
    大小: 66.5KB
    上传者: rdg1993
    如何使用STM32的PVD对电源的电压进行监控STM32中文应用文档如何使用STM32的PVD对电源的电压进行监控用户在使用STM32时,可以利用其内部的PVD对VDD的电压进行监控,通过电源控制寄存器(PWR_CR)中的PLS[2:0]位来设定监控的电压值。PLS[2:0]位用于选择PVD监控电源的电压阀值:000:2.2V001:2.3V010:2.4V011:2.5V100:2.6V101:2.7V110:2.8V111:2.9V在电源控制/状态寄存器(PWR_CSR)中的PVDO标志用来表明VDD是高于还是低于PVD设定的电压阀值。该事件连接到外部中断的第16线,如果该中断在外部中断寄存器中被使能的,该事件就会产生中断。当VDD下降到PVD阀值以下和(或)当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断。这一特性可用于发现电压出现异常时,执行紧急关闭任务。下面是用于测试PVD的代码:主程序的代码:/*Includes------------------------------------------------------------------*/#include"stm32f10x_lib.h"/*Privat……
  • 所需E币: 4
    时间: 2019-12-25 16:01
    大小: 163.14KB
    上传者: wsu_w_hotmail.com
    STM32的定时器进行输入脉冲的计数(代码).……
  • 所需E币: 3
    时间: 2019-12-25 16:02
    大小: 330.1KB
    上传者: givh79_163.com
    FreeRTOS作为开源的轻量级实时性操作系统,不仅实现了基本的实时调度、信号量、队列和存储管理,而且在商业应用上不需要授权费。伟研科技http://www.gzweiyan.com广州伟研电子科技有限公司FREERTOS在STM32的移植伟研科技http://www.gzweiyan.comV1.0FreeRTOS作为开源的轻量级实时性操作系统,不仅实现了基本的实时调度、信号量、队列和存储管理,而且在商业应用上不需要授权费。FreeRTOS的实现主要由list.c、queue.c、croutine.c和tasks.c4个文件组成。list.c是一个链表的实现,主要供给内核调度器使用;queue.c是一个队列的实现,支持中断环境和信号量控制;croutine.c和task.c是两种任务的组织实现。对于croutine,各任务共享同一个堆栈,使RAM的需求进一步缩小,但也正因如此,他的使用受到相对严格的限制。而task则是传统的实现,各任务使用各自的堆栈,支持完全的抢占式调度。FreeRTOS的主要功能可以归结为以下几点:1)优先级调度、相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核2)任务可选择是否共享堆栈(co-routines&tasks),并且没有任务数限制3)消息队列,二值信号量,计数信号量,递归互斥体……
  • 所需E币: 4
    时间: 2019-12-25 15:37
    大小: 163.14KB
    上传者: 978461154_qq
    STM32的定时器进行输入脉冲的计数(代码)……
  • 所需E币: 3
    时间: 2019-12-31 16:32
    大小: 101.18KB
    上传者: 238112554_qq
    内详!呵呵,好久没用到这个词了……
  • 所需E币: 3
    时间: 2019-12-25 10:00
    大小: 3.88MB
    上传者: quw431979_163.com
    本文档介绍了STM32V100开发板的基本功能和使用……
  • 所需E币: 5
    时间: 2019-12-25 09:59
    大小: 3.88MB
    上传者: 微风DS
    此文档介绍了STM32处理器的GPIO端口,还附有对GPIO外部中断的讲解。……
  • 所需E币: 4
    时间: 2019-12-25 06:02
    大小: 1.26MB
    上传者: wsu_w_hotmail.com
    STM32原理图STCortexM3仿真学习套件用户手册v1.0仿真学习套件用户手册概述真学习开发套件采用STM32F103作为核心MCU,并外扩了USB、UART、LCD数码显示、模拟输入等硬件接口,配合IARSystemsEWARM集成开发环境及内嵌的仿真器模块,构成初学者学习入门、硬件设计参考、软件编程调试的学习套件。特点zIAREWARM开发环境支持z学习评估、仿真开发STM32F10x系列STCortexM3器件z作为开发产品的硬件设计和软件编程参考z内嵌ST-LINK-II仿真器,支持对用户目标系统程序仿真和代码下载产品包装zEK-STM32F学习开发板一块zUSB电缆一根zzCDROM光盘一张z产品装箱单及合格证一张功能仿真器z内嵌ST-LINK-II仿真器,支持STM32F系列Cortex-M3zUSB1.1,USB供电z支持评估系统或用户目标系统仿真z下载速度大于5K/秒STCortexM3仿真学习套件用户手册v1.0z自适应目标系统JTAG电平3.3V-5Vz可通……
  • 所需E币: 5
    时间: 2019-12-25 05:59
    大小: 393.78KB
    上传者: 二不过三
    stm8_stm32_stlink3in1……
  • 所需E币: 3
    时间: 2020-1-4 10:17
    大小: 5.52MB
    上传者: rdg1993
    stm32l4r5……
广告