fish001

  • 2019-02-20
  • 发表了主题帖: 有关DSP向PRU1中到DATARAM写入数据的问题

    1.PRU采用汇编编程,使用C6748向PRU1的DATA RAM(0x01C30000)中写入一个整形数据1234,PRU1获取RAM中(C3)数据并进行处理(翻倍处理),处理完成后产生中断事件,DSP进中断服务函数并读取对应内存(0x01C30000)中的数据,发现数据并没有翻倍,请问在DSP和PRU进行数据交互时需要什么设置,基本流程是什么? 其中PRU中获取数据的处理如下: LBCO  r16, C3, 0x00, 0x04 MOV  r12, r16 ADD  r12, r12, r16 SBCO r12, C3, 0x00, 0x04 产生系统中断事件给DSP 问题已解决,操作的地址不对 2.想利用DM8148接可将光USB摄像头(工业级)后实时识别车辆。 我查看了DM8148的官方案例,有dm8148使用dsp和OpenCV进行人脸识别的案例。请问,     a.我能否使用openCV进行车辆的识别,识别的准确率和识别的速率如何?对图像的分辨率、帧率等是否有要求(分辨率高担心dsp的运算达不到实时)     b.使用MD8148,是否有其他目标识别的方案 做车牌识别,基本思路和人脸识别一样的。可以找做算法的供应商要一套 DSP 的算法评估库,放到 DSP  下做逐帧处理得到结果,传回给 ARM 做使用。 根据在其他平台的经验,8148 这款 DSP 做车牌识别够呛,720P 的单帧图像的分析耗时估计需要 1000 毫秒。当然也还有优化空间,改进算法库的实现、分一部分运算给 ARM 端等,但难度较大。

  • 2019-02-19
  • 发表了主题帖: 无线通信中载波带宽是什么?

    1、无线通信中载波带宽就是载波最高频率与最低频率之差就是载波带宽,B=Fh-Fl。 2、其实就是不同调制模式占用的带宽。GSM200Khz,WCDMA的5Mhz,TD-SCDMA的1.6Mhz,LTE的1.4-20Mhz,802.11的20-160Mhz        如果你用的是电话线这样的有线传输信道,基本上就没载波什么事了,这条电缆上的频谱都是你的,想怎么用就怎么用。但是!如果用的是无线信道,那载波就很有必要。因为无线频谱是公共的,谁都可以在上面传输,如果不加任何限制的话,你传这个信号我传那个信号,大家相互干扰然后最后结果就是谁都别想有好的接收信号。所以政府会规定哪一段信号可以用来干什么,比如说GSM只能在900MHz上面的某一段传输,3G下面WCDMA用1.8GHz上面5MHz。但是基带信号基本只集中在0Hz附近,怎么弄到900MHz或者1.8GHz呢?这个时候就要用到载波了。载波自身不具有任何信号,它只是信号的搬运工。就像下图。         一般来说,加载波就是对原信号乘以一个cos(2 pi f t)。注意一下,不同的调制模式决定的是占用的带宽,所谓WCDMA的5Mhz,TD-SCDMA的1.6Mhz,LTE的1.4-20Mhz,802.11的20-160Mhz 指的是上面这幅图里那个信号的宽度有多大。而载波决定的是频率中心点,就是上图中那个波形的中心位于频率轴的哪个地方。        最后,一语以蔽之,无线信号刚从发送端的天线出来的时候,会具有这样的数学表达式:a_n是真正有意义的信号,也就是0101之类的东西;T是每个波形占用的时隙,就是每个波形会持续多长时间,然后p(t-nT)取决于调制的模式,不同的调制模式会导致p(t)有不同的表达式;最后cos(2 pi f t)就是载波了,f 决定了你要把这个信号搬到频谱轴上的哪个地方。

  • 发表了主题帖: 什么是三极管的倒置状态及其作用!

    1、什么是三极管的倒置状态?       集电结正偏,发射结反偏,为倒置状态;集电结正偏,发射结正偏,为饱和状态;集电结反偏,发射结反偏,为倒截止态;集电结反偏,发射结正偏,为放大状态; 2、对三极管倒置状态的分析       实际上,当NPN型三极管的三个电极电位关系为UE>UB>UC 时,三极管内两个PN结的状态为be结反偏,bc结正偏。这时三极管工作在“倒置”状态。倒置状态的三极管其工作原理与放大状态相似,bc结正偏时,集电区发射电子,一部分自由电子在基区和空穴复合形成基极电流,另一部分电子被反偏的发射结“收集”形成发射极电流。倒置时由于三极管集电区掺杂浓度不高,发射的电子少,同时由于发射区面积小,最终收集的电子也少,形成的电流很小,因此三极管没有放大能力。倒置状态的三极管β是小于1的。当增大“倒置”三极管的基极电流时,倒置的三极管也可以进入饱和状态,但这时基极电流较大,同时管子的导通压降比正接时要小得多。 3、对三极管倒置放大的理解       ①三极管工作于倒置状态时相当于把发射极与集电极对调使用(即集电极当作发射极使用,发射极当作集电极使用),倒置时的三极管同样具有三种工作状态。但是等效集电极电流(IE)与基极电流的比值即β要比正接时小得多,所以要使倒置的三极管进入饱和区,所需的基极驱动电流要比正接时大得多,但是倒置时的管压降要比正接时的小。 4、三极管倒置状态的应用       ①TTL 数字集成电路中作为信号输入用的多发射极三极管, 当输入为高电平1 时,就是一个倒置使用的三极管。三极管在倒置使用时,它的两个PN 结的偏置情况与工作在放大状态时是相反的:发射结反向偏置,集电结正向偏置。因此,集电结可能烧毁,而发射结可能击穿。但是,由于工作于倒置状态的三极管的电压放大倍数β通常很小, 如平面三极管倒置使用时的β值约为0.1~0.5,因此一般不会出现烧坏的情况。目前已经很少使用三极管作倒置状态。       ②在使用万用表检测判断三极管的三个电极时,可以通过“三颠倒”方法找到基极和并判断三极管的管型,而集电极和发射极的判断就需使用三极管的倒置状态。以NPN型三极管为例,万用表选择欧姆档的R×100 或R×1K量程,按照图1所示,用手指捏住三极管的基极和未知电极,将万用表黑表笔接未知电极Y,红表笔接X极,观察表针偏转角度。再按照图2所示连接,观察表针偏转角度。比较两次指针偏转角度,偏转大的那一次黑表笔接的是集电极。这种判断方法的两种接线方式对应了三极管的两种状态:放大状态和倒置状态。其中指针偏转小的那次,黑表笔(万用表内直流电源正极)接三极管的发射极。此时,三极管三个电极的电位关系为UE>UB>UC ,三极管工作在倒置状态,万用表表针偏转所通过的电流为发射极电流,因为这个电流较小,所以指针偏转较小。另一种接线方式对应为三极管的放大状态,通过指针的电流为集电极电流这个电流较大,对应万用表的指针偏转也较大。

  • 2019-02-16
  • 发表了主题帖: MSP430F5438A升级失败

    升级流程及问题。后来由于项目需要无线升级,而且APP程序有20K,包含多个中断。为了采用中断向量重映射,而不是重写中断向量表,因此APP程序和BSL程序使用的中断不同。 项目过程遇到一个棘手问题:升级成功后,再次升级时,快升级结束时(APP程序一共123包,每次都是死在120、121包)程序跑飞。经过单步跟踪,发现跑到0x0000,然后往下执行到0x0004,进入死循环。 想到在MSP430F5438A无线升级中遇到的同样问题,开始找中断的原因。找了一遍,发现所有中断都写了中断服务程序,并且对APP中的中断都做了重映射。 然后通过打断点运行,发现问题跟断点位置也有关系。而且更奇怪的是:偶尔BSL程序复位,而不是跳到0x0000。在网上搜索相关问题,有说是时序的问题,有说是内存异常问题。 根据之前遇到的中断的问题,主要在中断和时序上寻找问题原因。想到APP程序跳转到BSL时,没有对APP程序中的中断进行屏蔽。跳转之前,屏蔽APP程序中的中断之后,无线升级运行正常。问题解决。 之后琢磨,是不是BSL做升级时,APP里的中断得到响应,然后BSL程序做了中断向量重映射,最终跳到重映射地址。由于APP的中断向量表放在存储APP程序末尾的flash中。而120、121包正好需要擦除存放APP中断向量表的flash。擦除后的数据为0x0000。因此经常跳到0x000地址,导致升级失败。

  • 发表了主题帖: 教你写单片机定时器中断程序

    我们在学单片机时我们第一个例程就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再干其它的事了,难道单片机只能这样工作吗?当然不是,我们能用定时器来实现灯的闪烁的功能。 例1:查询方式 ORG 0000H AJMP START ORG 30H START: MOV P1,#0FFH ;关所 灯 MOV TMOD,#00000001B ;定时/计数器0工作于方式1 MOV TH0,#15H MOV TL0,#0A0H ;即数5536 SETB TR0 ;定时/计数器0开始运行 LOOP:JBC TF0,NEXT ;如果TF0等于1,则清TF0并转NEXT处 AJMP LOOP ;不然跳转到LOOP处运行 NEXT:CPL P1.0 MOV TH0,#15H MOV TL0,#9FH;重置定时/计数器的初值 AJMP LOOP END AJMP LOOP END 键入程序,看到了什么?灯在闪烁了,这可是用定时器做的,不再是主程序的循环了。简单地分析一下程序,为什么用JBC呢?TF0是定时/计数器0的溢出标记位,当定时器产生溢出后,该位由0变1,所以查询该位 就可知宇时时间是否已到。该位为1后,要用软件将标记位清0,以便下一次定时是间到时该位由0变1,所以用了JBC指令,该指位在判1转移的同时,还将该位清0。 以上程序是能实现灯的闪烁了,可是主程序除了让灯闪烁外,还是不能做其他的事啊!不,不对,我们能在LOOP:……和AJMP LOOP指令之间插入一些指令来做其他的事情,只要保证执行这些指令的时间少于定时时间就行了。那我们在用软件延时程序的时候不是也能用一些指令来替代DJNZ吗?是的,但是那就要求你精确计算所用指令的时间,然后再减去对应的DJNZ循环次数,很不方便,而现在只要求所用指令的时间少于定时时间就行,显然要求低了。当然,这样的办法还是不好,所以我们常用以下的办法来实现。 程序2:用中断实现 ORG 0000H, AJMP START ORG 000BH ;定时器0的中断向量地址 AJMP TIME0 ;跳转到真正的定时器程序处 ORG 30H START: MOV P1,#0FFH ;关所 灯 MOV TMOD,#00000001B ;定时/计数器0工作于方式1 MOV TH0,#15H MOV TL0,#0A0H ;即数5536 SETB EA ;开总中断允许 SETB ET0 ;开定时/计数器0允许 SETB TR0 ;定时/计数器0开始运行 LOOP: AJMP LOOP ;真正工作时,这里可写任意程序 TIME0: ;定时器0的中断处理程序 PUSH ACC PUSH PSW ;将PSW和ACC推入堆栈保护 CPL P1.0 MOV TH0,#15H MOV TL0,#0A0H ;重置定时常数 POP PSW POP ACC RETI END 上面的例程中,定时时间一到,TF0由0变1,就会引发中断,CPU将自动转至000B处寻找程序并执行,由于留给定时器中断的空间只有8个字节,显然不足以写下所有有中断处理程序,所以在000B处安排一条跳转指令,转到实际处理中断的程序处,这样,中断程序能写在任意地方,也能写任意长度了。进入定时中断后,首先要保存当前的一些状态,程序中只演示了保存存ACC和PSW,实际工作中应该根据需要将可能会改变的单元的值都推入堆栈进行保护(本程序中实际不需保存护任何值,这里只作个演示)。 上面的两个单片机程序运行后,我们发现灯的闪烁非常快,根本分辨不出来,只是视觉上感到灯有些晃动而已,为什么呢?我们能计算一下,定时器中预置的数是5536,所以每计60000个脉冲就是定时时间到,这60000个脉冲的时间是多少呢?我们的晶体震荡器是12M,所以就是60000微秒,即60毫秒,因此速度是非常快的。如果我想实现一个1S的定时,该怎么办呢?下面给出一个例程。 ORG 0000H AJMP START ORG 000BH ;定时器0的中断向量地址 AJMP TIME0 ;跳转到真正的定时器程序处 ORG 30H START: MOV P1,#0FFH ;关所 灯 MOV 30H,#00H ;软件计数器预清0 MOV TMOD,#00000001B ;定时/计数器0工作于方式1 MOV TH0,#3CH MOV TL0,#0B0H ;即数15536 SETB EA ;开总中断允许 SETB ET0 ;开定时/计数器0允许 SETB TR0 ;定时/计数器0开始运行 LOOP: AJMP LOOP ;真正工作时,这里可写任意程序 TIME0: ;定时器0的中断处理程序 PUSH ACC PUSH PSW ;将PSW和ACC推入堆栈保护 INC 30H MOV A,30H CJNE A,#20,T_RET ;30H单元中的值到了20了吗? T_L1: CPL P1.0 ;到了,取反P10 MOV 30H,#0 ;清软件计数器 T_RET: MOV TH0,#15H MOV TL0,#9FH ;重置定时常数 POP PSW POP ACC RETI END 先自己分析一下,看看是怎么实现的?这里采用了软件计数器的概念,思路是这样的,先用定时/计数器0做一个50毫秒的定时器,定时是间到了以后并不是立即取反P10,而是将软件计数器中的值加1,如果软件计数器计到了20,就取反P10,并清掉软件计数器中的值,不然直接返回,这样,就变成了20次定时中断才取反一次P10,因此定时时间就延长了成了20*50即1000毫秒了。 这个思路在工程中是非常有用的,有的时候我们需要若干个定时器,可51中总共才有2个,怎么办呢?其实,只要这几个定时的时间有一定的公约数,我们就能用软件定时器加以实现,如我要实现P10口所接灯按1S每次,而P11口所接灯按2S每次闪烁,怎么实现呢?对了我们用两个计数器,一个在它计到20时,取反P10,并清零,就如上面所示,另一个计到40取反P11,然后清0,不就行了吗?这部份的程序如下 ORG 0000H AJMP START ORG 000BH ;定时器0的中断向量地址 AJMP TIME0 ;跳转到真正的定时器程序处 ORG 30H START: MOV P1,#0FFH ;关所 灯 MOV 30H,#00H ;软件计数器预清0 MOV TMOD,#00000001B ;定时/计数器0工作于方式1 MOV TH0,#3CH MOV TL0,#0B0H ;即数15536 SETB EA ;开总中断允许 SETB ET0 ;开定时/计数器0允许 SETB TR0 ;定时/计数器0开始运行 LOOP: AJMP LOOP ;真正工作时,这里可写任意程序 TIME0: ;定时器0的中断处理程序 PUSH ACC PUSH PSW ;将PSW和ACC推入堆栈保护 INC 30H INC 31H ;两个计数器都加1 MOV A,30H CJNE A,#20,T_NEXT ;30H单元中的值到了20了吗? T_L1: CPL P1.0 ;到了,取反P10 MOV 30H,#0 ;清软件计数器 T_NEXT: MOV A,31H CJNE A,#40,T_RET ;31h单元中的值到40了吗? T_L2: CPL P1.1 MOV 31H,#0 ;到了,取反P11,清计数器,返回 T_RET: MOV TH0,#15H MOV TL0,#9FH ;重置定时常数 POP PSW POP ACC RETI END

  • 发表了主题帖: MSP-FET430UIF在windows7安装不上驱动经验分享

    一直在windows7操作系统上正常使用的仿真器,在仿真器升级成V3固件后,在windows7上识别不了驱动,反复尝试设备管理器里端口始终有黄色感叹号。       先在网上上搜索各种方法,比如查看windows-inf中mdmcpq.inf  以及windows-system32-drivers-usbser.sys是否完整,都确认无问题,最后反复尝试,发现原因是:V2版是VCP驱动程序,V3版时CDC驱动程序,因驱动程序与固件不匹配导致驱动上载不成功。        我电脑里之前是安装的FET-Pro430 Lite 是V2.8的,其对应的驱动文件是VCP程序,当MSP430仿真器的固件版本升级成V3后,使用FET-Pro430 Lite 是V2.8驱动是识别不了的,所以只需将FET-Pro430 Lite升级成V3.0以上的版本,安装软件过程中把驱动安装也勾选更新了(安装包中附带有V3版时CDC驱动程序),最后即可解决该问题。

  • 发表了主题帖: MSP430 FR2xx系列 MCU BSL与MSP432 P系列MCU BSL对比汇总

    引导加载程序 (BSL) 是内置到 MSP 低功耗微控制器 (MCU) 中的应用。借助该应用,用户可以与 MCU 通信,以便从其存储器中读取数据或向其中写入数据。该功能主要用于在原型设计、最终生产和服务期间对器件进行编程。可以根据需要修改可编程存储器(闪存或 FRAM)和数据存储器 (RAM)。不同的 BSL 可提供与之通信的不同外设,例如 UART、I2C、SPI 或 USB。本文将对MSP430 FR2xx系列MCU与MSP432 P系列MCU的BSL进行总结性对比。1   MSP BSL总览https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/0003.aa.png图1 MSP430 FR2xx_4xx与MSP432 BSL总览图1为MSP430 FR2xx_4xx系列MCU与MSP432 P系列BSL的总览。本文将以最新的FRAM系列MCU MSP430FR235x/215x与MSP432P401R为例,对这两款MCU的BSL进行比较。2   MSP430FR2xx与MSP432 P系列BSL比较2.1   BSL 通用功能2.1.1 BSL memory对于MSP430FR235x/215x,其BSL代码的memory存在于ROM中,大小为3kB,前2kB的地址区间为0x1000 - 0x17FF,后1kB地址区间为0xFFC00 - 0xFFFFF。因为该代码存在于ROM中,所以用户不能修改。对于MSP432P401R,其BSL代码的memory存在于Flash中,大小为8kB,地址区间为0x00202000 - 0x00203FFF。对于MSP430FR235x/215x,如果要实现定制化的BSL,则需要占用FRAM中的部分资源来实现,MSP430FR2xxx的客制化BSL源代码及工程文件见:MSP430FRBoot  1_01_00_00。MSP32的BSL代码的起始地址可以通过Flash Mailbox中的BSL Start Address寄存器修改,见图2。Flash中的代码内容也是用户可以自定义修改的,MSP432P401R的BSL源代码及工程文件见:MSPBSL_CustomBSL432  1_01_00_00。https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/bb.png图2 BSL代码起始地址2.1.2 BSL 配置对于MSP432P401R,其BSL外设默认端口引脚可以通过TLV进行配置,具体配置数据如图3,https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/cc.png图3 BSL配置数据同时,MSP432P401R支持用户自定义配置,如BSL功能使能,I2C slave address及BSL invocation引脚及状态配置等,具体配置见图4。这些自定义配置通过Boot override flash mailbox实现。https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/dd.png图4 Boot Override Flash Mailbox2.1.3 BSL串行接口对于MSP430FR235x/215x,BSL串行接口支持UART和I2C接口,对于MSP432P401R,其不仅支持UART和I2C接口,还支持SPI接口。2.2 BSL协议MSP430FR235x/215x和MSP432P401R使用的都是“5xx, 6xx”系列的协议,它们的command基本是相同的,BSL数据包格式如图5,详细数据包格式见BSL用户手册。需要注意的是,由于MSP432P401R的flash更大,其具有32bit的寻址空间,所以它还具有32位地址操作的BSL协议指令。另外,MSP430FR235x/215x的mass erase命令是不需要BSL密码的,而MSP432P401R的mass erase,Sector erase命令都受BSL密码保护。https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/5340.ee.png图5 BSL数据包格式2.3 BSL进入方式MSP430FR235x/215x和MSP432P401R BSL均有3中进入方式:1、空片自动进入BSL;2、软件调用;3、硬件时序进入。2.3.1 空片入口指复位向量为全F时(MSP430FR235x/215x为0xFFFF,MSP432P401R为0xFFFFFFFF),BSL会被Bootcode自动唤醒。复位向量放置的是用户程序的首地址,如果复位向量为全F,则该芯片没有用户程序。Bootcode在执行过程中通过检测复位向量中的内容确定该芯片是否为空片,如果为空片,则唤醒BSL。该功能可用于产品量产时,对芯片批量快速烧写。2.3.2 软件调用对于MSP430FR235x/215x,其BSL程序的入口地址为0x1000,将PC指针指向0x1000即可唤醒BSL。例程代码如下:__disable_interrupt(); // disable interrupts((void (*)())0x1000)(); // jump to BSL对于FRAM系列的MCU,这里有3点额外的注意事项:1、唤醒BSL前需要禁用总中断;2、由于FRAM最高支持8MHz的时钟频率,在唤醒BSL前需要将MCLK的频率设定为小于等于8MHz;3、BSL默认使用的定时器Timer模块如果在应用程序中被调用,且没有复位就进入BSL唤醒程序,这样就会影响BSL程序的执行,所以需要在BSL唤醒前对该Timer进行复位。对于MSP432P401R,其BSL程序的入口地址默认为0x00202000,同时其入口函数支持参数配置。需要注意的是,MSP432调用BSL程序前,也需要禁用总中断。例程代码如下:#define BSL_PARAM 0xFC48FFFF // I2C slave address = 0x48, Interface selection = Auto#define BSL_API_TABLE_ADDR 0x00202000 // Address of BSL API table#define BSL_ENTRY_FUNCTION (*((uint32_t *)BSL_API_TABLE_ADDR))MAP_Interrupt_disableMaster();NVIC->ICER[0] = 0xFFFF;NVIC->ICPR[0] = 0xFFFF;NVIC->ICER[1] = 0xFFFF;NVIC->ICPR[1] = 0xFFFF;((void (*)())BSL_ENTRY_FUNCTION)((uint32_t)BSL_PARAM); // Call the BSL with given BSL parameters2.3.3硬件时序进入对于MSP430FR235x/215x,其通过RESET和TEST脚的固定时序唤醒BSL,如图6。https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/7416.ff.png图6 硬件时序唤醒BSL对于MSP432P401R,其可以通过启动阶段用户指定的IO的电平状态来唤醒BSL。需要用户提前对mailbox进行配置。以P1.0脚高电平唤醒为例,其时序图如图7。https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/0844.gg.png图7 GPIO输入时序唤醒BSL2.4 BSL工具支持2.4.1硬件工具BSL的官方硬件工具有MSP-BSL ‘Rocket’和MSP-FET,其主要是给MSP430FR235x/215x在非空片状态下提供RST脚和TEST脚的硬件时序,来唤醒BSL。对于空片BSL唤醒,软件BSL唤醒及MSP432的硬件输入顺序唤醒来说,其只需要一个UART就可以实现BSL下载。2.4.2 软件工具BSL的官方软件工具为BSL Scripter,其将用户的命令及TXT格式的用户代码按照BSL协议的封包格式通过串行接口发送给芯片,或者将芯片中memory中的数据读回。脚本文件中通过指令MODE FRxx或者MODE P4xx区分MSP430 FRAM系列或者MSP432系列的MCU,其余命令部分可以通用。2.5 BSL安全性2.5.1 BSL密码对于MSP430FR235x/215x,其提供32 Bytes的BSL密码保护,即当BSL密码正确时,才会执行密码保护的BSL命令。密码所在地址为FRAM中0xFFE0到0xFFFF的地址,该地址区域也是硬件中断的地址区域。一般情况下,编译器会将中断服务程序的首地址存放在中断向量表中,而没有用到的中断向量,编译器一般也会自动映射到硬件错误函数。所以,用户在手动修改BSL密码时,需要注意不能修改程序中已经使用到的中断向量地址中的内容。对于MSP432P401R,其提供256 Bytes的BSL密码保护,密码所在地址为Flash中0x00到0x40的地址,该地址默认也是中断向量的地址。用户在手动修改时也需要注意和MSP430同样的问题。2.5.2 密码错误时执行Mass eraseMSP430和MSP432均具有当BSL密码错误时执行Mass erase的功能。该功能增加了用户调试的方便性,只需要发送一次错误密码,就能够让芯片自动擦除memory,下次执行BSL命令只需要发送默认密码(全F)即可。在MSP430 FRAM系列MCU中,该功能的使能和禁用通过BSL signature配置,FRAM中地址区间为FF84h - FF87h。当数据为全5时,BSL功能被禁用;当为全A时,BSL受密码保护,密码错误时的Mass erase功能被禁用,用户在量产时可以使能该功能;当为其他的值时,密码错误时的Mass erase功能被使能。https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/6283.hh.png图8 MSP430 BSL SignatureMSP432中,该功能是由BSL代码实现的,如果要禁用该功能,需要用户修改BSL源代码。另外补充一点,MSP432 BSL支持payload加密功能。

  • 2019-02-15
  • 发表了主题帖: 2812FALSH内程序自启动的一种简单方法

    2812FALSH内程序自启动的一种简单方法

  • 发表了主题帖: 漫谈RF5架构

    RF5是德州仪器TI公司新近推出的DSP软件开发的起步代码参考框架,它以DSP/BIOS为基础,利用其中的数据处理元素和数据通信元素方便快捷地完成DSP软件的设计与开发。RF5是RF的最新版本,其区别于RF1和RF3的显著特点是其支持动态对象创建和支持线程(任务)挂起功能,因此适合系统较复杂的应用场合。 RF5 主要实现三个功能,存储管理,线程模型和通道封装,对于不同的应用,我们只需在这三个元素上做修改,而对于整个应用程序,不用从头设计,这样大大简化了开发者的开发难度,缩短了开发时间。       RF5适用于包含大量的算法,且要求多线程,多通道的应用,如图像处理,多媒体应用等,以Ti提供的实例mpeg2loopback为例,对RF5进行分析。       RF5包含的元素有: 1 线程(Thread):       RF5框架包含四个基本的数据处理元素,处在最顶层的是线程,线程总是顺序的执行所包含的通道,线程在一个比较高级的级别上把数据组织在一起,他们可以与别的线程,设备驱动以及别的类似结构进行通讯,在mpeg2lookback实例中,创建了三个线程分别是tskVideoInput, tskVideoOutput和tskProcess。每个线程都在不断的等待消息,处理数据,并将结果发送给其他的线程,同时有可能还要发送同步消息给其他线程以实现线程间的通讯,这里使用的机制是SCOM模块。       每个线程都是进行数据处理的一个单元,有的处理是简单的,有的处理是相对复杂的过程,简单的线程可以不包括任何的通道,而进行复杂数据处理的线程有可能包含多个的通道。 2 通道(Channel):       RF5提供了一种通道结构是为了更方便的封装算法,这可以理解通道为并行里的串行,因为线程的执行就是由通道的串行执行来完成的,一个通道包含一组核(Icell)。其主要任务就是依次顺序的执行所包含的核,主要执行的流程为:首先需要初始化通道模块,然后建立通道对象,注册该通道所包含的核对象,接着依次执行每个核,执行完成了后就销毁对象,最后退出。每个通道可以包含多个核,每个核都要进行初始化后再调用CHAN_regCell注册。 通道对象的结构如下: typedef struct CHAN_Obj {      ICELL_Obj *cellSet;          /* set of cells in the channel */      Uns cellCnt;                 /* number of cells in the cellSet */      CHAN_State state;            /* state of the channel */      Bool (*chanControlCB)(CHAN_Handle chanHandle); /* optional control function */ } CHAN_Obj;       线程一般不定义通道对象,但是在CHAN_open()调用中初始化它们。CHAN_open()的最后一个参数是通道属性(CHAN_Attrs)结构体的地址。如果最后一个参数是NULL,那么CHAN_open()使用默认的参数。如果要想使用不同的参数,就要声明一个CHAN_Attrs的结构体,并需初始化为CHAN_ATTRS宏所定义的初值,然后根据需要可以修改其中相应的域的值。通常,其中的通道状态参数CHAN_State state域默认为CHAN_ACTIVE,通道控制回调函数参数域Bool (*chanControlCB)(CHAN_Handle chanHandle)默认为NULL。如果通道控制回调函数不是空,那么在任何的cell调用执行之前都会先调用此回调函数。      一个典型的设置:一个线程为每一个通道建立一个CHAN_Obj对象(或者一组类似的对象),并且为每一个cell建立一个ICELL_Obj对象(或者是与每个通道相对应的一组ICCE_Obj对象)。在线程初始化ICELL_Obj之后就会调用下面的函数: 备注其中的cell 指向cell 对象的指针, inputIcc/outputIcc是相应的cell的 ICC 对象,这个调用计算单元需要的空间,并分配给定的ICC对象给单元cell。    CHAN_regCell( cell, inputIcc, 1, outputIcc, 1 );    当所有的cells都已经创建并初始化之后,线程调用CHAN_open()函数来为每一个指定的通道(chanNum)传递cell对象(cellList)。这个函数创建所有的XDAIS算法,并且如果单元细胞定义了cellOpen函数,则会调用每一个单元细胞的cellOpen函数,.    CHAN_open( chanList[ chanNum ], cellList, numCells, NULL/* default attributes */ ); 最后,在运行时,线程为每一个通道(chanNum)调用CHAN_execute函数开始执行:    CHAN_execute( chanList[ chanNum ], NULL /* arg to cells */ ); 3 核(Icell):       核实际上就是ICELL接口对象,基于RF5的应用常常包含大量的算法和通道。为了便于算法集中到应用中,RF5提出了核的概念。一个核就是包含一种 XDAIS算法的容器,一个RF5通道对象可以包含多个核,也即是包含多个算法。通道通过核来调用算法,实际上,真正的数据处理是在XDAIS算法中进行的,核只是提供一个调用算法的接口,这大大简化了工作量,便于移植。       该接口包含一个重要的结构:ICELL_Fxns,该结构包含一组函数指针。通道通过调用这些函数来调用算法,其中包含一个关键的函数 cellExecute,这个函数的功能是调用XDAIS算法来执行,上面的通道执行函数CHAN_execute就包含了每个cellExecute的调用。 4 ICC模块       ICC模块是用来管理在核之间以及核与其他线程之间的数据通讯,我们知道线程间的数据传输是通过SCOM模块来实现的,每个ICC模块管理一个或者多个 ICC对象,每个核都有一组输入和输出ICC对象。这些对象是通过CHAN_regCell()来注册到相应的通道里。 5 同步通讯机制(SCOM)       ThrProcess中包含两个SCOM对象,RF5使用SCOM对象来实现线程间的通讯。SCOM消息是用户自定义的一个机构,一个线程通过调用 SCOM_putMsg()函数将SCOM消息放置到一个SCOM队列中,发送给其他的线程,或者通过调用SCOM_getMsg()函数从队列中获取消息。一般情况下,发送消息指明接收线程所要读取的数据缓冲区的地址(以指针形式),接收消息指明发送线程所要写入的数据缓冲区的地址。在 mape2loopback实例中,thrProcess要从thraVideoInput接收消息,并发送消息给thrVideoOutput输出图像。RF5使用SCOM来实现线程间的通讯:thrProcess拥有一些缓冲区,需要thrVideoInput写或thrVideoOutput读,所以thrProcess通过SCOM告诉thrVideoIput和thrVideoOutput线程数据缓冲区的地址,同时还要保证两个线程不会同时访问同一个缓冲区。thrProcess创建了两种消息以分别和两个线程进行通讯,scomMsgRx和scomMsgTx。scomMsgRx指定了被 thrVideoInput写的缓冲区地址,scomMsgTx指定了被thrVideoOutput读的缓冲区地址。       在实际的操作中,可以将SCOM看作是一种同步标记,它用来区分模块内存是否正在被其他线程所使用,这样就可以防止内存访问的冲突。整个系统中包含很多存储区,这些存储区很有可能在某一时刻正在被某一线程访问,为了保证在任意时刻只有一个线程访问某该存储区,当前正在访问这一内存块的线程通过发送SCOM消息给与这一内存块有关联的线程,告诉它们,“我正在访问呢,你等会再来吧”。当它访问完后,放弃了这一内存块的占有权,再通过SCOM消息告诉相关联的线程,“我用完了,你可以用了。”于是相关联的线程就可以访问了。 6 ALGRF模块—算法的实例化Algorithm Instantiation ALGRF Module用DSP/BIOSMEM内存管理器来创建和删除XDAIS算法的模块。参考框架服务简化XDAIS部件的使用。所有符合XDAIS标准的算法都必须使用一个标准的接口——IALG接口。ALGRF使用算法的IALG来实现对XDAIS算法的实例化。任何符合XDAIS标准的算法都可以被 ALGRF所使用。 用户代码不必直接的调用ALGRF函数,这个工作由CHAN和其他的库函数来完成。例外的是cell wrappers中的ALGRF_activate/deactivate序列化:如果cell中的XDAIS算法执行 IALG_active/deactivate函数,细胞需要调用两个ALGRF函数来完成。 三个模块来简化IALG接口创建算法对象:RF5使用ALGRF模块来创建,配置,删除XDAIS算法实例;ALG模块使用CCStudio作为通用目的使用;并且不用DSP/BIOS MEM模块分配内存。ALGMIN是三个中的最小应用。 一般情况下,三个模块是相互包含的,但是只有一个能在应用程序中使用。ALGRF适于RF5的需要和别的RF级别,而不适合紧凑和底端的如RF1级别的系统。 ALGRF与ALG相比,有以下的优势: 1 更小的代码脚本(代码量): 作为一个通用的模块,ALG支持malloc/free 运行库和DSP/BIOS MEM_alloc/MEM_free动态内存分配方式,ALGRF只支持DSP/BIOS分配,这为设计者省了代码空间,另外ALGRF保证没有无用代码的存在。只有被调用的函数才被连接到执行程序中。 2 暂存区支持:   下面为API在ALGRF中介绍的实例: ALGRF_Handle ALGRF_createScratchSupport(IALG_Fxns *fxns, IALG_Handle parent, IALG_Params *params, Void *scratchBuf, Uns scratchSize) 除了当IALG_SCRATCH内存区域(内部数据缓冲区)被请求,该函数能根据算法请求分配内存。作为替代,scratchBuf和 scratchSize这两个参数表明这一缓冲区已经在应用中存在,而且可以被当前的算法重新使用。这就可以受约束的共享资源有限的内存区。 3 从DSP/BIOS堆标签中做提取:   ALGRF使用DSP/BIOS 的MEM模块动态分配内存。一个堆标记或内存段名可以传给 MEM_alloc()来表明分配到哪一个堆.如下:      /* Configure the ALGRF module to use:      * 1st argument - memory for internal heap      * 2nd argument - memory for external heap      */   ALGRF_setup( INTERNALHEAP, EXTERNALHEAP );   这让我们可以指定算法的数据分配位置。例如,如果使用EXTERNALHEAP作为两个参数,那么算法的数据就被定位在外部存储器。   

  • 发表了主题帖: DSP核+协处理器

           这类DSP一般针对某一类应用集成专用的协处理器,从而对DSP实现算法加速。TI的研究表明,对于像MPEG4编解码这样的任务,使用协处理器可以降低50%的DSP负荷,从而平衡系统功耗。        TI 公司的高性能数字信号处理器TMS320C6416是这类多核DSP的典型代表。该DSP除了包含一个功能强大的C64x DSP核之外,还集成了一个维特比协处理器(VCP)和一个Turbo解码协处理器。其中维特比协处理器用于语音和低码率数据通道解码,支持500个 8Kb/s码率的语音通道,并且可以对强制长度、码率和帧长度等解码参数进行编程。Turbo协处理器用于高码率数据通道的解码,支持35个 384Kb/s码率的数据通道。        另外一个例子就是Motorola 公司的MSC8126 多核DSP。该DSP集成了4颗StarCoreTM DSP核、一个Turbo协处理器、一个维特比协处理器、UART接口、4个TDM串行接口、32个通用定时器、以太网接口及16通道DMA。该DSP在 最先进的90nm工艺下生产,在400MHz主频下,其4个扩展内核可以达到最高每秒6400MMAC(百万次乘加操作)的性能。除了每个DSP核内包含 228KB的M1存储器之外,片内还集成了476KB的共享M2存储器。支持可变长指令是该DSP的另外一个特点。        多核DSP面临的挑战        低功耗        多核DSP 带来了更高的性能,但它相比传统的单核DSP也带来了更大的功耗。嵌入式应用,例如手机、数码相机等对功耗非常敏感。在2G通信时代习惯了200小时待机 时间的手机用户很难接受待机时间仅仅为一天的3G手机。因此多核DSP面临的第一个挑战就是如何有效的降低平均功耗。        从硬件技术上来看,可以采用动态电源管理技术,设置全速、半速、休眠等工作模式,根据当前的任务强度和功耗监测信息,及时调整电压和频率,关闭暂时不使用的模块,以降低功耗。另外,根据特定的应用需求,设置专门的协处理器,同样可以减少DSP内核的运算强度。         从软件技术上来看,在编译指导下的多核DSP低功耗优化技术非常具有潜力。低功耗编译技术主要包括编译指导的动态电压调节、多线程功耗模型下的低功耗编译调度等。在操作系统的支持下,通过合理的调度,使处理器资源与算法需求相适应,例如在DSP核+MCU的模式下,MCU就不应该处理DSP的有关程序。        互连与存储系统        随着芯片面积的增大,长线互连延迟和信号完整性已经成为制约芯片主频的关键因素。当片上DSP 核较少时,可用简单的总线结构或者Crossbar互连;当DSP核较多时可用二维mesh网络、3D Torus等进行互连,设计者必须在网络开销以及多核之间耦合的程度之间进行权衡,同时还要注意互连拓扑的可扩展性。为提高互连性能,应该采用高频、高带 宽的超深亚微米片上互连结构,以便高效地实现节点间通信。         针对数据密集型的应用,多核DSP必须解决存储系统的效率问题。为此,必须要解决一系列关键技术,例如应该设计多大的片内存储器?数据的共享和通信在存储层次的哪一级来完成?Cache一致性在哪一级实现更合理?是通过片内共享存储器还是高速总线进行多核之间的通信?存储结构如何支持多线程的应用?         编译技术与操作系统         多核DSP 能否发挥最高的性能,在很大程度上取决于编译优化和嵌入式操作系统的有力支持。例如,多核DSP对多线程程序能够提供较高的性能,但是对于单线程应用的性 能反而不高,甚至比单核DSP的性能还要低,从而出现“三个臭皮匠不顶一个诸葛亮”的尴尬局面。        采用硬件动态提取线程是一种方法,但编译器更要担负起自动并行化的工作,即将串行程序自动地转换为等价的多线程并行代码,使用户不关心迭代空间划分、数据共享、线程调度和同步等细节,减轻用户负担。       更重要的是多线程优化编译技术,包括线程并发机制的实现、线程调度、线程级前瞻执行等技术。       多核之间的任务调度是充分利用多处理器性能的关键。为满足实时处理的要求,均衡各处理器负载,需要研究的任务调度机制有分布式实时任务调度算法、动态任务迁移技术等。已有的几种嵌入式操作系统,例如μcLinux、PalmOS、WinCE等,都还无法有效地支持多核处理器。嵌入式多核操作系统的研究任重而道远。      应用开发环境       嵌入式应用的特点决定了开发人员必须能够在很短的时间内推出能够为市场所接受的应用系统。为此,多核DSP供应商必须为用户提供简便易用的开发、调试环境。但是面向多核处理器的编程环境始终是不成熟的,并行程序开发技术一直难以普及。        为此,我们可以借鉴多核通用微处理器的编程模式,即消息传递程序设计模式MPI 和基于编译指导命令的程序设计模式OpenMP。但是,最终的发展趋势还将是集成化的VSP(Virtual Single Processor,虚拟单处理器模型)开发环境,在这一环境下用户能够像开发单处理器程序一样去开发多核应用系统,在同一平台上完成编程、调试、编译优 化和连机测试的过程。        例如,Cradle 公司在推出CT3600系列多核DSP的同时,还推出了相应的多核开发工具,包括ANSI C编译器、针对DSP进行了时序优化的Cradle C语言、eCOS实时操作系统、INSPECTORTM代码开发与调试器和RDS3600硬件开发平台等,从而为用户提供了一揽子的解决方案。  

  • 发表了主题帖: 数字化控制系统在智能家居领域运用

           21世纪是信息化的世纪,各种电信和互联网新技术推动了人类文明的巨大进步。数字化家居控制系统可以使得人们可以通过手机或电话在任何时候、任意地点对家中的任意电器(空调、热水器、电饭煲、灯光、音响、DVD录像机)进行远程控制;也可以在下班途中,预先将家中的空调打开、让热水器提前烧好热水、电饭煲煮好香喷喷的米饭;而这一切的实现都仅仅是打一个简单的电话。   此外,该系统还可使家庭具有多途径报警、远程监控等多种功能,如果不幸出现某种险情,您和110可以在第一时间获得通知以便进一步采取行动。舒适、时尚的家居生活是社会进步的标志,智能家居控制系统能够在不改变家中任何家电的情况下,对家里的电器、灯光、电源、家庭环境进行方便地控制,使人们尽享高科技带来的简便而时尚的现代生活。   实现智能化离不开运算和控制单元,本系统采用MCU(SM8952AC25P)作为主控器件,单片机应用系统由硬件和软件组成。硬件由单片机扩展的存储器、输入/出设备以及各种实现单片机系统控制要求的接口电路和有关的外围电路芯片或部件组成;软件由单片机应用系统实现其特定控制功能的各种工作程序和管理程序组成。 数字化控制系统在智能家居领域运用解析   在单片机应用系统开发的过程中,应不断调整软、硬件,协调地进行软、硬件设计,以提高工作效率,当系统硬件和软件紧密配合、协调一致,就可以组成高性能的单片机应用系统。本课题完成了单片机应用系统其开发过程的系统的总体设计、硬件设计、软件设计和系统调试,根据开发的实际需要,相互协调、交叉,有机的进行。

  • 发表了主题帖: 基于物联网的道路照明系统解决方案

    1 引言   随着城市经济和规模的发展,各种类型的道路越来越长,机动车数量迅速增加,夜间交通流量也越来越大,道路照明质量直接影响交通安全和城市发展。如何提高道路照明质量、降低能耗、实现绿色照明已成为城市照明的关键问题。道路照明的首要任务是在节约公共能源的基础上,提供安全和舒适的照明亮度,达到减少交通事故,提升交通运输效率的目的。由于基础设施的条件所限,目前普遍缺少路灯级的通信链路,路灯控制方式一般只能对整条道路统一控制,无法测量和控制到每一盏灯。本文基于物联网,设计了一种嵌入式无线路灯控制模块,实现了每盏路灯的无线自主组网,使每一盏路灯都能遥测和遥控,与路灯设施中的一些单元(如电子镇流器等)连接,达到路灯的亮度(或照度)在30%~100%无级可调,在保证道路照明质量、改善辨认可靠和视觉舒适情况下,根据环境光强度和时段,节约电能20~30%。   2 系统结构      基于物联网道路照明系统的结构如图1所示,通过在每盏路灯嵌入一个无线通信模块,使它们自组网络,接受控制中心的命令并将路灯的状态反馈给控制中心;HG-2控制箱采用ZigBee技术与所管辖道路的所有路灯通信,采用GPRS与控制中心通信,根据控制中心的指令或时间和日照亮度对每盏路灯发出控制命令(路灯开启、关闭、照明度(功率大小)等),自动调节整条道路的功率平衡;控制中心由服务器、大屏显示、CenterView中央控制系统软件平台等组成,CenterView中央控制系统软件平台采用3D设计,通过缩放变换以俯视的角度观察和控制到整个城市、一个街道、一条道路、甚至一盏路灯的照明情况;移动计算工具(笔记本电脑、PDA、手机)和路灯维护车也能通过控制中心进行远程遥测和遥控。        3 无线通信模块 3.1 模块设计   无线通信模块MC13213,MC13213采用SiP技术在9×9mm的LGA封装内集成了MC9S08GT主控MCU和MC1320x射频收发器。MC13213拥有4KB的RAM、60KB的FLASH,具有1个串行外设接口(SerialPeripheralInterface,SPI),2个异步串行通信接口(SerialCommunicationsInterface,SCI),1个键盘中断模块(KeyboardInterrupt,KBI),2个定时器/脉宽调制模块(Timer/PWM,TPM),1个8通道10位的模数转换器(Analog/DigitalConverter,ADC),以及多达32个的GPIO口等。如图2所示。      无线通信模块采用ZigBee技术、IEEE802.15.4协议,通信覆盖半径可达150m,能与在其覆盖范围内的任何路灯节点自组网络和进行通信,除了实现路灯的物物相联以外,还具有调节电子镇流器的功率输出(30%~100%),实现节能和绿色照明,检测供电线路的电流、电压、功率因数以及、每一盏灯的工作状态,当发生故障(如灯具损坏、灯杆撞击、人为破坏)时,实时向监控中心和相关部门报警等功能。   无线通信模块还进行了防雨、防潮、防雷电、防电磁干扰设计,并充分考虑了安装方便、维护简单和可恢复性(接入两根线就实现了路灯级的无线控制,拆除两根线又恢复到原来的状态),可以嵌入在路灯的不同位置(灯杆底部、灯杆内、灯罩内)。   3.2 通信协议   无线通信模块的通信协议如下:对照明实施按路段顺序编号,通过命令转发和状态返回实现节点之间“手拉手”的通信。命令转发机制:每个节点通过一个位示图结构来记录哪些帧已经被转发(位示图最多可以表示256帧),如果节点接收到命令帧后,判断该帧是否已经被该节点转发,如已转发则丢弃该帧(节点只对收到的命令帧进行转发,对帧的内容不做修改),从而保证了以最快的速度控制一条线路,并且有效防止了某个节点故障影响整条线路的工作;状态返回机制:命令帧发送到达指定节点后,该指定节点则接收该命令并立即返回状态;转发规则:只有节点号比目标节点号小才转发,状态返回过程则相反。   3.3 与中央监控的连接   一条传输通信链路由若干个ZigBee节点组成,在这些节点的中间设置一个簇节点(一条道路可以设置1个或多个簇节点),其作用是以GPRS的方式与控制中心通信(命令接受和状态返回),簇节点采用CodeFire系列MCF52223芯片作为控制单元,GTM900B和EM770W作为远距离无线通信模。MCF5222x系列利用常用的V2ColdFire内核构建而成,在80MHz的频率下性能高达76MIPS(Dhrystone2.1),接口功能包括:1个MiniUSB接口,支持USBOTG功能,3个2线串口,1个麦克风输入接口,1个HEADSET输入/出接口,1个HANDSET输入/出接口,1个8Ω/16Ω扬声器输出接口,1个132*96点阵LED,1个5*5按键键盘,支持RTC、ADC、PIT&GPT、PWM等;GTM900B和EM770W则完成远距离的GPRS通信。   4 控制中心软件设计   控制中心的软件设计平台为Windows2003,开发工具是微软VisualStudio2005,数据库使用SQLServer2005,与地理信息系统相结合,在获取了街道、建筑物以及路灯的位置、形状等特征信息后,设计以路灯为主体的3维虚拟城市,在控制中心大屏幕上动态显示道路的照明效果,并可以通过平移,放大,缩小等几何变换,观察整个城市、街道甚至每一盏路灯的照明情况。该软件主要有5个功能模块:系统设置、智能控制、电量核算、故障处理和紧急预案。系统设置中的区域设置有市,区,街道和电控箱4种;路灯设置有路灯的位置、型号、生产单位、施工单位、维护责任人,安装日期、清洗维护日期等;亮灯方式设置有全开,全关,单号路灯开,单号路灯关,双号路灯开,双号路灯关,1/3路灯开,1/3路灯关,1/4路灯开,1/4路灯关,智能控制等11种控制方式;时段设置可根据不同的城市不同的季节设置不同时段的亮灯方式;智能控制有两方面内容:针对安装了电子型路灯的路段,根据季节变化和天气状况,通过实时采样环境光强度,对路灯的照明亮度进行智能调节;在夜间,特别是深夜当检测到汽车和行人的流量十分稀少时,在不影响辨认可靠的情况下,适当降低道路的照明亮度,节约电耗;电量核算能对市,区,街道、电控箱甚至每盏路灯进行用电量的统计和核算;故障处理是对灯具损坏、断电、断相、过流、过压、三相不平衡以及人为破坏等情况,在第一时间向监控中心报警后迅速生成故障报告;故障处理的另一个功能是按路段和时段(年、季度、月)统计亮灯率、故障率、每次故障处理的效率(平均修理时间);紧急预案是对一些突发事件制定度紧急预案,在特殊情况下,尽可能提供合适的道路照明,保证人民生命财产的安全。图3是控制中心软件的运行界面之一。        6 结语   先进的道路照明不但可以提升城市的形象、提高交通运输效率,减少交通事故,还能节约大量的公共电能消耗。但对于大多数城市,由于缺少的必需基础设施(路灯级的通信链路),无法实现先进控制方法,物联网(物联网)出现和应用,有效地解决以上问题.

  • 2019-02-13
  • 发表了主题帖: 三差分放大电路,实测可用

    三差分放大电路,放大小信号,能够放大差模信号,抑制共模信号

  • 发表了主题帖: 贴片二极管的标识与辨别

    贴片二极管的标注法,有字母、数字代码或字母+数字代码标注法和颜色(代码)标识法两种,如印字“A3”的电气参数如下:PD-0.15W;IF-O.1A;VBR-80V;Trr-4ns。颜色标注法,则主要由负极侧标注的颜色查得型号,由型号再查出参数值来。   贴片二极管的极性辨别方法:   1.玻璃管贴片二极管,红色一端为正极,黑色一端为负极;2)矩形贴片二极管,有白色横线一端为负极:贴片二极管的好坏测量:在线测量,有明显的正向电阻小,反向电阻大的差异;脱开电路测量,(指针式万用表)正向电阻约为3k左右,反向电阻为数百干欧姆或无穷大;(数字万用表的二极管挡测量)正向电压降为0.3—0.6V左右,反向电压降为无穷大。   贴片二极管的在线辨别:   1.在电路板上,贴片二极管的元件序号一般标注为D+数字,如Dl、D15等;VD,如VD1.VD10等;DD,如DD10、DD100等,以标注序号的不同,可以区分贴片二极管和贴片电阻。此处的“DD”,多加的“D”字系变频器生产厂家为区别电路功能所自行追加的,如电源坞Ⅸ动板中的二极管元件标注为DD+数字,MCU主板中的二极管元件,标注形式则为D+数字,以区别两块电路板的功能。此点须引起读者注意;2)用万用表测量,以明显的正、反向电阻值的不同,来确定是二极管元件。3)贴片二极管的容许功耗(功率值)一般在1W以下,体积大的功率值越大。4)为元件上电测量,以验证为二极管还是稳压管;5)从电路结构出发,类别元件是二极管、稳压管或是晶体管。

  • 发表了主题帖: 磁珠和电感的区别与联系

        磁珠有很高的电阻率和磁导率,他等效於电阻和电感串联,但电阻值和电感值都随频率变化。他比普通的电感有更好的高频滤波特性,在高频时呈现阻性,所以能在相当宽的频率范围内保持较高的阻抗,从而提高调频滤波效果。     作为电源滤波,可以使用电感。磁珠的电路符号就是电感,但是型号上可以看出使用的是磁珠。在电路功能上,磁珠和电感是原理相同的,只是频率特性不同罢了。     磁珠由氧磁体组成,电感由磁心和线圈组成,磁珠把交流信号转化为热能,电感把交流存储起来,缓慢的释放出去。     磁珠对高频信号才有较大阻碍作用,一般规格有100欧/100mMHZ,它在低频时电阻比电感小得多。     铁氧体磁珠(FerriteBead)是目前应用发展很快的一种抗干扰元件,廉价、易用,滤除高频杂讯效果显著。

  • 发表了主题帖: IGBT驱动电路

    做直流电源时采用IGBT,IGBT需要驱动电路,然后自己画的一个驱动电路图,并进行了仿真

  • 发表了主题帖: MOS管电压型静电击穿特点

    其实MOS管一个ESD敏感器件,它本身的输入电阻很高,而栅-源极间电容又非常小,所以极易受外界电磁场或静电的感应而带电,又因在静电较强的场合难于泄放电荷,容易引起静电击穿。而静电击穿有两种方式,电压型及功率型。 电压型击穿,即MOS管栅极的薄氧化层发生击穿,形成针孔,使栅极和源极间短路,或者使栅极和漏极间短路,它的特点是: (1)穿通击穿的击穿点软,击穿过程中,电流有逐步增大的特征,这是因为耗尽层扩展较宽,产生电流较大。另一方面,耗尽层展宽大容易发生DIBL效应,使源衬底结正偏出现电流逐步增大的特征。 (2)穿通击穿的软击穿点发生在源漏的耗尽层相接时,此时源端的载流子注入到耗尽层中,被耗尽层中的电场加速达到漏端,因此,穿通击穿的电流也有急剧增大点,这个电流的急剧增大和雪崩击穿时电流急剧增大不同,这时的电流相当于源衬底PN结正向导通时的电流,而雪崩击穿时的电流主要为PN结反向击穿时的雪崩电流,如不作限流,雪崩击穿的电流要大。 (3)穿通击穿一般不会出现破坏性击穿。因为穿通击穿场强没有达到雪崩击穿的场强,不会产生大量电子空穴对。 (4)穿通击穿一般发生在沟道体内,沟道表面不容易发生穿通,这主要是由于沟道注入使表面浓度比浓度大造成,所以,对NMOS管一般都有防穿通注入。 (5)一般的,鸟嘴边缘的浓度比沟道中间浓度大,所以穿通击穿一般发生在沟道中间。 (6)多晶栅长度对穿通击穿是有影响的,随着栅长度增加,击穿增大。而对雪崩击穿,严格来说也有影响,但是没有那么显著。

  • 2019-02-12
  • 发表了主题帖: 关于去耦电容蓄能作用的理解

    1)去耦电容主要是去除高频如RF信号的干扰,干扰的进入方式是通过电磁辐射。       而实际上,芯片附近的电容还有蓄能的作用,这是第二位的。      你可以把总电源看作密云水库,我们大楼内的家家户户都需要供水,      这时候,水不是直接来自于水库,那样距离太远了,      等水过来,我们已经渴的不行了。      实际水是来自于大楼顶上的水塔,水塔其实是一个buffer的作用。      如果微观来看,高频器件在工作的时候,其电流是不连续的,而且频率很高,      而器件VCC到总电源有一段距离,即便距离不长,在频率很高的情况下,      阻抗Z=i*wL+R,线路的电感影响也会非常大,      会导致器件在需要电流的时候,不能被及时供给。      而去耦电容可以弥补此不足。      这也是为什么很多电路板在高频器件VCC管脚处放置小电容的原因之一    (在vcc引脚上通常并联一个去藕电容,这样交流分量就从这个电容接地。) 2)有源器件在开关时产生的高频开关噪声将沿着电源线传播。去耦电容的主要功能就是提供        一 个局部的直流电源给有源器件,以减少开关噪声在板上的传播和将噪声引导到地

  • 发表了主题帖: 什么叫做OTP片、掩膜片,两者的区别何在?

    OTP means one time program,一次性编程 MTP means multi time program,多次性编程 OTP(One Time Program)是MCU的一种存储器类型 MCU按其存储器类型可分为MASK(掩模)ROM、OTP(一次性可编程)ROM、FLASHROM等类型。 MASKROM的MCU价格便宜,但程序在出厂时已经固化,适合程序固定不变的应用场合; FALSHROM的MCU程序可以反复擦写,灵活性很强,但价格较高,适合对价格不敏感的应用场合或做开发用途; OTP ROM的MCU价格介于前两者之间,同时又拥有一次性可编程能力,适合既要求一定灵活性,又要求低成本的应用场合,尤其是功能不断翻新、需要迅速量产的电子产品。

  • 发表了主题帖: FPGA和ASIC的概念,他们的区别

    (在当今的电子设备中集成电路的应用已经越来越广泛,几乎涉及到每一种电子设备中。集成电路按其实现技术可以分为2大类:可编程逻辑器件(包括CPLD和FPGA等)和专用集成电路(ASIC)。下面我们分别从这2类集成电路的特点和如何使用这2类集成电路来实现我们的设计需求来进行比较,以为我们以后的系统设计提供借鉴。     首先我们以FPGA为代表比较可编程逻辑器件和ASIC,它们最大的区别就是FPGA在不知道使用者的具体需求之前就已经按一定的配置制造好了所有的电路,使用者再根据自己的设计需要选用其中的电路来使用,而ASIC是根据使用者的设计需求来制造其中的电路。由于以上原因使得这2类集成电路具有如下特点:ASIC由厂家定制,有比较低的单片生产成本,但却有很高的设计成本以及缓慢的上市时间;FPGA则具有高度的灵活性,低廉的设计成本以及适中的器件成本和快速的面世时间。     下面我们分别简单介绍使用ASIC和FPGA实现某一设计的的步骤:     要设计并生产一颗ASIC其流程大致如下:首先是系统设计,这其中包括设计好系统的对外接口,系统内部大的模块划分,内部模块之间的接口确定,系统时钟的确定等等。然后进行进一步的详细设计,这一步包括各个大模块内部的再次模块划分,内部小模块之间的接口确定等。再下一步是进行RTL级编码,即使用硬件描述语言进行实际的电路的设计,类似于软件业的代码编写。RTL级编码完成后进行RTL级仿真,如果功能正确那么下一步利用综合工具生成网表和SDF文件然后进行前仿真,如果前仿真没有问题即可进行布局布线,布局布线完成后再次提取网表和SDF文件,利用布局布线后的网表和SDF文件进行后仿真,如果后仿真也没有问题即可进行样片的生产。样片生产完成后,将样片焊在调试电路板上与系统其它硬件和软件一起调试验证如果没有问题一片ASIC即告成功。     FPGA的设计过程和ASIC的设计过程在系统设计、详细设计和RTL级编码RTL级仿真阶段基本一样,但是经过综合生成网表后只需进行一次仿真即可,而且如果这次仿真通过即可使用烧录软件将设计输入FPGA母片中在调试电路板上进行系统级验证。     根据上面的介绍我们可以看出同一个设计使用FPGA实现比用ASIC实现可以节省一次后仿真和样片的生产2个步骤,根据不同的设计和工艺厂家这2个步骤通常需要6周或更长时间,如果需要量产那么如果使用ASIC那么第一批量产芯片还需要5周或更长时间。,但如果样片出错就至少还需要6周或更长时间,所以从产品的时间成本上来看FPGA具有比较大的优势,它大量用于生产至少可以比ASIC快3个月的时间。这一点对于新产品迅速占领市场是至关重要的。而且,如果产品需要升级或做一些比较小的调整,用FPGA实现是很方便的,只要将改动后的代码重新烧录进FPGA即可(一般设备可以保留下载口,这样甚至可以作到设备在现场的远程在线下载),但如果是ASIC产品则需要重新进行综合、前后仿真、样片生产测试和量产,这样的时间成本远大于FPGA产品,对于产品上未成熟时期或市场急需的产品这样的时间成本,和相应造成的人员成本和经济成本往往是不能接受的,而且产品在未大量现场应用时一般都会存在缺陷,如果采用ASIC设计的设备一旦出现由于ASIC的问题引发的故障则“用户很生气、后果很严重”,因为此时设备修改起来相当麻烦,您需要从新布板、从新设计、从新验证、甚至要从新化几个月的时间等待芯片厂家为您提供与现有ASIC管脚和功能以至协议完全不一样的芯片!这还不是最严重的,更要命的是可能您将好不容易攻下的市场永远的失去了他还向您索赔!呜呼哀哉!而且因为ASIC的样片制造有一次性不返还的NRE费用,根据使用的不同工艺和设计规模大小,从几万到数十万甚至上百万美金不等,造成ASIC前期价格非常高,而一旦此颗芯片从技术到市场任何一个环节出现问题,那么我们不仅不能享受到SAIC价格优势带来的好处,我们还可能为其NRE费用买单,造成使用ASIC实现的成本远高于使用FPGA实现的经济成本。当然ASIC还是尤其绝对优势的一面,比如当事实证明其ASIC相当成熟,则其最终单片成本普遍较FPGA产品低一些,而且它的一些应用也是FPGA可能永远无法实现的,比如用来实现大规模的CPU、DSP和支持多层协议的交换芯片等。还有就是为追求小面积而要求非常高的集成度,如手机芯片等。     同时我们通过以上描述容易知道ASIC的一些固有劣势恰好是FPGA产品的优势所在,比如FPGA从开发到量产的时间短、可以在不改变设备硬件的情况下在线升级、可以为大企业实现个性化设计、价格适中等,但它也有其固有的缺点,如您不可能期望到系统级的FPGA产品售20RMB/片,也不能相信有厂家为您用FPGA定制您想要的CPU这类的玩笑。     从上面的比较可以看出来FPGA和ASIC各有各的优势在实际应用中应根据设计和产品的定位来选用。但通过和大量应用工程师的交流,笔者了解到他们对FPGA产品有一些认识误区,笔者也在这里讨论一下。     首先有些工程师认为FPGA产品在稳定性上不如ASIC,其实,在实际运行中同样工艺生产的FPGA和ASIC的物理特征和稳定性是没有什么区别的。用FPGA开发的产品对稳定性和运行环境的要求一点也不低,比如许多探测仪器、卫星、甚至前不久美国开发的深海海啸探测器中都大量的使用了FPGA产品。这些系统对稳定性和运行环境的要求不可谓不高,说明FPGA产品的稳定性是可靠性是可以信赖的。其次认为ASIC运行的速度要不FPGA更高,其实这个概念没错,但这只对频率非常高的设计而言,如CPU,在通常应用情况下而者没有区别,笔者就亲眼见过原来上海沪科公司的单板式底成本2。5G SDH设备板子,上面核心器件几乎全部是FPGA设计,指标非常完美以至UT斯达康要花大价钱收购它,但后来因为对老大哥华为的威胁太大而被灭了。     另外由于工艺技术的发展,现在FPGA和ASIC有相互融合取长补短的趋势,混和芯片是新的发展趋势。FPGA中内嵌丰富的通用电路,如CPU、RAM、PCI接口电路等等这样在提高了FPGA集成度的同时进一步加快了设计进度,同时减少了系统厂家的外围成本。     总之FPGA和ASIC产品的使用要根据产品的定位和设计需要来选用,ASIC产品适用于设计规模特别大,如CPU、DSP或多层交换芯片等,或者是应用于技术非常成熟且利润率非常低的产品,如家用电器和其它消费类电器,亦或是大量应用的通用器件如RAM、PHY等。而FPGA产品适用于设计规模适中,产品要求快速占领市场,或产品需要灵活变动的特性设计等方面的产品,如PDH、2.5G以下SDH设备和大部分的接口转换芯片等。当然具体使用那种产品来设计还要设计者充分考虑自己的产品定位来决定。) 答案:FPGA是可编程ASIC。 ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一个用户的特定要求,能以低研制成本,短交货周期供货的全定制,半定制集成电路。与 门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点。

    1. 【资料分享】 有关DSP向PRU1中到DATARAM写入数据的问题 0/0 【微控制器 MCU】 2019-02-20
    2. 【分享】 无线通信中载波带宽是什么? 1/53 【无线连接】 2019-02-19
    3. 【资料分享】 什么是三极管的倒置状态及其作用! 0/0 【模拟与混合信号】 2019-02-19
    4. 【资料分享】 MSP430F5438A升级失败 0/0 【微控制器 MCU】 2019-02-16
    5. 【资料分享】 教你写单片机定时器中断程序 0/0 【微控制器 MCU】 2019-02-16
    6. 【资料分享】 MSP-FET430UIF在windows7安装不上驱动经验分享 0/0 【微控制器 MCU】 2019-02-16
    7. 【MSP432】 MSP430 FR2xx系列 MCU BSL与MSP432 P系列MCU BSL... 1/77 【微控制器 MCU】 2019-02-16
    8. 【资料分享】 2812FALSH内程序自启动的一种简单方法 0/0 【微控制器 MCU】 2019-02-15
    9. 【资料分享】 漫谈RF5架构 0/0 【微控制器 MCU】 2019-02-15
    10. 【资料分享】 DSP核+协处理器 0/0 【微控制器 MCU】 2019-02-15
    11. 【分享】 数字化控制系统在智能家居领域运用 1/109 【微控制器 MCU】 2019-02-15
    12. 【经验】 基于物联网的道路照明系统解决方案 1/110 【微控制器 MCU】 2019-02-15
    13. 【资料分享】 三差分放大电路,实测可用 0/0 【模拟与混合信号】 2019-02-13
    14. 【资料分享】 贴片二极管的标识与辨别 0/0 【模拟与混合信号】 2019-02-13
    15. 【资料分享】 磁珠和电感的区别与联系 0/0 【模拟与混合信号】 2019-02-13
    16. 【资料分享】 IGBT驱动电路 0/0 【模拟与混合信号】 2019-02-13
    17. 【分享】 MOS管电压型静电击穿特点 1/67 【模拟与混合信号】 2019-02-13
    18. 【资料分享】 关于去耦电容蓄能作用的理解 0/0 【模拟与混合信号】 2019-02-12
    19. 【资料分享】 什么叫做OTP片、掩膜片,两者的区别何在? 0/0 【模拟与混合信号】 2019-02-12
    20. 【资料分享】 FPGA和ASIC的概念,他们的区别 0/0 【模拟与混合信号】 2019-02-12
    1. 教学视频不播放 , 介绍Value Line系列 5/734 【微控制器 MCU】 2018-11-30
      十有八九是网络速度问题
    2. 5728裸机跑代码,执行memcoy时系统跑飞 5/591 【DSP 与 ARM 处理器】 2018-11-30
      第二个分配临时存储空间给当前运行的程序块,临时变量使用的就是这些临时的存储空间,在程序块运行结束后,这些临时存储空间就被CPU收回了
    3. 建议把固件重新烧一下。
    4. 二阶滤波器,定点运算如何保证数据不会溢出? 3/841 【微控制器 MCU】 2018-11-30
      为防止数据溢出,对输入数据进行限定,保证运算不会出现越界的可能
    5. IAR 编译生成的bin文件大小问题 7/962 【微控制器 MCU】 2018-11-30
      BasaraTama 发表于 2018-11-10 17:33 用ultraedit或vim以二进制格式打开bin文件,观察是否有大量连续的0存在,如果有请核对链接脚本是否描述正确
      谢谢指导
    6. 求Generic Bulk Device驱动 8/4012 【微控制器 MCU】 2018-11-30
      驱动没有装怎么能连接对
    7. dsp2812使用C2Prog下载出现问题 6/588 【微控制器 MCU】 2018-11-30
      按照步骤来,也是连接不上 这很奇怪,再检查一下设置
    8. 求解 MSP430 IFG1 &= ~OFIFG (清除振荡器失效标志) 2/585 【微控制器 MCU】 2018-10-21
      lcofjp 发表于 2018-10-21 19:25 IFG1是一个寄存器,应该是一个16位的寄存器,可以理解为一个16位的系统定义变量。 OFIFG也是一个整数,不 ...
      感谢回复,谢谢
    9. MSP430单片机ADC的功耗隐藏任务和LCD外接电阻问题 1/318 【微控制器 MCU】 2018-02-21
      LCD外接电阻问题 看到这里,很多人可能都会觉得我有点吹毛求疵,不见得大家都不明白,即便这个问题也一样,说来话长估计大家都明白。那我就长话短说。很多人使用lcd的时候都喜欢在R33、R23、R13、R03之间接上大电阻,貌似为了符合用户手册上的指示,其实只是为了求心安的一个表现罢了,实际上会有多少人会把REXT置一呢?因为REXT置一才是使用外部电阻啊!!!我看过很多人的程序,没有看到啊,包括代理发给我的程序。我很负责的告诉你,你TMD就是犯贱,知道在这里加上3、4个外部电阻给你的PCB布线带来多大的烦恼么?这就是坑爹的安排!因为REXT置一之后液晶会显示不正常,这个是要调的!所以当你对于液晶对比度的调节要求要求不高的时候(Rx可以调节液晶对比度),直接将外面的电阻舍去,使用内部电阻,方便布线。
    10. ST BLUEMS APK Android最新版本V3.5.1 3/1208 ST传感器与低功耗无线技术论坛 2017-08-04
      哇  不错不错
    11. 无线充电会不会被苹果带起来呢
    12. 想在MSP430G2553在CCS6环境下想看寄存器值,有错 2/1608 【微控制器 MCU】 2017-02-20
      lcofjp 发表于 2017-2-20 02:56 楼主,如果这个账号是你一直在使用的话,你干这行也有十来年了,怎么还会一直发这些低级的求助帖?从你的发 ...
      人有三迷
    13. 这是什么原因?IAR 5.5 仿真出错 6/1458 【微控制器 MCU】 2017-01-25
      数码小叶 发表于 2017-1-24 11:44 仿真的啥芯片都不说
      msp430f169
    14. MSP430F5 ADC12采样问题 3/1337 【微控制器 MCU】 2017-01-25
      ienglgge 发表于 2017-1-24 19:45 每次采样的结果波动比较大,有多大。把一串连续的采样结果发出来, 用示波器采集同一时段的波形。比较一下。
      好的,,谢谢
    15. 请教MSP430F149的I2C通信问题 2/1351 【微控制器 MCU】 2017-01-25
      qwerghf 发表于 2017-1-25 14:53 这个程序可以参考一下
      谢谢提供的资料,看看
    16. 请教msp430电平转换问题 3/1134 【微控制器 MCU】 2017-01-22
      qwerghf 发表于 2017-1-17 22:53 TLC2543的AD也是12位,没有必要使用,如果想使用,推荐MCP3421,精度高而且支持差分电压测量
      太感谢了,明白了
    17. dcexpert 发表于 2017-1-17 08:43 电池容量/平均功耗,就可以计算出工作时间了。
      谢谢回答
    18. 问一个msp430f5529开发板的使用问题 3/1084 【微控制器 MCU】 2017-01-17
      ienglgge 发表于 2017-1-16 22:04 保证自己的ldc1000和他原来的和单片机的连接顺序一样,ldc1000的外围电路一致。应该就可以。原来的图正确的 ...
      好的,谢谢
    19. Aribo 发表于 2017-1-17 14:27 这个是1ua以下的待机,串口唤醒消耗很低,普通纽扣电池有200mah容量,剩下的就是你唤醒的频率了。不怎么唤 ...
      好的,明白了
    20. 问个msp430芯片各个模式之间切换的问题 2/870 【微控制器 MCU】 2017-01-16
      liang118038 发表于 2017-1-15 21:16 CPU休眠或停机了肯定无法就这样执行模式切换了,要利用些外中断之类进行触发进入另一种模式才是正确的做法 ...
      谢谢
  • TA暂时无记录哦~
    1. C深度剖析——嵌入式系统高级C语言编程

      标签:C语言 编程 嵌入式系统

      本课程将嵌入式系统中经常用到的C编程技巧与概念介绍给大家。C的灵活性以及由此而产生的陷阱非常非常多。敬请期待。

      下载次数 4次 资源类型 应用文档 上传时间 2013-05-20

    2. 郭天祥的十天学会51单片机

      标签:单片机

      十天学会51单片机(郭天祥)全部课件及作业 资料格式: rar 作者/开发商: 资料大小: 13.47 MB 资料语言: 简体中文...什么是单片机、单片机能做什么、怎么开始学习单片机。学单片机需要的一些预备知识C51基础知识。了解TX-1C单片机学习板

      下载次数 6次 资源类型 应用文档 上传时间 2013-05-02

    3. 51单片机应用开发范例大全(第2)

      标签:单片机

      《51单片机应用开发范例大全(第2版)》通过实例全面讲解单片机开发中的各种技术,包括单片机接口的扩展、存储器的扩展、输入/输出及显示技术、实用电子制作、传感控制技术、智能仪表与测试技术、电气传动及控制技术、单片机数据处理、单片机通信技术、单片机实现信号与算法、单片机的总线与网络技术、典型元器件及应用技术等内容,最后通过智能手机充电器设计、单片机控制门禁系统设计、电机保护器的设计3个综合实例,具体演示应用多种技术开发单片机系统的思路和方法。

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    4. 单片机语言C51应用实战集锦(电子书)

      标签:单片机

      简介: 使用C语言开发速度快,代码可重复使用,程序结构清晰、易懂、易维护,易开发一些比较大型的项目。目前,许多编译器都已经支持了C51,而且是Windows视窗界面。keilc51是目前单片机开发最为流行的软件。 本书收集并整理了许多实用的采用C51单片机开发的程序,这些程序既可以给读者以开拓思路,参考的用途,又是实际的开发程序,可以直接作为程序应用在相同的开发系统上。通过本书的学习,读者可以进一步了解和掌握C51编程的思路和方法。 本书适用于从事单片机项目开发与应用的工程技术人员阅读。

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    5. 《51单片机C源程序汇总》

      标签:单片机

      51单片机设计离不开C语言编程,《51单片机C源程序汇总》向你提供各种单片机源程序,从简单到复杂,从单一到综合,逐渐提高你得单片机C语言编程,提升你得单片机设计综合能力!

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    6. proteus中基于51单片机的数字电压表的仿真

      标签:单片机

      第四章 实验及实践课题(28) 数字电压表

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    7. 基于89C51单片机程序实例

      标签:单片机

      01-LedTest -- 实现LED按照一定频率闪烁。主要用来测试LED工作是否正常。P10要接通。 02-CrossLed -- 实现花灯显示。主要学习对软件延时的使用。P10要接通。 03-FlowRight -- 实现流水灯,方向是从左向右。主要学习在C语言里如何实现准确的位操作。P10要接通。 04-FlowLeft -- 实现流水灯,方向是从右向左。主要学习在C语言里如何实现准确的位操作。P10要接通。 05-button -- 独立按键测试,实现按哪个按键然后使用对应LED显示。实现按键的检测和LED的控制。拨码开关要打到OFF位置。 06-boma -- 用LED显示拨码状态。不可以按按键。 07-Relay -- 继电器测试程序,并有LED指示同时伴有蜂鸣器的声音。P8纵向连接上面2个。 08-music -- 用C语言演奏生日快乐歌,使用软件定时。使用软件定时演奏生日快乐歌。P8纵向连接上面2个。 09-musicasm -- 用汇编语言演奏一首民歌,使用硬件定时。主要学习51定时器汇编语言编写中断功能,和如何编写中断服务程序。P8纵向连接上面2个。 10-music2 -- 用C语言中断演奏。主要学习在C语言中定义51内部定时器中断服务程序。P8纵向连接上面2个。 11-disp1234 -- 采用软件延时在数码管上显示1234ABCD。这是比较普遍的数码管显示。P14接通 12-disp1234int -- 采用硬件延时在数码管上显示1234ABCD。利用中断可以节约资源,这个程序比10更好。P14接通 13-adddec -- 使用两个按键S22,S23控制数码管上显示的数加减,具有去抖动功能。主要讲如何进行数码管动态显示并且怎样对键盘去抖动。P14接通。 14-time -- 15-alarm -- 综合实验,实现倒计时结束时使用蜂鸣器报警,编程技巧的组合。P8纵向连接上面2个。 16-uart -- UART发送和接收,实现从PC发送到单片机任何字母和数字,单片机立即向PC发送同样的字母数字可以由超级终端或者串口调试助手调试。 17-uartint -- UART接收采用不占用资源的中断接收,其余同16。推荐使用串口中断方式,使用查询方式太占用资源。 18-18b20 -- 使用温度传感器18B20测温度,并用数码管显示。P14接通。 19-1602 -- 使用LCD1602显示字符。LCD1602接到P4,方向和板子方向相反。 20-24c08 -- 对24c08进行写读操作。并把写进和读到的数用LED显示。P8纵向连接下面2个。 21-matrix -- 调试矩阵键盘,对应LED亮。注意,本程序执行需要把拨码开关打到OFF状态,程序只有矩阵键盘前两行显示,后两行请自行添加代码。 22-DS1302 -- 使用DS1302时钟芯片对预制的时间进行计时。P9横向连接左边两个。 23-chibang -- 演奏《飞舞翅膀的女孩》等音乐的综合程序。 24-wannianli -- 综合程序,用DS1302,LCD1602,温度传感器等板上设备做一个万年历。LCD1602要正确连接,P9横向连接左边两个。使能DS1302。独立按键从左到右功能为,选择设置/加/减/确定,由于去抖动功能和LCD响应时间问题,所以要按时间稍微长一点。 25-demo -- 使用RS-232实现PC与51之间通信,详细操作方法请见相关教程。 26-remote -- 红外功能测试程序,使用普通遥控器和红外接收头协同工作,用板上LED显示接收状态,LED_EN跳线必须接通,否则观察不到LED状态。 27-1602-scroll -- LCD1602动态字幕显示,方便用户理解1602的用户指令集。有时程序不正常,则为LCD1602的RAM没有清空所致,必须给板子重新上电,并按一次复位键。 28-12864 -- LCD12864显示程序。AT89S5x系列单片机需要摘掉LCD下载程序,下载完毕后插上LCD,并按复位键才可以正常显示,带着LCD下载程序会失败。STC单片机则无此问题。 29-12864-pic -- LCD12864的汉字,图形,半屏,反白及动态显示测试程序。注意事项同28。 30-adc0832 -- 扩展ADC0832调试程序,具体扩展口请见程序内说明。

      下载次数 12次 资源类型 应用文档 上传时间 2013-05-02

    8. Virtual51单片机模拟器SDK

      标签:单片机

      由于Virtual51模拟器并没有提供任何操作库函数,因此使许多打算学习MCS-51系列单片机的用户对其望而却步!的确,如果仅仅利用模拟器给出的一些寄存器操作功能说明,对于新手是很难掌握的,即使是精通51系列单片机的各位高手,对于LCD液晶显示操作仍然相当麻烦!故而,笔者特编写此模拟器的用户接口API库函数:Virtual51API.h,在方便诸位使用之余,对于笔者加深对MCS-51系列单片机的认识也有一定的帮助!

      下载次数 4次 资源类型 应用文档 上传时间 2013-05-02

    9. 51单片机C编程100例

      标签:单片机

      说明:本文件夹一共提供各类编程实例200多个,由于编者水平有限,所以程序可能有BUG,希望谅解! 全部通过实际试验,正常运行!可以根据程序中的说明,调用各个部分的资源,自行试验。

      下载次数 2次 资源类型 应用文档 上传时间 2013-05-02

    10. 增强型80C51单片机速成与实战

      标签:单片机

      单片机应用技术是一门实战性很强的学科,结合理论和实践,一边学一边干是最好和最快捷的学习方法。本书从介绍最基础的单片机程序开始,设计了一套以基础知识为主且又能兼顾新的知识点的基于Keil C51的单片机仿真实验议,精心安排了每一个实验范例,并且以汇编和Keil C51为基础编写了相应的程序,可以帮助新手快速上路,同时也能够帮助有经验的工程师及时更新技术以跟上当前的热点。本书实战性强的特点决定了它的读者群,它适合于电子大赛的赛前训练以及大专以上学生的实验,也可培养研究生的动手能力,还适用于渴望快速学习和掌握单片机应用技术的所有人员。

      下载次数 1次 资源类型 应用文档 上传时间 2013-05-02

    11. MCS-51单片机温度控制系统

      标签:单片机

      引言 在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。本文以它为例进行介绍,希望能收到举一反三和触类旁通的效果。

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    12. 51单片机常用模块设计查询手册

      标签:单片机

      《51单片机常用模块设计查询手册》主要介绍了51单片机系统中常用模块的具体运用,这些模块包括:电源模块、输入输出及显示模块、各类存储模块(并行及串行)、数据传输接口模块、网络通信模块、AD/DA模块、语音处理模块、信号发生模块、电机模块、打印机模块、传感器模块等。

      下载次数 6次 资源类型 应用文档 上传时间 2013-05-02

    13. 51单片机教程

      标签:单片机

      51单片机教程51单片机教程

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    14. 51单片机控制GSM模块TC35的方法

      标签:单片机

      51单片机控制GSM模块TC35的方法

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    15. 51单片机应用程序开发与应用实践

      标签:单片机

      51单片机应用程序开发与应用实践

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    16. MCS51单片机应用设计

      标签:单片机

      MCS51单片机应用设计

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    17. MCS-51单片机应用设计.part1

      标签:单片机

      MCS-51单片机应用设计.part1

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    18. uip 操作可通过51 单片机实现tcp/ip

      标签:单片机

      uip 操作可通过51 单片机实现tcp/ip

      下载次数 0次 资源类型 应用文档 上传时间 2013-05-02

    19. Proteus制作郭天翔《十天学会51单片机》的学习板

      标签:单片机

      Proteus制作郭天翔《十天学会51单片机》的学习板

      下载次数 3次 资源类型 应用文档 上传时间 2013-05-02

  • TA暂时无记录哦~
TA暂时无记录哦~

统计信息

已有1160人来访过

  • 芯币:8312
  • 好友:--
  • 主题:1948
  • 回复:695
  • 课时:--
  • 资源:19

留言

你需要登录后才可以留言 登录 | 注册


博浩元电子 2018-10-25
不错,干货
查看全部