摘要: FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。 至于那个“总工”说的话如果不是张一刀记错了的话,那是连基本概念都不对,只能说那个“总工... 阅读全文
posted @ 2014-02-16 20:51 Bingoo&Echo 阅读(32416) 评论(0) 推荐(2) 编辑
摘要: 大家都知道51单片机有的寄存器R0-R7共有四组。最近1年来,我在与新手朋友交流时发现,很多朋友对寄存器组的使用时经常出现问题。虽然这并不是多难的问题,但如果出现错误,也会造成很严重的后果。首先介绍一下51的寄存器组:通过设置PSW寄存器的第3位和第4位可以任意切换寄存器组。在进入中断前,切换寄存器组,可以方便的保护原寄存器组的数据不被中断里的语句破坏,很方便。RS1RS0字节地址000组寄存器00H~07H011组寄存器08H~0FH102组寄存器10H~17H113组寄存器18H~1FHRS1=PSW.4RS0=PSW.3常见错误有三种:1、为中断函数指定了第0组寄存器C程序:voidin 阅读全文
posted @ 2013-12-05 21:52 Bingoo&Echo 阅读(4015) 评论(0) 推荐(2) 编辑
摘要: 原理图以及元件的绘制1. 画数据总线时,需要给总线一个Net Label,例如:databus[0..7],并且还需要在每个入口和出口处设置一致的标号。2. ERC 电气规则检查,Electronic Rule Check。可以使用place-directives-compile mask 来屏蔽某一部分不需要进行电气检查的原理图。而Place NO ERC 只是可以对某点放弃电气规则检查。3. 可以通过Place-directives-PCB Layout 在原理图中限制将来绘制成的PCB 的一些线宽和过孔之类的参数。这是一种强制性说明,会直接作用到PCB 设计中。而Parameter Se 阅读全文
posted @ 2013-12-01 12:05 Bingoo&Echo 阅读(1347) 评论(0) 推荐(0) 编辑
摘要: 不同种类地之间用0欧电阻相连;电源引入高频器件时用磁珠;高频信号线耦合用小电容;电感用在大功率低频上。 简单来说,数字地是数字电路部分的公共基准端,即数字电压信号的基准端;模拟地是模拟电路部分的公共基准端,模拟信号的电压基准端(零电位点)。一、分为数字地和模拟地的原因:由于数字信号一般为矩形波,带有大量的谐波。如果电路板中的数字地与模拟地没有从接入点分开,数字信号中的谐波很容易会干扰到模拟信号的波形。当模拟信号为高频或强电信号时,也会影响到数字电路的正常工作。模拟电路涉及弱小信号,但是数字电路门限电平较高,对电源的要求就比模拟电路低些。既有数字电路又有模拟电路的系统中,数字电路产生的噪声会影. 阅读全文
posted @ 2013-12-01 12:00 Bingoo&Echo 阅读(1131) 评论(0) 推荐(0) 编辑
摘要: 1.方法一:.sof和.elf全部保存在FPGA内,程序加载和运行也是在FPGA内部。把FPGA的配置文件.sof通过JTAG方式下载(其实是在线运行)进入FPGA本身,此时在NIOSII的界面中,点击“RUN”—“RunAsHardware”可实现在线运行。此时在SOPC配置时,需要有片内mem_rom和mem_ram,程序的复位向量为mem_rom,偏移0x00;异常向量为mem_ram,偏移0x20。断电后无法运行。2.方法二:.pof保存在EPCS4,.elf保存在FPGA内部,加载从EPCS4,运行在FPGA内部。和方法一差不多,只是把FPGA的配置文件.pof以AS的方式下载到EP 阅读全文
posted @ 2013-11-30 12:51 Bingoo&Echo 阅读(2158) 评论(0) 推荐(0) 编辑
摘要: 编译器会单独变异每一个模块源文件(.c文件),并一一为之生成一个唯一的目标文件。这一编译过程是与外界完全隔离的——即便模块源文件中通过“#include”方法包含了别的模块接口描述,并使用了相关的接口函数和接口变量,编译器在编译当前模块时也并不会去真正核实这些信息,可谓“两耳不闻窗外事,一心只‘译’圣贤书”。为了避免一个模块接口文件在同一个模块源文件中被重复包含,可以在头文件的开头处加入条件编译代码。 如果在头文件中放入了某个函数的代码实体,这一部分代码将随着接口描述文件一起被绑定到每一个包含了该头文件的的模块源文件中参与编译。在最后,编译器整合所有目标文件时,会发现存在多个同名的函数实... 阅读全文
posted @ 2013-11-24 21:32 Bingoo&Echo 阅读(271) 评论(0) 推荐(0) 编辑
摘要: ISP(在系统编程)是一种不依赖于单片机自身软件的程序下载方式,特点是不需要从电路板上取下单片机,通过某种方式使单片机进入ISP模式,开放编程接口,由其使用的计算机将新的程序代码写入到存储器内。我们平时用于AVR单片机的“串行编程”实际上就是ISP用法。 IAP(在应用编程)与ISP相比,IAP需要单片机自身软件的支持,单片机中的软件从外界获得新的程序代码,并将它们写入自己的程序存储器中。如果更新的程序部涉及当前运行的部分,系统甚至不需要停下当前的工作,就可以更新程序代码。 阅读全文
posted @ 2013-11-24 20:57 Bingoo&Echo 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 使用中断方式进行串口接收时,读取串口缓冲区的语句应尽可能靠近串口接收完成中断服务函数的入口处。当数据被连续接收时,函数的总执行时间不能大于一个帧的接收时间,考虑中断返回后主程序的运行等因素,这个时间还应留有充分的余量! 串口的第一级缓冲,用于组装逐位传输的帧数据。数据从RXD端逐位输入。串口第二级缓冲,用于程序访问。当接收到完整的帧结构后,数据被搬移到第二级缓冲等待程序取出。与此同时,串口接收完成中断被申请。 串口模块的缓冲区只用1Byte,如果接收到的数据没有被及时取出,就可能被后面的数据冲掉。然而,繁忙的主控程序在此时可能刚好“无暇顾及”接收到的数据包,这就必须在串口模块和主控程序... 阅读全文
posted @ 2013-11-24 19:09 Bingoo&Echo 阅读(596) 评论(0) 推荐(0) 编辑
摘要: BOOT区的由来基于一个简单的道理,即单片机的程序是保存在FLASH中的,要运行程序就必须不停的访问FLASH存储器。对于一般的FLASH存储器,数据的写入需要一定的时间来完成,在数据写入完成之前,存储器中所有的数据都是不可读的,这就在运行旧程序和写入新程序之间造成了一个矛盾。 使用BOOT区是解决这个矛盾的方法之一,它将FLASH存储器从物理上分为两个独立的区域,对其中的一个区的数据写入不会影响到另一个区的数据读取操作。我们可以让单片机的程序在其中一个区(通常是BOOT区)运行,而运行着的程序代码写入另外一个区(通常为应用程序区)内。 AVR高档单片机ATmega系列中含有BOOT代... 阅读全文
posted @ 2013-11-24 16:04 Bingoo&Echo 阅读(3530) 评论(1) 推荐(0) 编辑
摘要: 以太网(IEEE 802.3)帧格式:1、前导码:7字节0x55,一串1、0间隔,用于信号同步2、帧起始定界符:1字节0xD5(10101011),表示一帧开始3、DA(目的MAC):6字节4、SA(源MAC):6字节5、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)6、数据:46~1500字节7、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。以CSMA/CD作为MAC算法的一类LAN称为以太网。CSMA/CD冲突避免的方法:先听后发、边听边发、随机延迟后重发。一旦发生冲突,必须让每台 阅读全文
posted @ 2013-04-10 10:50 Bingoo&Echo 阅读(1497) 评论(0) 推荐(0) 编辑