跳转到主要内容

博客

浅谈STM32单片机学习---PWM输出

实现功能:采用定时器2的通道2,使PA1输出频率1K,占空比40的PWM波形,用PA8随意延时取反led灯,指示程序运行。

首先熟悉一下定时器的PWM相关部分。看图最明白
<center><img width="600" src="http://mcu.eetrend.com/files/2018-07/博客/100012555-44735-0.jpg&quot; alt="浅谈STM32单片机学习---PWM输出"></center>

其实PWM就是定时器的一个比较功能而已。

STM32烧录的常用方式

stm32烧录常用的方式一般为ST-LINK(或者J-tag)下载仿真和ISP下载

<strong>一、仿真器下载</strong>

仿真器分为J-TAG和SWD仿真,SWD仿真只需要4根线(VCC、GND、CLK、DATA)就可以了,传输速率也相当更快,是仿真调试的首选。仿真器的软件设置网上一大堆,这里不再赘述。J-TAG仿真用到的线较多,博主也没记住到底用了几根线,但是通用型强。

<strong>二、ISP下载</strong>

剖析:模拟地与数字地

不同种类地之间用0欧电阻相连;电源引入高频器件时用磁珠;高频信号线耦合用小电容;电感用在大功率低频上。

简单来说,数字地是数字电路部分的公共基准端,即数字电压信号的基准端;模拟地是模拟电路部分的公共基准端,模拟信号的电压基准端(零电位点)。

<strong>一、分为数字地和模拟地的原因:</strong>

由于数字信号一般为矩形波,带有大量的谐波。如果电路板中的数字地与模拟地没有从接入点分开,数字信号中的谐波很容易会干扰到模拟信号的波形。当模拟信号为高频或强电信号时,也会影响到数字电路的正常工作。模拟电路涉及弱小信号,但是数字电路门限电平较高,对电源的要求就比模拟电路低些。既有数字电路又有模拟电路的系统中,数字电路产生的噪声会影响模拟电路,使模拟电路的小信号指标变差,克服的办法是分开模拟地和数字地。

RFID天线必备基础知识

<strong>一、电磁波产生的基本原理</strong>

按照麦克斯韦电磁场理论,变化的电场在其周围空间要产生变化的磁场,而变化的磁场又要产生变化的电场。这样,变化的电场和变化的磁场之间相互依赖,相互激发,交替产生,并以一定速度由近及远地在空间传播出去。

周期性变化的磁场激发周期性变化的电场,周期性变化的电场激发周期性变化的磁场。

电磁波不同于机械波,它的传播不需要依赖任何弹性介质,它只靠“变化电场产生变化磁场,变化磁场产生变化电场”的机理来传播。

晶体管单管大电路三种基本接法比较

在电子电路中,放大的对象是变化量,放大的本质是在输入信号的作用下,通过有源元件(晶体管或场效应管)对直流电源的能量进行控制和转换,使负载从电源中获得的输出信号能量比信号源向放大电路提供的能量大的多。晶体管放大电路有共射、共集、共基三种接法,场效应管有共源、共漏接法(与晶体管放大电路共射、共集接法相对应)。

以下通过3个主要性能(放大倍数A、输入电阻Ri、输出电阻Ro)指标对晶体管三种基本接法进行比较。

浅谈“模拟输入信号”保护电路

本文介绍了四种模拟输入信号的保护电路的实现方法。

本文仅仅是起到抛砖引玉的作用,一方面希望大家提出宝贵的意见,另外也希望大家自行详细计算有关参数,因为文中的器件参数有可能不合适。

最近由于工作的需要,涉及到了模拟输入信号的保护电路问题。结合以往的工作实践以及网络文献资料的查找。现在就保护电路作一简单的说明。

<strong>一、 电源钳位保护</strong>

嵌入式系统在机器人中的应用

随着高新技术的发展,机器人在各个行业,各个领域的使用率节节攀升。而机器人的发展,于嵌入式计算机为核心的嵌入式系统是密不可分的。目前,嵌入式系统在机器人控制系统被广泛采用。

嵌入式控制器越来越微型化、功能化。微型机器人、特种机器人等也获得更大的发展机遇,无论从控制系统的结构还是机器人的智能程度方面都得到了很大的提高。以索尼的机器狗为代表的智能机器宠物是最典型的嵌入式机器人控制系统,除了能够实现复杂的运动功能,它还具有图像识别、语音处理等高级人机交互功能,它可以模仿动物的表情和运动行为。火星车也是一个典型例子,这个价值10亿美金的技术高度密集移动机器人,采用的是VxWorks 操作系统,它可以在不与地球联系的情况下自主工作。下面从运动控制系统、远程控制、视频监控系统三个方面分析嵌入式系统在机器人中的应用情况。

C51中的关键字和ANSIC标准关键字

<strong>1、C51中的关键字</strong>

<center><img src="http://mcu.eetrend.com/files/2018-07/博客/100012344-43856-p1.jpg&quot; alt="C51中的关键字和ANSIC标准关键字"></center>

<strong>2、ANSIC标准关键字</strong>

CAN总线学习总结——错误帧和错误状态

<strong>一、五种CAN总线可能发生的错误</strong>

1、CRC错误:

接收节点计算出的CRC校验值,与发送节点计算的结果不一致;

2、格式错误:

传输的数据帧格式,与任何一种帧格式都不符;

3、应答错误:

ACK段,发送节点没有收到接收节点发出的应答(显性位);

单节点的CAN设备发送数据帧时为发生应答错误;

4、位发送错误:

发送过程中,发送节点发送的同时监听总线电平,如果总线电平和发送的不一致;

在仲裁域发现不同不报错,因为就是要仲裁掉优先级低的报文;

发送被动错误标志、主动错误标志期间检测总线电平有6个相同位时;

5、位填充错误:

单片机之Watchdog

<strong>一、Watchdog介绍</strong>

单片机的watchdog一般都有两个,一个是独立看门狗IWDG,一个是窗口看门狗WWDG。以STM32为例,STM32的独立看门狗是一个12位的递减计数器,当计数器的值从某个值一直减到0的时候,系统就会产生一个复位信号,即IWDG_RESET。看门狗功能由VDD电压域供电,在停止模式和待机模式下仍能工作。

Lua在单片机中的移植

Lua代码符合ANSI C标准,只要有C编译器的开发环境就能跑Lua。

虽说只要有C编译器就能跑Lua,但是单片机的环境太简单,有些C标准的内容仍旧无法支持。

Lua的官网是:www.lua.org

<strong>移植</strong>

(1) 把 lua.c 和 luac.c 删除,这两个是一个Lua Shell,和平台相关,单片机中一般没用。

(2) 对内存敏感的项目可以替换掉 lauxlib.c 文件里 l_alloc 函数调用的 free 和 realloc 函数。

(3) loslib.c 和系统相关,单片机中最多跑RTOS,所以这个文件可以删除。

关于BSP,BIOS,和bootloader

BSP是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。

例如:

在VxWorks中的网卡驱动,首先在config.h中包含该网卡,然后将网卡含网卡的信息的参数放入数组 END_TBL_ENTRY endDevTbl [] 中,系统通过函数muxDevLoad( )调用这个数组来安装网卡驱动。

运算放大器11种经典电路

遍观所有模拟电子技朮的书籍和课程,在介绍运算放大器电路的时候,无非是先给电路来个定性,比如这是一个同向放大器,然后去推导它的输出与输入的关系,然后得出Vo=(1+Rf)Vi,那是一个反向放 大器,然后得出Vo=-Rf*Vi……最后学生往往得出这样一个印象:记住公式就可以了!如果我们将电路稍稍变换一下,他们就找不着北了!偶曾经面试过至 少100个以上的大专以上学历的电子专业应聘者,结果能将我给出的运算放大器电路分析得一点不错的没有超过10个人!其它专业毕业的更是可想而知了。

今天,芯片级维修教各位战无不胜的两招,这两招在所有运放电路的教材里都写得明白,就是“虚短”和“虚断”,不过要把它运用得出神入化,就要有较深厚的功底了。

虚短和虚断的概念

为什么大电容滤低频小电容滤高频的问题

由于实际的电容存在电感效应,通常需要讲一个电容等效为一个电容、一个电感和一个电阻的串联形式,如下图所示:
<center><img src="http://mcu.eetrend.com/files/2018-06/博客/100012140-43092-a.jpg&quot; alt="为什么大电容滤低频小电容滤高频的问题"></center>
所以,电容的实际阻抗为:

4个有趣的测谎电路(检测皮肤电阻变化)

我们来看几个有趣的“测谎仪”小电路,它们的原理是检测手指间的皮肤电阻。

电容充放电时间常数RC计算方法

进入正题前,我们先来回顾下电容的充放电时间计算公式,假设有电源Vu通过电阻R给电容C充电,V0为电容上的初始电压值,Vu为电容充满电后的电压值,Vt为任意时刻t时电容上的电压值,那么便可以得到如下的计算公式:

Vt = V0 + (Vu – V0) * [1 – exp( -t/RC)]

如果电容上的初始电压为0,则公式可以简化为:

Vt = Vu * [1 – exp( -t/RC)] (充电公式)

由上述公式可知,因为指数值只可能无限接近于0,但永远不会等于0,所以电容电量要完全充满,需要无穷大的时间。

51单片机定时计数器溢出率计算和串口的波特率之间的关系

51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下:

SM0 SM1 SM2 REN TB8 RB8 TI RI

SM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。

波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。这里所指的波特率,如标准9600 不是每秒种可以传送9600个字节,而是指每秒可以传送9600 个二进位,而一个字节要8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600÷10=960 字节。

DRAM、SRAM、SDRAM六问六答

<strong>问题1:什么是DRAM、SRAM、SDRAM?</strong>

答:名词解释如下
DRAM--------动态随即存取器,需要不断的刷新,才能保存数据,而且是行列地址复用的,许多都有页模式
SRAM--------静态的随机存储器,加电情况下,不需要刷新,数据不会丢失,而且一般不是行列地址复用的
SDRAM-------同步的DRAM,即数据的读写需要时钟来同步

<strong>问题2:为什么DRAM要刷新,SRAM则不需要?</strong>

答:这是由RAM的设计类型决定的,DRAM用了一个T和一个RC电路,导致电容会漏电和缓慢放电,所以需要经常刷新来保存数据

SPI接口功能描述

SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

对单片机堆栈的理解

看关于单片机方面的书籍的时候,总是能看到别人说的一些堆栈啊什么的操作,之前看到这个术语就直接跳过,没想到去探究单片机内部的原理。但是最近课程学习微机原理这门课,需要我们写汇编程序,汇编里面经常遇到堆栈这个东西,所以就找了个时间把堆栈给彻底的搞一下。

如果了解一点汇编编程话,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。通常用来保存CALL指令调用子程序时的返回地址,RET指令从堆栈中获取返回地址。中断指令INT调用中断程序时,将标志寄存器值、代码段寄存器CS值、指令指针寄存器IP值保存在堆栈中。

堆栈也可以用来保存其他数据。

堆栈操作由PUSH,POP两条指令来完成;

堆栈操作的操作数均为子类型(两个字节)进行操作。