
1.单片机
文章平均质量分 73
涵盖单片机相关的技术,包括但不限于stm32、NXP MCU等。
TopSemic嵌入式
TopSemic
展开
-
到底什么是IO的驱动能力?
到底什么是I/O的驱动能力?原创 2022-09-23 06:42:56 · 7227 阅读 · 1 评论 -
KSDK2.0 Keil MDK 生成bin文件方法
一客户反映按照通常的方法去配置生成不了bin文件,生成的是.bin文件夹, 原因是出在这里:这里写链接内容这么设置:fromelf –bincombined –bincombined_base=0x0000 –output=myProject.bin ./debug/myProject.out 就可以生成bin文件了另外也可以下载一个单独的工具去做转换: 这里写链接内容原创 2016-11-21 11:42:59 · 1674 阅读 · 0 评论 -
LPC824 使用FlashMagic 下载程序
1) 使用USB转UART,连接UART的Tx和Rx 注意:板载的CMSIS-DAP的虚拟串口没法用作ISP2)让芯片进入ISP模式,按住ISP按键,然后对板子复位3)打开flashmagic,设置好即可下载 Flashmagic 下载地址: http://www.flashmagictool.com/ 参考: http://maker.zlgmcu.com/forum.php?mod=原创 2016-11-13 21:06:56 · 4353 阅读 · 0 评论 -
K60 CAN 过滤设置
如何只接收特定ID的CAN帧呢? 设置CANx_RXIMRn, 这是一个31bit的寄存器, 格式按照这个设置。 0表示不care 1表示carevoid CAN_SetRxFilterMask(uint32_t instance, uint32_t mb, uint32_t mask){ CANBase[instance]->MCR |= (CAN_MCR_FRZ_MASK原创 2016-11-10 17:07:24 · 2776 阅读 · 0 评论 -
单片机(MCU)如何才能不死机之对齐访问(Aligned Access)
从一个结构体说起。如下,在 STM32F0 的程序中,我们定义了一个结构体My_Struct ,那么这个结构体占用多少内存呢?struct Struct_Def {uint8_t Var_B;uint16_t Var_W0;uint16_t Var_W1;uint32_t Var_DW;};struct Struct_Def My_Struct;int main(...原创 2020-01-02 07:32:06 · 1759 阅读 · 0 评论 -
24C02 读写代码,基于STM32F030
EEPROM可以掉电保存数据,是一种在产品中经常使用的器件,24Cxx 系列更是被广泛采用。下面是的工程在 24LC02 上调试通过,实现了字节读写,和页读写,MCU 是 STM32F030。采用了 MCU 的硬件 I2C 控制器。24LC02硬件连接: A2,A1,A0 接 GND, 地址为 A0。 WP 接 GND,允许写入。24LC02 Page size 是 8 Bytes, 一共 2...原创 2019-08-22 11:25:37 · 2557 阅读 · 0 评论 -
STM32F0单片机快速入门三 MCU启动过程
1.MCU 代码如何启动首先我们需要澄清一个问题,什么是 Startup Code,什么是 Bootloader?因为总看到有同学混用这两个概念。Bootloader 可以译为引导程序。早期的单片机是没有 Bootloader 这种概念的。如大家熟悉的 MCS51,最初芯片内是不能存储代码的,需要外挂EPROM,就是下面这种带个小玻璃窗的存储器。擦除 EPROM 中的代码需要用紫外线照射几...原创 2020-02-07 17:36:37 · 4613 阅读 · 1 评论 -
STM32F0单片机快速入门二: 开发环境的建立
1.最小硬件系统让 STM32F030 运行起来非常简单,在硬件上仅需给数字电源和模拟电源引脚(VDD,VDDA)供电,最好分别加上去耦电容。推荐值: VDD引脚加 1个4.7uF并联几个0.1uF 电容,VDDA 引脚加 1个1uF并联 1个0.01uF电容。电容值大些小些,甚至不加,对调试都不会有太大影响。需要注意的是 VDD 需要在2.4V和3.6V之间,VDDA需要大于等于VDD。...原创 2020-01-30 17:47:12 · 2252 阅读 · 0 评论 -
STM32F0单片机快速入门一: ARM架构与STM32F0
STM32F0单片机快速入门一: ARM架构与STM32F01.ARM架构简单介绍市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。最近这几年,在每一代 ARMvx 核心的基础上,...原创 2020-01-23 17:57:26 · 4547 阅读 · 0 评论 -
STM32F0单片机快速入门八: Coolie DMA
苦力 DMA世上本没有路,走的人多了,便成了路。世上本没有 DMA,需要搬运的数据多了,便有了 DMA。大多数同学应该没有在项目中用过这个东西,因为一般情况下也真不需要这个东西。在早期的单片机中也不存在DMA模块。再加上很多谈 DMA 的文章,一上来就先来一个总线架构图,然后来一大堆让人生畏的词儿:共享总线,仲裁器,指针增量,对齐,中断 ... 好吧,每一个词都能吓跑一批胆小的。真的需要这么复杂吗?就好比我们学开车一样,能不能先别去尝试弄懂发动机的原理,直接挂档踩油门走起来呢?DMA是很简单的原创 2020-07-14 17:38:15 · 1402 阅读 · 0 评论 -
STM32F0单片机快速入门七: UART中断操作
1.从轮询到中断很多同学都不喜欢用中断,而偏爱用轮询的操作方式。这是不是和我们的天性有关呢?每个人都喜欢一切尽在掌握中,肯定都不喜欢被打断。我们常常都有这样的经验:正在跟别人说一件事,然后突然有个电话打进来,Call打完后突然记不起来刚才讲到哪了!这种糟糕的体验对我们影响是如此深刻,以至于我们认定机器可能也是这样吧,频繁的中断会不会把事情搞乱呢?好在机器虽然大部分时间都比人笨一些,但在处理这种问题上却能做到一丝不苟。机器在中断来的时候总会老老实实地先把当前正在做的记录下来,然后转去处理中断事件,中断原创 2020-07-14 17:35:33 · 2465 阅读 · 0 评论 -
STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单
1.从 GPIO 到 UART前面几节我们讲了MCU如何启动,如何用翻转IO引脚,以及用按键去触发中断。接下来我们介绍的也是最常用的一个模块,串口(UART)。串口可以说是最古老,而且生命力最强的一种通信接口了。RS485总线更是久经考验。虽然串口早已经从大多数PC的标配中去掉了,但是嵌入式系统跟上位PC机通信用的最多的应该还是通过串口转USB吧。我们用 Keil 打开下面这个工程:STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Exa原创 2020-06-05 17:37:19 · 2430 阅读 · 0 评论 -
STM32F0单片机快速入门五: GPIO中断
按键如何触发中断我们从一个例程看一下,如何用一个GPIO引脚来触发中断,来控制另一个引脚的翻转去控制LED指示灯。我们用 Keil 打开下面这个工程:STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\GPIO\GPIO_EXTI\MDK-ARM\Project.uvprojx编译下载运行此代码,然后按压 B1 USER 这个按键,每一次按压会触发板上一个LED灯翻转一次。这个功能也很简单,但它牵涉到的东西却不少..原创 2020-05-25 13:12:03 · 2425 阅读 · 0 评论 -
STM32F0单片机快速入门四 翻转引脚
1.第一个工程 翻转引脚上一篇文章我们详细介绍了 STM32F030 从复位时取得复位向量,系统初始化,然后跳转到 main( ) 函数的过程。下面我们结合一个最简单的例子,对 Cube 库的使用做一个简单的介绍。我们用 Keil 打开下面这个工程:STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx编译下载运行此代码,会看到一个 LED灯原创 2020-05-25 12:37:41 · 4142 阅读 · 0 评论 -
STM32F0单片机 PWM + ADC 控制有刷电机
有刷电机驱动电路有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。下面是两种 MOS 的典型用法.原创 2020-12-29 15:25:05 · 3170 阅读 · 0 评论 -
STM32F0单片机快速入门十: 用 SPI HAL 库读写W25Q128
W25Q128 介绍当我们有比较多的数据需要掉电存储时,上一篇文章所介绍的 24C02 (256个字节EEPROM)就不够了。此时我们会用到另外一种类型的存储器,即 Flash。比如具有 SPI 接口的 W25Q128。这颗小芯片虽然也只有简单的 8 个引脚,但存储容量却达到了128M-bit,也就是 16M 字节,同时它的读写速度可以达到 66MB/S。但是由于 STM32F030 不支持 Quad/Dual SPI,只能以标准 SPI 方式读写,所以速度会低一些。以下是 W25Q128 的主要特点:原创 2020-12-29 15:22:17 · 2250 阅读 · 0 评论 -
STM32F0单片机快速入门九: 用 I2C HAL 库读写24C02
24C02介绍24C02 现在基本是开发板的标配,对于需要掉电存储的应用来说确是不二选择。现在单片机因为内部集成了Flash存储器,一般也都支持数据的掉电保存,但相对于 24C02 这种 EEPROM 来说,使用单片机内部的 Flash 有一些需要注意的问题:Flash 写入数据之前需要先执行擦除操作,而且擦除以扇区为单位。 Flash读写次数比 EEPROM 少很多。 容易误操作,把 Flash 内部的代码擦除掉。 影响中断的响应时间。24C02 有 256 字节的数据,一般说来...原创 2020-07-18 21:48:56 · 2352 阅读 · 0 评论 -
Freescale KL26 SD卡读写程序
先了解一下SD卡和Micro SD卡的基本常识: SD卡是SecureDigital Card卡的简称,直译成汉语就是“安全数字卡”,是1999年由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器材等等。 MicroSD卡(这家伙原名叫TF卡(Trans-Flas原创 2014-11-07 10:46:29 · 5508 阅读 · 0 评论 -
单片机外围模块漫谈之五,USB开发,这个错误你犯了吗?
概述我们已经对USB硬件和数据的四种传输类型有了一个基本的了解。控制传输(Control Transfers)批量传输(Bulk Data Transfers)中断传输(Interrupt Data Transfers)同步传输(Isochronous Data Transfers):下面我们通过一个例子看一下USB的具体工作过程。在此我们用一个比较实用的例子,就是把我们的板子用USB连接至PC,然后在PC端出现一个模拟串口,通过串口助手打开这个串口,然后实现数据的双向传输。最后我们聊原创 2020-12-29 15:40:20 · 1427 阅读 · 0 评论 -
单片机外围模块漫谈之四,USB总线基本概念
USB概述USB设备现在是用的非常普遍的一种接口了,它即插即用的特性给人们带来了很大的方便。在嵌入式的应用中, USB经常被用来作为与上位机通信的接口,还用来通过U盘存储数据等。USB按通讯速度可分为低速,全速和高速设备。在我们的应用中,低速和全速是最为普遍的,在此我们对USB从物理层到协议层做一个简要的介绍。高速USB的原理是一样的,在理解了低速和全速设备的工作原理后再去理解高速设备就比较简单了,在此我们暂不讨论。低速(Low Speed, 1.5Mbps):键盘,鼠标,手写笔全速(Full S原创 2020-12-29 15:36:52 · 2404 阅读 · 0 评论 -
单片机外围模块漫谈之三,CAN总线
1980年,Bosch的工程师开始研究汽车上高速串行通信的问题,并在1986年发布了CAN(Controller Area Network)总线。CAN以其多主,高速(最高1Mbps),抗干扰的特性被广泛应用汽车及各种工业环境。在此我们主要介绍一下CAN总线的特点,帧类型,以及应用中的注意事项。CAN总线特点1.1 多主控制跟我们常用的RS485只有一个主机,从机只能等待主机的轮询不同,在CAN总线中,当任意一个节点监测到总线空闲时,就可以立即启动信息的发送,也就是每一个节点都可以当主机。当然,这原创 2020-12-29 15:32:30 · 2058 阅读 · 0 评论 -
单片机外围模块漫谈之二,如何提高ADC转换精度
在此我们简要总结一下ADC的各种指标如何理解,以及从硬件到软件都有哪些可以采用的手段来提高ADC的转换精度。1.ADC指标除了分辨率,速度,输入范围这些基本指标外,衡量一个ADC好坏通常会用到以下这些指标:失调误差,增益误差,微分非线性,积分非线性,信噪比,信纳比,有效位数,总谐波失真。让我们以下图为例来看一下这些指标的意义。LSB参数中经常用LSB作为单位,比如说差分非线性为2 LSB。这究竟是多大一个值呢?为了简单起见,我们以一个3bit分辨率,满量程为5V的ADC为例。1个LSB.原创 2020-12-29 15:30:36 · 2504 阅读 · 0 评论 -
单片机外围模块漫谈之一,图解说明什么是Flash, SAR, Sigma-Delta型ADC
模数转换模块ADC是连接现实世界模拟量和数字量之间的桥梁,它的转换精度经常可以决定一个产品的品质。现在单片机上一般都会集成ADC,我们如何根据自己的应用选择恰当的产品呢?怎么实现高的性价比,让产品在激烈的市场竞争中立于不败之地呢?下面我们从常用的几种ADC类型的特点,到使用中的注意事项,逐一探讨一下。ADC类型常用的ADC基本上可以分为三种类型: Flash型,SAR型,Sigma-Delta型。下面我们来了解一下它们的工作原理与性能特点。单片机中最常采用的是SAR型,在一些高精度场合会用到Sigm原创 2020-12-29 15:28:47 · 2945 阅读 · 0 评论