嵌入式计算机系统
麓山君陌
在校科研生
展开
-
嵌入式(三十一):DAC&ADC
1、DAC:Digital to Analog Convertor:数模转换(DA,D/A)2、ADC:Analog to Digital Convertor:模数转换(AD,A/D)3、DAC基本原理:a、将输入数字量转换成模拟量输出b、电流型:输出电流与输入数字成正比c、电压型:输出电压与输入数字成正比d、公式:最小电压(电流)增量VLSB满度输出电压(电流)VOMDA转换位数(二进制)nn越大, VLSB越小,转换精度越高e、DAC转换器(倒T电阻网络,n=4):f、电阻网原创 2020-05-30 09:28:03 · 5060 阅读 · 0 评论 -
嵌入式(三十):modbus站点设计
2、modbus是适用于现场总线控制系统的协议。modbus中,通过协议来规定同一时间最多只有一个设备发送。通过主机控制从机,只有主机发送信息给相应从机,从机才能发送信息。从机不能自己开启一个通信过程。3、modbus中将每个节点抽象为:a、节点ID在网络中唯一,但可以不连续b、寄存器均视为16bit数据c、线圈均视为1bit数据d、寄存器、线圈的物理意义(物理实现)由节点自由定义4、modbus站点设计实例:a、板子有一个id号,一个字节,编号为1-255,0为广播站号b、每个节点有多个原创 2020-05-30 09:26:53 · 2760 阅读 · 0 评论 -
嵌入式(二十九):modbus协议
1、IO模块在CPU看来就是可访问的寄存器,分为数据寄存器(如计数器类)、状态控制寄存器、模式方式寄存器三类。2、SBUF串行缓冲区,只要把状态设置好,就可以实现数据的传输。3、真正的ARM基本上都会有内存管理,即MMU,可以支持操作系统,而且真正ARM的计算单元会强很多。4、异步通信:收发双方独自用自己的时间,要求约定波特率,双方可以用自己的时钟产生波特率。传久了之后会存在一个误差(由于钟不一样)。5、同步通信:收发双方时钟同步,需要传递时钟,不会存在误差。6、lin是汽车上常用到的总线。stm原创 2020-05-30 09:25:20 · 3472 阅读 · 0 评论 -
嵌入式(二十八):arm总线&指令集&工作状态
1、arm流水:a、流水的深度越深,级别越多,系统的性能有可能会更高b、arm9开始就是哈佛结构,指令的吞吐量更多,内核的频率也更高。c、arm7是三段流水2、arm7的三级流水线:a、正常操作过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出,即:3、cortex M3概述:a、一块低功耗处理器b、门数目少,中断延迟短,调试成本低c、满足有快速中断响应能力的深度嵌入式应用d、采用armv7-M架构e、采用thumb-2 ISA子集,包含所有基本的16位原创 2020-05-30 09:23:55 · 3475 阅读 · 0 评论 -
嵌入式(二十七):arm
1、arm中国的网站:www.armchina.com2、arm发展历程:a、1978年CPU公司成立b、1979年更名为Acorn computer ltdc、1981年acorn risc machine(ARM1)诞生d、1984年arm自己的电脑上市e、1990年arm公司成立,与apple合作,此时的arm仅是一个公司的名称3、arm的技术ip核:a、改变他们的产品策略——不再生产芯片,而是以授权的方式,将芯片设计方案转让给其他公司,即partnership开放模式b、开创了属于原创 2020-05-30 09:22:36 · 2732 阅读 · 0 评论 -
嵌入式(二十六):波特率&串行通信协议
1、检错信息编码:a、校验:知道错了,但不知道在哪里b、纠错:知道错了,并知道错在哪里c、奇偶校验码:每个数据加一个额外奇偶校验位/发现错误①、奇校验码——数据中包含奇数个“1”②、偶校验码——数据中包含偶数个“1”d、格雷码:两个相邻代码之间,仅有一位不同/减少误差e、海明码:海明距离的编码/发现错误、纠正错误。海明距离:两个数的编码中不相同的数据位数2、数据块校验:a、简单的累加和b、异或校验c、循环冗余校验(CRC校验)3、波特率与发送/接收时钟a、波特率:单位时间内传送二进原创 2020-05-30 09:21:32 · 3124 阅读 · 0 评论 -
嵌入式(二十五):串行通信
1、一个计算机系统(独立冯·诺伊曼计算机)如何与另一个系统(可能是计算机),在满足应用要求条件下,如何简便、实用、快捷、可靠……连接起来,以使能够相互交流信息。许多场合并不需要“并行总线”,更简洁的“串行通信总线”即可。2、串口通信基本原理:用少量的“通道”(如导线)将要传送的多个bit数据,在时间轴上“分时”传送过去,用以代替(冯·诺伊曼系统结构)计算机系统中“并行”方式工作总线(一次传送多个bit),也解决了很多 “并行”总线难以实现场合。3、系统结构中的串行通信类模块:a、“串行类模块”属“输入原创 2020-05-30 09:20:13 · 3055 阅读 · 0 评论 -
嵌入式(二十四):软件格式
1、keil中的中断软件调试手段:a、软件模拟环境(并不一定完全一样)b、硬件仿真环境(8bt单片机一般不支持,STC单片机完全不支持)2、C51语言中断服务函数格式:void 函数名()interrupt中断号[using 寄存器组]a、注意:函数名、关键词interrupt、中断号对应于入口地址b、中断函数是硬件中断触发的,在程序中并没有明确的调用者c、中断应用注意事项:①、中断事件恢复、中断标志清零②、中断服务函数尽量时间短(释放中断资源)③、ASM编程:现场恢复、中断返回④、C原创 2020-05-30 08:43:21 · 2200 阅读 · 0 评论 -
嵌入式(二十三):中断
1、硬件中断系统a、中断的概念:在执行程序的过程中,由于某种外界的原因,必须尽快终止当前的程序执行,而去执行相应的处理程序,待处理结束后,在回来继续执行被终止的程序。这种机制——称计算机中断系统b、计算机系统中传送数据的几种方式:例如:数据块输入/出到IO设备①、正常程序——顺序地(不仅传送数据)②、中断机制——事件触发(不仅传送数据)③、DMA传送——专门的(仅传送数据)c、中断的优点:①、提供对异常事件响应机制,提高计算机效率②、有效提高计算机实时性d、中断系统的主要问题:①、中原创 2020-05-29 15:41:11 · 5619 阅读 · 0 评论 -
嵌入式(二十二):定时器/计数器
1、绝对编码器中用“二进制编码”问题:a、随着分辨率提高(bit数变大),问题变得复杂b、二进制编码对各bit光电检测一致性要求很高①、制造难度加大,甚至不可能②、稍有差错,可能造成重大信息错误2、“格雷编码”解决了编码器中“二进制编码”存在问题,信息误差在制造偏差范围内3、STC增量编码器:a、一个光栅盘b、两路互成90度光电检测器c、可分正转、反转,以及当前角度d、分辨率容易提高、成本低,但需要起始位置、中断可造成差错4、并口作为输入时注意的几个问题:a、适当的端口配置(最好原创 2020-05-29 15:40:16 · 4595 阅读 · 0 评论 -
嵌入式(二十一):外设汇总&格雷码
1、并口模块:a、并口模块属于“输入输出”部分b、在CPU看来,是若干个可以访问的单元(寄存器)c、核心功能是“引脚电平与部分寄存器内容对应”d、另有部分寄存器配置引脚电气性能(多功能化)2、STC发光二极管实验:a、P0口上8个引脚静态需要高电平1ma驱动b、P2.3需要高电平2ma驱动c、发光二极管主要电气参数:①、发光颜色(发光波长):xxx②、正向压降:1.8V~3.7V红1.8V,绿1.9V,蓝3.7V③、正向工作电流:0.1mA~300mA普通—20、10、5、2、1原创 2020-05-29 15:38:48 · 2499 阅读 · 0 评论 -
嵌入式(二十):并行接口
1、并行接口:a、标准51接口b、x86计算机可编程并行接口c、STC系列并行接口d、Cygnal C8051系列并行接口e、三星S3C44B0 GPIOf、意法半导体STM32F103XXXX系列 GPIO2、51并行接口:P0、P1、P2、P3;在CPU看来就是有几个可以访问的地址3、atmel 2051并行接口:P1、P34、地址与位一般表示:寄存器名+‘.’a、P0:80H,P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1(81H) P0.0(80H)b、P原创 2020-05-29 15:36:58 · 4177 阅读 · 1 评论 -
嵌入式(十九):指令集
1、指令集层面:a、MCS51的6种寻址方法:①、立即寻址(#),如mov a, #30H②、寄存器寻址(R0-R7),如mov a,R3③、寄存器间接寻址(只有@R0、@R1、@DPTR),如mov a,@R0④、直接寻址,如mov a,30H⑤、基址寄存器+变址寄存器间接寻址,如movc a,@a+DPTR⑥、相对寻址,如cjne a,#30H,20H,将20H加入到当前地址。这条语句的意思是如果a=30H,就继续顺序进行,否则,跳转到当前地址(PC)+相对地址(PC+20H)的地方继续执原创 2020-05-29 15:35:36 · 3408 阅读 · 0 评论 -
嵌入式(十八):单片机存储
1、单片机:计算机系统向“小”和“满足应用需要”方向发展的产物2、单片机继续在技术支持下向“小而强”和“面向应用需要”方向发展,形成各种各样的的单片机系统3、单片机小而强对应于嵌入式控制为主(MCU类)、SOC4、单片机系统与通用计算机系统有很多共同的地方5、51单片机系统结构:a、资源:并口P1P2P3,串口,中断,定时器(与计数器实质相同)b、可以抽象为总线+存储(ROM+RAM)+定时器+串口+并口+中断控制+51核(运算器+控制器+IR+PC)c、系统扩展接口:①、P2、P0、P3原创 2020-05-29 15:31:58 · 2974 阅读 · 0 评论 -
嵌入式(十七):嵌入式端口分类
1、JTAG 就是Joint Test Action Group,联合测试工作组,是一种国际标准测试协议2、存储器:ROM和FLASH等3、GPDMA:通用的多通道直接内存访问4、GPIO:通用目的的输入输出,是并口类的一种。5、定时器类(TIM)是计数器类的一种特殊情况6、每个计算机必定有计数器类7、RTC:real time clock,也是一个计数器类,准确来讲是一个实时时钟8、实时时钟:任何时候计算机向他要时间都可以,不管有没有停电9、IWDG:(内部)看门狗,一般是WDG。也是计数原创 2020-05-29 15:30:54 · 2887 阅读 · 0 评论 -
嵌入式(十六):冯诺依曼结构&哈佛结构
1、冯诺依曼计算机问题:a、指令执行时的串行性b、存储空间访问的串行性(每次只能读取一个单元的数据)基本原理“串行性”严重制约其性能(效率)提升空间2、存储器问题:a、高速度与易失、容量的矛盾b、大容量与速度、成本的矛盾c、非易失与速度、寿命的矛盾没有一款性能完全满足显示计算机要求的存储器3、今天所有计算机的模型,没有离开冯氏结构。4、计算及结构分析举例:a、地址缓存、数据缓冲、总线控制分别于地址总线、数据总线、控制总线相连接。b、两种存储器,内存与外存,一种断电消失,一种不消失,原创 2020-05-29 15:30:10 · 3576 阅读 · 0 评论 -
嵌入式(十五):机器周期&指令周期&状态周期&时钟周期&指令&总线
1、CPU=运算器+控制器,对应图灵机的“读写头”,但是图灵机的读写头可以自动取纸带上数据、做运算、存结果。而冯氏结构中进行改进,就是读程序、翻译程序、执行程序。其中读程序和执行程序对应于“自动”;执行程序对应于取数据、做运算、存结果。2、CPU可抽象成:功能寄存器+运算单元3、功能寄存器:指令寄存器、程序计数器(下一个指令)、其他功能寄存器4、运算单元:算术运算、逻辑运算5、机器指令周期/机器周期T:取指令-翻译指令-执行指令的一个周期所花费的时间,即执行一条指令所需要的时间。6、主频F:每秒钟原创 2020-05-29 15:29:05 · 5284 阅读 · 0 评论 -
嵌入式(十四):图灵机&冯诺依曼结构概述
3、关于计算机系统:a、典型的计算机组成及工作原理:①、计算:算一个问题答案的过程②、机器:只能做简单、重复性的工作③、机器计算:解决什么样的计算过程适合机器完成?机器能完成什么样的计算的问题?一般来讲,机器适合大数据统一性的工作,适合演绎推理类问题,而不适合逻辑推理类问题,但由于人工智能的兴起,特别是深度学习的提出,机器几乎可以适合所有工作。④、计算机:计算出要解决的问题的答案的机器。两个著名问题:有没有一种机器帮我们将各种要解决的问题“算”出来?什么样的机器可以做这样的事情?⑤、可计算与不可原创 2020-05-29 15:27:42 · 2915 阅读 · 0 评论 -
嵌入式(十三):嵌入式系统概念
1、嵌入式系统概念:用于控制、监视或者辅助操作机器和设备的装置(不一定是电路,或者计算机),此为广义的嵌入式系统2、嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,此为狭义的嵌入式系统可理解为:所有以专用CPU芯片(或者类CPU芯片)为核心,只为实现某一特定功能的一类计算机系统。3、主要特点:a、是一个“计算机”系统b、嵌在其他设备或商品中。使得商品变得更自动、智能、好用或多功能c、针对应用定值,也叫专用计算机。原创 2020-05-29 15:26:48 · 5566 阅读 · 0 评论 -
嵌入式(十二):STM32在搭建好环境的情况下点亮流水灯(定时器版本)
定时器TIM3的使用1.TIM3是一种定时器,可以通过在cube中直接初始化配置2.打开demo.ioc工程文件3.在左侧工具栏位置找到TIM34.选择clock source修改为internal clock5.进入到功能外设配置界面,设置TIM3的参数6.我们希望达到的目标是每秒钟计时两次,因此将对应的参数进行设置,我们使用的晶振分频后是72MHz,因此做如图设置这里讲...原创 2020-05-07 21:56:30 · 4509 阅读 · 0 评论 -
嵌入式(十一):STM32在搭建好环境的情况下点亮流水灯(延时函数版本)
关于环境如何搭建请参考:嵌入式(十):STM32Cube安装教程&第一个流水灯工程环境搭建1.双击生成的工程demo文件夹,发现里面的文件和我们以前创建keil文件时有些不同2.在MDK-ARM文件夹中,我们找到了001工程,双击打开,在左侧的工具栏中,我们可以找到所有创建的文件,其中,在Aapplication/user中我们找到了main.c3.下面解析一下部分gpio函数1...原创 2020-05-07 21:53:10 · 4163 阅读 · 0 评论 -
嵌入式(十):STM32Cube安装教程&第一个流水灯工程环境搭建
写在前面:由于做实验的时候遇到了很多的错误,所以可能下面的步骤中存在少量逻辑问题,是因为我在一个问题上卡了很久导致的。1.打开STM32CubeMX软件,点击New Project。选择对应板子的MCU(STM32F103VBT6)2.弹出了一个错误窗口:3.点击yes,等待,这个等待的时间会很久,如果直接取消,不会影响到你打开工程,所以看个人意愿了4.然后进入新建工程界面5.选...原创 2020-05-07 21:47:39 · 4585 阅读 · 0 评论 -
嵌入式(九):C51通过keil编译环境实现计数器(采用定时函数)
//数码管段选信号 从0到9和’-’,这是因为我们要求的是显示“888–888”,既需要显示数字的时候还需要显示两个‘-’,所以干脆在这里一并进行了定义,并选择了不会与数字冲突的第10号位置uchar code duanxuan[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//数码管位选信号,这里由于需要显示八位数码...原创 2020-05-07 21:41:36 · 5720 阅读 · 0 评论 -
嵌入式(八):C51定时器设置
1、TH0和TL0是一组十六位定时器,实际上就是一个寄存器,当时钟走到这一个十六位的数值的时候,会中断一次,执行一次所有标有interrupt 1的中断函数。一般用(65535-a)/256来表示ax1us的高八位,用(65535-a)%256来表示ax1us的低八位。这个初值时指计数器开始计数的时候从这个数开始,直到产生溢出,然后执行中断函数。2、IE1外部中断1,当为1的时候外部中断向cpu...原创 2020-05-07 21:37:17 · 5981 阅读 · 0 评论 -
嵌入式(七):什么是伪指令?&keil编写时遇到的地址冲突
伪指令(伪操作)不像机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作.它可以完成如处理器选择,定义程序模式,定义数据,分配存储区,指示程序结束等功能.伪指令在编译的时候并不生成代码.伪指令在编译之后就不存在了。实际上就是假指令,不会产生机器代码,不会占用rom空间,只用于汇编过程中为汇编程序提供汇编信息,在汇编之后就消失了,是给汇编器来解释的。最常...原创 2020-04-03 21:27:33 · 3988 阅读 · 0 评论 -
嵌入式(六):如何用keil新建汇编代码工程
首先建立keil工程,首先点击project->new project新建工程,命名为001;在弹出的窗口中选择芯片格式Device intel->8031AH,点击OK按钮;在弹出的窗口中点击‘是’,将.A51文件添加到工程文件中,避免后面调用窗口时出错;点击file->new建立新文件,建立和编写我们自己的文件,注意要将文件加入进工程才能够运行。由于我们这次是汇编程...原创 2020-04-03 21:24:37 · 5692 阅读 · 0 评论 -
嵌入式(五):51端口简析
实验时有一个小问题可以研究一下,就是,为什么P2的高四位是0xF?首先,在我们一开始的时候,整个函数尚未进行,仅仅实现了变量的定义(分配空间)的时候,可以看到仿真结果是P0和P2两个八位寄存器的值都是0xFF,即一开始,就已经将所有位设置为了高电平,所以在后续的时候,P2的第四位不断地发生改变,而高四位则一直延续为0xF。但是为什么一开始的初始值是全为1呢?这和P0,P1,P2,P3这四组端口的性...原创 2020-04-03 21:23:19 · 4783 阅读 · 0 评论 -
嵌入式(四):C51与C的不同点
做实验时遇到了一个有趣的错误,在这里记录一下:main.c(9): error C141: syntax error near ‘unsigned’。这就是C51和C语言的一个非常大的不同。C语言对于变量的声明是可以在任何地方的,也就是说,我们可以在这个变量要使用的位置再定义这个变量(尽管一般还是建议在最开始就将所有的变量定义好,这是一个习惯问题)。但是C51就不行,严格要求着必须要程序运行的开始...原创 2020-04-03 21:21:48 · 3702 阅读 · 0 评论 -
嵌入式(三):keil中有趣的错误
1、遇到了一个有趣的错误,在这里记录一下:如果遇到main.c(32): error C264: intrinsic ‘nop’: declaration/activation error这个错误,可以通过引入intrins.h库解决。2、还遇到了一个更有趣的错误,就是蹦出来一个窗口,提示Error: Encountered an improper argument,经过测试发现,这是keil自...原创 2020-03-23 21:20:29 · 5743 阅读 · 0 评论 -
嵌入式(二):如何用keil新建工程
首先点击project->new project新建工程,命名为001;在弹出的窗口中选择芯片格式STC MCU Database->STC15F2K60S2,点击OK按钮;在弹出的窗口中点击‘是’,将.A51文件添加到工程文件中,避免后面调用窗口时出错,当然,由于我们使用的是老师的“STC15F2K60S2.h”库,所以也可以点否;点击file->new建立新文件,将ST...原创 2020-03-23 21:17:40 · 2699 阅读 · 0 评论 -
嵌入式(一):现代通用电子计算机
Q1:什么是计算机,现代通用电子计算机最基本原理是什么,主要特征有哪些。A1:上课前的理解:计算机就是人类创造出来用于进行某种运算(数学运算、逻辑运算等)的机器。现代通用电子计算机最基本的原理是由冯诺依曼提出的“存储程序”原理,即计算机的工作模式是将编号的程序和原始数据输入并存储在计算机的内存储器中(即存储程序),然后计算机按程序逐条取出指令并加以分析,并执行指令规定的操作(即程序控制)...原创 2020-03-23 21:14:54 · 2404 阅读 · 0 评论