judy的博客

嵌入式入门知识

judy的头像

一、如何开始嵌入式学习

1、选择合适的硬件平台

根据自己的性能需求,选择合适的开发板(微处理器MPU以及外围设备能够满足你的需求)。

2、选择合适的嵌入式系统

一般比较主流的嵌入式操作系统有Android和Linux(当然还有其他操作系统,这里不多说)。相对来说,Android系统偏向界面交互,对于开发应用软件比较适合。而Linux系统更偏向外设控制,因为其编写相应的驱动比Android容易。

二、MPU和MCU

许多初学者搞不清微控制器(MCU)和微处理器(MPU)之间的区别。其实很简单就可以区分。

我们熟悉的单片机、stm32等都属于微控制器,因为其上面不能支持嵌入式操作系统(比如Linux),虽然stm32可以运行小型的ucos系统,但是功能上并不强大,且其上面未带有MMU,故属于微控制器。

比如树莓派、S3C2440等能够支持功能强大的嵌入式系统,且带有MMU的板子才属于微处理器,因为其拥有了实现小型电脑功能的能力。这些嵌入式系统的学习过程中,我们需要学习驱动开发、操作系统层开发、应用层开发等。
  
三、ARM

ISP与IAP的区别

judy的头像

IAP(In Appplication Program),即在应用中可编程。

顾名思义,就是在系统运行的过程中动态编程,这种编程是对程序执行代码的动态修改,而且毋须借助于任何外部力量,也毋须进行任何机械操作。这一点有别于isp。

一般来说,isp在进行加载程序以前,需要设置某些功能引脚,迫使IC转入自举状态。而IAP则不需要作硬件上的任何动作,只要有合法的数据来源。数据源既可以是内部程序运行的结果,也可以来自UART,I/O口或者总线。

换个角度来来说,IAP不仅提供现场或者远程软件修改升级,也可以把它理解成idate,pdate或者xdate,替代I2C之类的外部E2PROM,存储并加密数据。

细说ISP 和IAP 的区别

ISP:in system programming,
IAP: in applicatin programming

但两者的操作方式,结果和应用场合有什么区别?

ISP:
用写入器将code 烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;

UART与USART的区别

judy的头像

UART与USART都是单片机上的串口通信,他们之间的区别如下:

首先从名字上看:

UART:universal asynchronous receiver and transmitter通用异步收/发器
USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器

从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?

其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如stm32的USART可以提供时钟支持ISO7816的智能卡接口。

51单片机数组的定义方法(code与data的作用)

judy的头像

数组前不加“code”或“data”,则默认将数组存放在程序存储器中;
code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中不能改变;
xdata 指定数据是存储在外部数据存储器了;
data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置,默认就是data型,这部分存储器寻址速度最快;
idata 指定数据存储在内部低256字节数据存储器里,但51只有128字节内部RAM,52才有256字节;
pdata 指定数据存储在外部低256字节数据存储器里,这时候寻址用8位寄存器R0和R1,而不用16位的DPTR,寻址速度比xdata快。

单片机C语言unsigned char code table[] code 是什么作用?

code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是), 因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM 的意思。

单片机复位电路原理作用分析

judy的头像

关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。

单片机复位电路原理是在单片机的复位引脚rst 上外接电阻和电容,实现上电复位,而复位时间是(时钟周期=12×振荡周期,振荡周期=1/f),这个时间只能大不能小,具体数值可以由rc电路计算出时间常数。

单片机复位后各寄存器的状态

A=00H,表明累加器已被清零; PSW=00H,表明选寄存器0组为工作寄存器组;SP=07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP=×××00000B,表明各个中断源处于低优先级;IE=0××00000B,表明各个中断均被关断;

而置位可以把它初始化到任意一个状态.复位、置位是指将器件的逻辑值设为特定的值,一般我所了解“复位”一般指将寄存器的Q端输出设为0,“置位”指将寄存器的Q端输出设为1.利用单片机的setb指令可以实现置1这个操作。

C51单片机和AVR单片机的区别

judy的头像

1.avr为risc结构cpu,大多数指令在一个时钟周期内完成,所以MIPS比51高。

2.avr单片机的复位电平为负逻辑,而51为正逻辑 。

3.汇编的程序不通用,但是如果用c写的程序还是可以移植的。

AVR 单片机是ATMEL在90年代推出的精简指令集RISC的单片机,跟PIC类似,使用哈佛结构。可以这样类比,AT89C52相当于复杂指令集CISC的intel的奔腾CPU,AT90S8515相当于AMD的精简指令集RISC的K7 CPU。

以上是指令集的类比。AVR是专门为使用高级语言设计的,在使用高级语言时, 会比89C52有较佳的表现。 可以直接替代89C52的CPU是AT90S4414和AT90S8515。在这里以AT90S8515来做说明,虽然AT90S8515的引脚跟AT89C52差不多,但是还有一些区别。

单片机小白学步(10) 单片机程序下载相关知识

judy的头像

作为基础知识补充,本篇详细介绍了串口、51单片机的ISP下载等知识,虽然这些知识并不一定要很了解也能学习单片机,但是有一些概念有时对解决问题还是很有好处的。

前面已经说了,单片机相当于一个微型电脑,所以单片机是可以执行程序的。在电脑上,我们可以上网下载各种游戏各种软件,但是单片机这灰不溜秋的一块芯片,怎么让它执行程序呢?不要急,这就给大家介绍相关知识。这里涉及到一些专业词汇,可能大家不明白,但是并没有很大影响,大致了解就好了,有兴趣的可以上网搜索去了解下。另外等学到后面,不少概念也自然就明白了。

串口(RS232、UART)

广义上而言,串行接口简称串口,也称串行通信接口,是采用串行通信方式的扩展接口。我们比较熟悉的USB接口,全名通用串行总线(Universal Serial BUS),就属于串口。串口还包括UART、RS232、RS422、RS485等。通常狭义上,我们所说的串口指的是RS232、UART这一类串口,常称为COM接口。

老式的台式计算机和部分笔记本上就有RS232串口(RS232指RS232电平的串口)。后来由于这种串口使用很少、速度较慢、体积较大而逐渐在笔记本甚至台式机上被淘汰了。

单片机延时问题20问

judy的头像

1、单片机延时程序的延时时间怎么算的?

答:如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。

如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

------------------------------------------------------

2、求个单片机89S51 12M晶振 用定时器延时10分钟,控制1个灯就可以

答:可以设50ms中断一次,定时初值,TH0=0x3c、TL0=0xb0。中断20次为1S,10分钟的话,需中断12000次。计12000次后,给一IO口一个低电平(如功率不够,可再加扩展),就可控制灯了。

单片机小白学步(9) 用万用焊板搭建实验电路

judy的头像

这一篇我们继续上篇《单片机小白学步(8) 用面包板搭建实验电路》的话题,讲解自己搭建电路的另一种方法:用万用焊板搭建电路。在此之前,先普及几点基础知识。

电路板

首先我们了解下电路板。前面介绍了面包板可以搭建电路,但是在实际制作出来的电子设备中,我们用的通常都是电路板。电路板主要用于固定元器件,对元器件之间进行可靠的连接。

页面

订阅 RSS - judy的博客