tag 标签: matlab

相关帖子
相关博文
  • 热度 5
    2018-5-3 22:11
    1594 次阅读|
    1 个评论
    【博客大赛】使用MATLAB一键制作mif文件
    这里讲解实现一个16384(2^14)点的14位正弦波数据mif格式文件的生成,使用此文件,我们便可以在FPGA上基于直接数字合成(DDS)原理生成标准的正弦波,即实现信号发生器的功能。关于DDS原理的相关内容,请参考由北航出版社出版的《FPGA自学笔记——设计与验证》一书第六章第6.2节—— “双通道幅频相可调DDS信号发生器” 一节的内容。   在很早之前,我曾编写过一个生成1024点16位正弦波mif文件的方法,不过那时候我的matlab技术还特别特别菜(现在也很菜),只是在matlab中简单的实现了正弦波数据的生成,关于四舍五入取整以及mif文件的最终生成,我用了excel和quartus两个软件经过了复杂的操作才最终完成。如今,自己都对那种方法没有了耐心,刚好新做的一个双通道14位高速DAC模块在做DDS实验时需要用到14位的mif数据,因此今天对matlab的脚本文件重新编写了下,实现了仅通过Matlab就可以一键生成mif文件的功能。 Script。在该文件中输入以下内容: F1=1;%信号的频率 Fs=2^14;%采样频率 P1=0;%信号初始相位 N=2^14;%采样点数为N t= ;%采样时刻 ADC=2^13 - 1;%直流分量 A=2^13;%信号幅度 s=A*sin(2*pi*F1*t +pi*P1/180) + ADC;%生成信号 plot(s);%绘制图形 fild =fopen('d:/sin14bit_16384.mif','wt');%创建mif文件 %写入mif文件文件头 fprintf(fild,'%s\n','WIDTH=14;');%位宽 fprintf(fild,'%s\n\n','DEPTH=16384;');%深度 fprintf(fild,'%s\n','ADDRESS_RADIX=UNS;');%地址格式 fprintf(fild,'%s\n\n','DATA_RADIX=HEX;');%数据格式 fprintf(fild,'%s\t','CONTENT');%地址 fprintf(fild,'%s\n','BEGIN');% fori= 1:N s2(i) =round(s(i));%对小数四舍五入以取整 ifs2(i) <0%强制将负1置0, s2(i) = 0 end % addr : data; fprintf(fild,'\t%g\t',i-1);%地址,从0开始编码 fprintf(fild,'%s\t',':'); fprintf(fild,'%x',s2(i)); fprintf(fild,'%s\n',';'); end 用户如果想自己生成其他深度和位宽的数据,只需要对应修改采样频率(Fs)、采样点数(N)、直流分量(ADC)和信号幅度(A)即可。   保存文件,点击运行按钮,即可生成我们所需要的正弦波数据,并在电脑的D盘根目录生成一个名为“sin14bit_16384 .mif”的文件。 随后,会弹出如下图1所示的界面,该界面便是以我们生产的数据为值,t为时间轴绘制出来的波形,从波形可知为标准的正弦波,你也可以通过放大缩小来具体查看几个顶点的值,以确定数据是否在自己预期的范围内。这里,我们直接关掉该界面即可。 下图2为使用该文件设计的DDS信号发生器系统,输出频率为3.448Mhz(随机设置的一个值),通过示波器的FFT功能可以看到,谐波量并不大。
  • 热度 4
    2013-6-20 18:43
    1238 次阅读|
    3 个评论
      在进行算法验证的时候,Matlab无疑是一把利器,如果将用C写的代码, 在用Matlab实现一遍,确实很浪费时间。当对于Matlab不是特别熟悉的时候, 尤其麻烦。 关于Matlab调用C的方式,已经固定了,介绍也很多。 但是有一个地方,还没有见到有很多介绍。 如何在C中方便地使用Matlab传递过来的变量?   由于Matlab中常使用double型变量,而C中最常使用的是int型变量,当使用mexFunction函数将变量以mxArray格式传递到C文件中的时候, 如果在C文件中使用的不是double型,都要 要进行数据转换。double型的计算精度要高于int型及其他类型,如果使用double型进行计算,可能结果会优于实际情况。如果强行使用指针进行转换,因为double型和int型占用的内存空间不一样,势必会出现问题。   想了一些方法后,发现最简单的是,开辟一个元素个数相同的数组或者矩阵。将prhs中的元素都进行强制类型转换,复制到新的数组或者矩阵中,然后对于这个新的数组或者矩阵进行操作。   在返回时,将开辟的数组或者矩阵中的元素再进行强制转换,复制到plhs中。回到Matlab的double类型。   当然这样做一个不好的地方就是,占用了不少内存。   注: void mexFunction(int nlhs, mxArray *plhs ) {      uint32_t i;      uint32_t count;      uint32_t m;      uint32_t n;      double   *in;      double   *out;      uint32_t *handle;      if(prhs == NULL)           return;      in = (double*)mxGetPr(prhs );      m = mxGetM(prhs );      n = mxGetN(prhs );      plhs = (double*)mxCreateDoubleMatrix(m, n, mxREAL);      out = (double*)mxGetPr(plhs );      handle = (uint32_t *)malloc(m*n*sizeof(uint32_t ));      count = m* n;      mexPrintf("the count:%d\n", count);      for(i = 0; i count; i++)      {           handle = (uint32_t)in ; //          mexPrintf("the data: %u, d: %lf\n", handle , in );      }      for(i = 0; i count; i++)      {           DataProcess(handle );          }      for(i = 0; i count; i++)      {           out = (double)handle ;           mexPrintf("the i: %d the data: %u, d: %lf\n", i, handle , out );      }          nlhs = count;      mexPrintf("the nlhs: %d\n", nlhs); }
  • 热度 1
    2012-8-29 21:02
    199 次阅读|
    0 个评论
        这算是我最后一个用单片机做的项目,到现在已经隔了2年多了。发现对软件上很多细节的地方都生疏了,而硬件则还好。可能是太久没摸单片机的缘故,也可能是用习惯了FPGA,针对任何应用首先考虑的方案都是使用FPGA的解决方案。当然,对于商业应用FPGA还远没有达到取代单片机,甚至完全取代DSP的程度。我想,随着FPGA的普及,尤其在我们这代,学DSP的人越来越少,MCU又五花八门,ARM/CorteX有计算机的抢饭碗,学电子的大多都会选择FPGA。就我所在的小圈里,真正能接触到科技前沿的毫无例外全是FPGA,其他的大多数只能停留在商业层面。话虽如此,不过现今赚钱才是硬道理,行行都能出状元。前段时间看科技频道我爱发明,就有一个人发明了一个光控锁发家了。这也充分说明了单片机也有大智慧,不必一味的追求高科技。     下面和大家一起分享一下这个湿度计,顺便我也小总结一下。     实物图如下:     上位机软件GUI界面:       系统功能概述:该湿度计由湿度采集和显示两部分组成,显示部分通过串口排线与采集部分相连,并采用7段式LED显示湿度值,定标所需的最小二乘法直线拟合参数由上位机软件计算完成并将参数发回湿度计进行定标处理。软件的定标也分手动和自动两部分,定标功能和湿度控制器类似。参见http://bbs.ednchina.com/BLOG_ARTICLE_3006306.HTM         由于湿度显示部分较简单,接下来主要介绍湿度采集部分和上位机软件部分。       湿度采集板概述:该板的主要特点就是小,板子的尺寸只有54*11(mm)。在这个尺寸上放置了单片机MSP430F2132、CD4046、MAX3232、MC34063以及相关的外围电路等。至于电路原理和湿度控制器一样。印象最深的就是手工焊接的时候老是丢东西,而且这款430小单片机不是被静电打坏,就是被焊坏。开关电源的开关芯片也是如此。所以,以后要是再有类似的活我肯定是不合格的,得请专业人士来弄。      上位机软件概述:该软件是在串口调试助手代码的基础上修改的,当时并不是不熟悉VC或者其他语言,主要考虑到自己是学电子,以后主要从事信号处理的研究。参考上面贴出来的GUI界面,简单介绍一下各部分功能。 左板块:串口调试功能。扩展了10进制显示,uint32与float32发送。 右板块:湿度定标功能 1:设定任意5个由低到高的标准湿度环境 2:手动读取湿度值,记录读取次数,5次循环显示,清除数据。 3:定时自动读取湿度值,可设置环境切换时间与取样等待时间。 4:5次取数后进行数据拟合,打开图形窗打印拟合曲线与样点。同时得到拟合曲线方程系数,等待发送。 PS:通过调试已经加入了系统运行调试操作出错处理消息框。     从打印出的菜单中可以看到有0~4这五种操作模式,单片机的程序和网上很多开发板的test程序类似。 图文说明如下:    首先,发送十六进制命令“0”,打印菜单(此时字符显示)。     其次,发送十六进制命令“1”,显示当最新拟合公式计算的湿度定标数据(将字符显示转化为十进制显示)。如下图,从字符显示转为十进制的数据打印图。当前湿度为68%。     然后,发送十六进制命令“2”,等待发送直线拟合方程的浮点系数,窗口提示如下图。如不记得命令可以从新发“0”打印。     最后,将方程的斜率和截距以空格隔开同时输入,并切换为float32格式,点击发送即可。         这时,窗口会显示当前存储的数据个数,选择“0”表示没有定标拟合计算的湿度值,选择“1”表示使用刚才保存的拟合数据进行定标计算的湿度值。以此类推,每输入一次将往下加并显示次数,可以保存多组数据,这也与湿度控制器一样,只不过没有16次那么多。本来应该将输入一个简单的直线方程的计算结果截图说明一下,但时间太久,有些图片已经不在或者当时没有保留。不过这并不影响对定标功能的理解。该项目做到这一步并不是直接的产品,而只是一个样板。定标是为了工厂在批量生产时出厂前的数据校正,不可能用matlab的上位机软件。顺便指出一下,湿度的准确测量有两个难点,一个是标准湿度环境不容易实现,密封性要求非常高,而且要在密封的湿度环境中取样也不容易。另一个就是湿度传感器的特性不一,当前用的湿度传感器在极限温度下将出现异常,这不仅与datasheet不服,而且对不同板子锁相环的中心频率点不好取舍。要达到一定的精度,采集电路还需要改进。         接下来参考我以前写过的文档,将当时联调所遇到的问题以及怎么解决的总结一下(解决是解决了,但分析的原因可能不正确)。   所遇到的问题              解决办法 1.如何通过430单片机发送数据到PC中使Matlab GUI中的Edit控件换行,用于美化打印的命令菜单。 原因:Edit控件接收两种换行命令ASCII码10(LF),16(CR),使用10容易出现跑死,猜测是因为串口接收过程中,定时回调函数与输入缓冲区满回调函数对Edit控件的赋值过程冲突,造成程序跑死。而使用16正常。 2.如何通过PC向430单片机发送4个byte以内的各种数据类型。在发送4byte数据时,单片机中uint32能实时转化保存,而float32不行 原因:之前的接收方法多此一举。因为经过调试发现串口发送的本就是相应数据的数据格式,不必接收后转化为相应类型再保存,可直接受完将缓冲数组保存至FLASH,读取时使用指向需要类型的指针即可。 3.MSP430F2132单片机在IAR环境中,调试容易出现堆栈溢出现象,FLASH各种数据类型存储不方便。系统涉及到长字符串的处理,C语言处理麻烦。设想使用C\C++混编。 堆栈溢出的原因:在2132接收中断处理函数中分支语句不能嵌套2层以上,特别对于分支较多的程序,不能使用switch语句,容易堆栈溢出,同时不能过多的在函数中设定static变量。设定IAR堆栈不能超过250。另外,在线调试的断点数不能超过2个。深层次的原因不详。对于FLASH操作可使用C++中函数重载的方式,对于字符串问题可使用C++中string类,效率比较谁高谁低占不清楚。       经过这两个单片机项目的洗礼,可以说当时几乎把MSP430大小系列的单片机拥有的资源都用了一遍。相比早前用的STC,ARM7,她最大的优势就是低功耗编程模式。所有的代码都是在中断响应内完成的。这完全得益于430较其他单片机复杂的系统时钟结构。最近,我刚接触到了日本的Renesas(瑞萨)M16C/62P系列单片机。要知道,在十大芯片供应商中,以单片机为主的就是瑞萨。我个人认为瑞萨应该就是单片机之王。而在我们身边,又有多少人了解这种单片机。真正看过德国人和日本人做的东西的人就知道,他们一直用的东西到我们手里后,大多都被认为是我们已经被淘汰的东西,但结果却是他们的产品反到经久耐用。我想这就是大量引进外资,进口芯片让我们思想上形成的弊病,求新求快,反正有钱好办事。在这样的思维方式的牵引下,要想摆脱制造转型设计不知道有多难。 附件: 基于matlab的上位机定标软件 RH.rar
  • 热度 1
    2012-8-29 21:01
    148 次阅读|
    0 个评论
        这算是我最后一个用单片机做的项目,到现在已经隔了2年多了。发现对软件上很多细节的地方都生疏了,而硬件则还好。可能是太久没摸单片机的缘故,也可能是用习惯了FPGA,针对任何应用首先考虑的方案都是使用FPGA的解决方案。当然,对于商业应用FPGA还远没有达到取代单片机,甚至完全取代DSP的程度。我想,随着FPGA的普及,尤其在我们这代,学DSP的人越来越少,MCU又五花八门,ARM/CorteX有计算机的抢饭碗,学电子的大多都会选择FPGA。就我所在的小圈里,真正能接触到科技前沿的毫无例外全是FPGA,其他的大多数只能停留在商业层面。话虽如此,不过现今赚钱才是硬道理,行行都能出状元。前段时间看科技频道我爱发明,就有一个人发明了一个光控锁发家了。这也充分说明了单片机也有大智慧,不必一味的追求高科技。     下面和大家一起分享一下这个湿度计,顺便我也小总结一下。     实物图如下:     上位机软件GUI界面:       系统功能概述:该湿度计由湿度采集和显示两部分组成,显示部分通过串口排线与采集部分相连,并采用7段式LED显示湿度值,定标所需的最小二乘法直线拟合参数由上位机软件计算完成并将参数发回湿度计进行定标处理。软件的定标也分手动和自动两部分,定标功能和湿度控制器类似。参见http://bbs.ednchina.com/BLOG_ARTICLE_3006306.HTM         由于湿度显示部分较简单,接下来主要介绍湿度采集部分和上位机软件部分。       湿度采集板概述:该板的主要特点就是小,板子的尺寸只有54*11(mm)。在这个尺寸上放置了单片机MSP430F2132、CD4046、MAX3232、MC34063以及相关的外围电路等。至于电路原理和湿度控制器一样。印象最深的就是手工焊接的时候老是丢东西,而且这款430小单片机不是被静电打坏,就是被焊坏。开关电源的开关芯片也是如此。所以,以后要是再有类似的活我肯定是不合格的,得请专业人士来弄。      上位机软件概述:该软件是在串口调试助手代码的基础上修改的,当时并不是不熟悉VC或者其他语言,主要考虑到自己是学电子,以后主要从事信号处理的研究。参考上面贴出来的GUI界面,简单介绍一下各部分功能。 左板块:串口调试功能。扩展了10进制显示,uint32与float32发送。 右板块:湿度定标功能 1:设定任意5个由低到高的标准湿度环境 2:手动读取湿度值,记录读取次数,5次循环显示,清除数据。 3:定时自动读取湿度值,可设置环境切换时间与取样等待时间。 4:5次取数后进行数据拟合,打开图形窗打印拟合曲线与样点。同时得到拟合曲线方程系数,等待发送。 PS:通过调试已经加入了系统运行调试操作出错处理消息框。     从打印出的菜单中可以看到有0~4这五种操作模式,单片机的程序和网上很多开发板的test程序类似。 图文说明如下:    首先,发送十六进制命令“0”,打印菜单(此时字符显示)。     其次,发送十六进制命令“1”,显示当最新拟合公式计算的湿度定标数据(将字符显示转化为十进制显示)。如下图,从字符显示转为十进制的数据打印图。当前湿度为68%。     然后,发送十六进制命令“2”,等待发送直线拟合方程的浮点系数,窗口提示如下图。如不记得命令可以从新发“0”打印。     最后,将方程的斜率和截距以空格隔开同时输入,并切换为float32格式,点击发送即可。         这时,窗口会显示当前存储的数据个数,选择“0”表示没有定标拟合计算的湿度值,选择“1”表示使用刚才保存的拟合数据进行定标计算的湿度值。以此类推,每输入一次将往下加并显示次数,可以保存多组数据,这也与湿度控制器一样,只不过没有16次那么多。本来应该将输入一个简单的直线方程的计算结果截图说明一下,但时间太久,有些图片已经不在或者当时没有保留。不过这并不影响对定标功能的理解。该项目做到这一步并不是直接的产品,而只是一个样板。定标是为了工厂在批量生产时出厂前的数据校正,不可能用matlab的上位机软件。顺便指出一下,湿度的准确测量有两个难点,一个是标准湿度环境不容易实现,密封性要求非常高,而且要在密封的湿度环境中取样也不容易。另一个就是湿度传感器的特性不一,当前用的湿度传感器在极限温度下将出现异常,这不仅与datasheet不服,而且对不同板子锁相环的中心频率点不好取舍。要达到一定的精度,采集电路还需要改进。         接下来参考我以前写过的文档,将当时联调所遇到的问题以及怎么解决的总结一下(解决是解决了,但分析的原因可能不正确)。   所遇到的问题              解决办法 1.如何通过430单片机发送数据到PC中使Matlab GUI中的Edit控件换行,用于美化打印的命令菜单。 原因:Edit控件接收两种换行命令ASCII码10(LF),16(CR),使用10容易出现跑死,猜测是因为串口接收过程中,定时回调函数与输入缓冲区满回调函数对Edit控件的赋值过程冲突,造成程序跑死。而使用16正常。 2.如何通过PC向430单片机发送4个byte以内的各种数据类型。在发送4byte数据时,单片机中uint32能实时转化保存,而float32不行 原因:之前的接收方法多此一举。因为经过调试发现串口发送的本就是相应数据的数据格式,不必接收后转化为相应类型再保存,可直接受完将缓冲数组保存至FLASH,读取时使用指向需要类型的指针即可。 3.MSP430F2132单片机在IAR环境中,调试容易出现堆栈溢出现象,FLASH各种数据类型存储不方便。系统涉及到长字符串的处理,C语言处理麻烦。设想使用C\C++混编。 堆栈溢出的原因:在2132接收中断处理函数中分支语句不能嵌套2层以上,特别对于分支较多的程序,不能使用switch语句,容易堆栈溢出,同时不能过多的在函数中设定static变量。设定IAR堆栈不能超过250。另外,在线调试的断点数不能超过2个。深层次的原因不详。对于FLASH操作可使用C++中函数重载的方式,对于字符串问题可使用C++中string类,效率比较谁高谁低占不清楚。       经过这两个单片机项目的洗礼,可以说当时几乎把MSP430大小系列的单片机拥有的资源都用了一遍。相比早前用的STC,ARM7,她最大的优势就是低功耗编程模式。所有的代码都是在中断响应内完成的。这完全得益于430较其他单片机复杂的系统时钟结构。最近,我刚接触到了日本的Renesas(瑞萨)M16C/62P系列单片机。要知道,在十大芯片供应商中,以单片机为主的就是瑞萨。我个人认为瑞萨应该就是单片机之王。而在我们身边,又有多少人了解这种单片机。真正看过德国人和日本人做的东西的人就知道,他们一直用的东西到我们手里后,大多都被认为是我们已经被淘汰的东西,但结果却是他们的产品反到经久耐用。我想这就是大量引进外资,进口芯片让我们思想上形成的弊病,求新求快,反正有钱好办事。在这样的思维方式的牵引下,要想摆脱制造转型设计不知道有多难。 附件: 基于matlab的上位机定标软件 RH.rar
  • 热度 1
    2012-8-29 21:00
    201 次阅读|
    0 个评论
        这算是我最后一个用单片机做的项目,到现在已经隔了2年多了。发现对软件上很多细节的地方都生疏了,而硬件则还好。可能是太久没摸单片机的缘故,也可能是用习惯了FPGA,针对任何应用首先考虑的方案都是使用FPGA的解决方案。当然,对于商业应用FPGA还远没有达到取代单片机,甚至完全取代DSP的程度。我想,随着FPGA的普及,尤其在我们这代,学DSP的人越来越少,MCU又五花八门,ARM/CorteX有计算机的抢饭碗,学电子的大多都会选择FPGA。就我所在的小圈里,真正能接触到科技前沿的毫无例外全是FPGA,其他的大多数只能停留在商业层面。话虽如此,不过现今赚钱才是硬道理,行行都能出状元。前段时间看科技频道我爱发明,就有一个人发明了一个光控锁发家了。这也充分说明了单片机也有大智慧,不必一味的追求高科技。     下面和大家一起分享一下这个湿度计,顺便我也小总结一下。     实物图如下:     上位机软件GUI界面:       系统功能概述:该湿度计由湿度采集和显示两部分组成,显示部分通过串口排线与采集部分相连,并采用7段式LED显示湿度值,定标所需的最小二乘法直线拟合参数由上位机软件计算完成并将参数发回湿度计进行定标处理。软件的定标也分手动和自动两部分,定标功能和湿度控制器类似。参见http://bbs.ednchina.com/BLOG_ARTICLE_3006306.HTM         由于湿度显示部分较简单,接下来主要介绍湿度采集部分和上位机软件部分。       湿度采集板概述:该板的主要特点就是小,板子的尺寸只有54*11(mm)。在这个尺寸上放置了单片机MSP430F2132、CD4046、MAX3232、MC34063以及相关的外围电路等。至于电路原理和湿度控制器一样。印象最深的就是手工焊接的时候老是丢东西,而且这款430小单片机不是被静电打坏,就是被焊坏。开关电源的开关芯片也是如此。所以,以后要是再有类似的活我肯定是不合格的,得请专业人士来弄。      上位机软件概述:该软件是在串口调试助手代码的基础上修改的,当时并不是不熟悉VC或者其他语言,主要考虑到自己是学电子,以后主要从事信号处理的研究。参考上面贴出来的GUI界面,简单介绍一下各部分功能。 左板块:串口调试功能。扩展了10进制显示,uint32与float32发送。 右板块:湿度定标功能 1:设定任意5个由低到高的标准湿度环境 2:手动读取湿度值,记录读取次数,5次循环显示,清除数据。 3:定时自动读取湿度值,可设置环境切换时间与取样等待时间。 4:5次取数后进行数据拟合,打开图形窗打印拟合曲线与样点。同时得到拟合曲线方程系数,等待发送。 PS:通过调试已经加入了系统运行调试操作出错处理消息框。     从打印出的菜单中可以看到有0~4这五种操作模式,单片机的程序和网上很多开发板的test程序类似。 图文说明如下:    首先,发送十六进制命令“0”,打印菜单(此时字符显示)。     其次,发送十六进制命令“1”,显示当最新拟合公式计算的湿度定标数据(将字符显示转化为十进制显示)。如下图,从字符显示转为十进制的数据打印图。当前湿度为68%。     然后,发送十六进制命令“2”,等待发送直线拟合方程的浮点系数,窗口提示如下图。如不记得命令可以从新发“0”打印。     最后,将方程的斜率和截距以空格隔开同时输入,并切换为float32格式,点击发送即可。         这时,窗口会显示当前存储的数据个数,选择“0”表示没有定标拟合计算的湿度值,选择“1”表示使用刚才保存的拟合数据进行定标计算的湿度值。以此类推,每输入一次将往下加并显示次数,可以保存多组数据,这也与湿度控制器一样,只不过没有16次那么多。本来应该将输入一个简单的直线方程的计算结果截图说明一下,但时间太久,有些图片已经不在或者当时没有保留。不过这并不影响对定标功能的理解。该项目做到这一步并不是直接的产品,而只是一个样板。定标是为了工厂在批量生产时出厂前的数据校正,不可能用matlab的上位机软件。顺便指出一下,湿度的准确测量有两个难点,一个是标准湿度环境不容易实现,密封性要求非常高,而且要在密封的湿度环境中取样也不容易。另一个就是湿度传感器的特性不一,当前用的湿度传感器在极限温度下将出现异常,这不仅与datasheet不服,而且对不同板子锁相环的中心频率点不好取舍。要达到一定的精度,采集电路还需要改进。         接下来参考我以前写过的文档,将当时联调所遇到的问题以及怎么解决的总结一下(解决是解决了,但分析的原因可能不正确)。   所遇到的问题              解决办法 1.如何通过430单片机发送数据到PC中使Matlab GUI中的Edit控件换行,用于美化打印的命令菜单。 原因:Edit控件接收两种换行命令ASCII码10(LF),16(CR),使用10容易出现跑死,猜测是因为串口接收过程中,定时回调函数与输入缓冲区满回调函数对Edit控件的赋值过程冲突,造成程序跑死。而使用16正常。 2.如何通过PC向430单片机发送4个byte以内的各种数据类型。在发送4byte数据时,单片机中uint32能实时转化保存,而float32不行 原因:之前的接收方法多此一举。因为经过调试发现串口发送的本就是相应数据的数据格式,不必接收后转化为相应类型再保存,可直接受完将缓冲数组保存至FLASH,读取时使用指向需要类型的指针即可。 3.MSP430F2132单片机在IAR环境中,调试容易出现堆栈溢出现象,FLASH各种数据类型存储不方便。系统涉及到长字符串的处理,C语言处理麻烦。设想使用C\C++混编。 堆栈溢出的原因:在2132接收中断处理函数中分支语句不能嵌套2层以上,特别对于分支较多的程序,不能使用switch语句,容易堆栈溢出,同时不能过多的在函数中设定static变量。设定IAR堆栈不能超过250。另外,在线调试的断点数不能超过2个。深层次的原因不详。对于FLASH操作可使用C++中函数重载的方式,对于字符串问题可使用C++中string类,效率比较谁高谁低占不清楚。       经过这两个单片机项目的洗礼,可以说当时几乎把MSP430大小系列的单片机拥有的资源都用了一遍。相比早前用的STC,ARM7,她最大的优势就是低功耗编程模式。所有的代码都是在中断响应内完成的。这完全得益于430较其他单片机复杂的系统时钟结构。最近,我刚接触到了日本的Renesas(瑞萨)M16C/62P系列单片机。要知道,在十大芯片供应商中,以单片机为主的就是瑞萨。我个人认为瑞萨应该就是单片机之王。而在我们身边,又有多少人了解这种单片机。真正看过德国人和日本人做的东西的人就知道,他们一直用的东西到我们手里后,大多都被认为是我们已经被淘汰的东西,但结果却是他们的产品反到经久耐用。我想这就是大量引进外资,进口芯片让我们思想上形成的弊病,求新求快,反正有钱好办事。在这样的思维方式的牵引下,要想摆脱制造转型设计不知道有多难。 附件: 基于matlab的上位机定标软件 RH.rar
相关资源
  • 所需E币: 1
    时间: 2020-6-17 15:34
    大小: 4.35MB
    上传者: sense1999
    本电子书建立在使用MATLAB 进行机器学习的基础上,后者回顾了机器学习基础知识,并介绍了监督和无监督学习的技术方法。我们使用心音分类器为例,向您介绍真实世界中的机器学习应用程序从加载数据到部署训练模型的整个开发流程。对于每个训练阶段,我们将演示取得精确模型的关键技术,帮助您掌握更具挑战性的训练任务,包括选择算法、优化模型参数和避免过拟合。在本电子书中,您还将学习如何将模型转变成预测工具,具体包括在新数据上进行训练、提取特征以及生成代码部署到嵌入式设备。
  • 所需E币: 1
    时间: 2020-6-17 15:35
    大小: 5.58MB
    上传者: sense1999
    深度学习是机器学习的一个类型,该类型的模型直接从图像、文本或声音中学习执行分类任务。通常使用神经网络架构实现深度学习。“深度”一词是指网络中的层数—层数越多,网络越深。传统的神经网络只包含2层或3层,而深度网络可能有几百层。
  • 所需E币: 1
    时间: 2020-5-31 09:15
    大小: 321.61KB
    上传者: 星空下的屋顶
    QPSK调制与解调(Matlab仿真).pdf
  • 所需E币: 1
    时间: 2020-5-31 09:38
    大小: 27.25MB
    上传者: 星空下的屋顶
    精通MATLAB最优化计算(第2版)(龚纯,王正林).pdf
  • 所需E币: 0
    时间: 2020-5-28 16:24
    大小: 4.44MB
    上传者: Rain社管
    现代数字图像处理技术提高及应用案例详解MATLAB版--源码
  • 所需E币: 0
    时间: 2020-5-20 17:22
    大小: 139.89MB
    上传者: Argent
    模电数电是电路的基础,掌握基础才能更好的理解智能芯片的工作原理,万物互联,没有电路的支持,一切都是废墟。射频无线,创造无限可能,5G的兴起,FPGA的火爆,快来下载基础性的资料吧,让你从零开始掌握底层电路的实现原理。
  • 所需E币: 1
    时间: 2020-4-27 15:23
    大小: 43.53MB
    与传统的电励磁同步电机相比,永磁同步电机(PermanentMagnetSynchronousMotor,PMSM)具有结构简单、运行可靠、体积小、质量轻、损耗小、效率高,以及电机的形状和尺寸可以灵活多样等显著优点。近年来,随着材料技术的不断发展,永磁材料性能的不断提高,以及永磁电机控制技术的不断成熟,PMSM已经在民用、航天和军事等领域得到了广泛应用。然而,PMSM是一个多变量、强糯合、非线性和变参数的复杂对象,为了获得较好的控制性能,需要对其采用一定的控制算法。随着现代控制理论的不断发展,近年来有关PMSM控制算法的研究已经成为研究热点,并已有大量文献发表在国内外学术期刊和专著上。因此,为了使广大工程技术人员能够充分了解、掌握和应用这一领域的最新技术,学会用MATLAB仿真软件进行相关PMSM控制算法的设计,作者编写了本书,以抛砖引玉,供广大读者学习参考。本书是在总结作者多年研究成果的基础上,进一步理论化、系统化和实用化而形成的;是基于目前较为先进的MATLAB2014b仿真软件,在总体上按照由浅人深、由易到难的原则进行编写的。本书具有如下特点:①对三相和多相PMSM控制算法进行详细的剖析,将传统控制算法与改进控制算法相结合,并介绍一些近年来相关文献提出的有价值的新思想、新方法和新技术,取材新颖,内容先进。②针对每一种PMSM控制算法都给出了完整的MATLAB仿真建模方法,同时给出了程序的说明和仿真结果,为读者提供了有益的借鉴。③所给出的各种PMSM控制算法描述完整,出处明了,并且仿真模型设计结构采用模块化方法,便于读者自学和二次开发。④章节内容相对独立,便于读者根据自身的研究方向进行深入的研究。本书分为3部分共10章。第1部分为基础篇,包括第1~4章,第1章介绍三相PMSM的数学建模方法,第2章介绍三相电压源逆变器PWM技术,第3章介绍几种常用的三相PMSM矢量控制MATLAB仿真建模方法,第4章介绍三相PMSM的直接转矩控制MATLAB仿真建模方法。第2部分为进阶篇,包括第5章和第6章,第5章介绍基于基波数学模型的三相PMSM无传感器控制MATLAB仿真建模方法,第6章介绍基于高频信号注人的三相PMSM元传感器控制MATLAB仿真建模方法。第3部分为高级篇,包括第7~10章,第7章介绍六相PMSM的数学建模方法,第8章介绍六相电压源逆变器PWM技术MATLAB仿真建模方法,第9章介
  • 所需E币: 0
    时间: 2020-4-18 14:42
    大小: 73.24KB
    上传者: 青草
    matlab教程张志勇
  • 所需E币: 5
    时间: 2020-4-7 11:38
    大小: 421.82KB
    上传者: 238112554_qq
    OFDMSimulationUsingMatlabOFDMSimulationUsingMatlabSmartAntennaResearchLaboratoryFacultyAdvisor:Dr.MaryAnnIngramGuillermoAcostaAugust,2000OFDMSimulationUsingMatlabCONTENTSAbstract..............................................................................................11Introduction..................................................................................12OFDMTransmission....................................................................22.12.2DVB-TExample...................................................................2FFTImplementation............................................................43OFDMReception..........................................................................94Conclusion.................................................……
  • 所需E币: 4
    时间: 2019-12-26 01:18
    大小: 309.22KB
    上传者: 微风DS
    强大的Kalman滤波开发包(matlab版源码)……
  • 所需E币: 5
    时间: 2019-12-26 00:34
    大小: 32.62KB
    上传者: 978461154_qq
    matlab辅助小波分析与应用源代码……
  • 所需E币: 4
    时间: 2019-12-25 22:53
    大小: 45.25KB
    上传者: givh79_163.com
    基于matlab的指纹识别系统,采用基于细节点对比,输入图像必须是256×256,8-bit灰度值,500dip的指纹。……
  • 所需E币: 3
    时间: 2019-12-25 22:49
    大小: 106.54KB
    上传者: givh79_163.com
    本文档是基于MATLAB的遗传算法的源程序,适合读者参考与学习。……
  • 所需E币: 5
    时间: 2019-12-25 22:50
    大小: 74.81KB
    上传者: 978461154_qq
    描述了CCSLink与CCSIDE的基本概念,介绍了建立CCS对象的过程,并以MATLAB提供的实际工程文件为例,演示了利用CCSLink连接和嵌入式对象进行C变量操作的实际过程,并对其执行过程和结果进行了简要解释.……
  • 所需E币: 3
    时间: 2019-12-25 22:50
    大小: 211.8KB
    上传者: 16245458_qq.com
    利用MATLABLinkforCCSDevelopmentTools对典型的DTMF信号检测系统进行了仿真设计,给出了设计该DSP系统的步骤和结果。采用Goertzel算法实现DTMF解码器,并利用MATLABLinkforCCS观察在DSP硬件上DTMF信号检测的整个过程。本课题可以作为电子信息类专业本科生“专业综合实验”的一个内容。……
  • 所需E币: 3
    时间: 2019-12-25 22:50
    大小: 408.31KB
    上传者: givh79_163.com
    语音识别(SpeechRecognition)是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。在课题中,通过采用DTW(Dynamictimewarping,动态时间伸缩)算法,对实现孤立词的识别进行了初步探讨和研究,实现了在MATLAB软件环境下孤立词语的语音识别,并针对DTW的主要特点及不足做出了总结。-SpeechRecognition(SpeechRecognition)machinesisthroughrecognitionandunderstandingofaprocesswhichputthevoicesignalintothecorrespondingtextorcommandtechnology.Theissue,throughtheuseDTW(Dynamictimewarping,dynamictimetelescopic)algorithmtoachieveanisolatedwordrecognitionconductedapreliminaryexplorationandstudy,therealizationoftheMATLABsoftwareenvironmentisolatedwordsofSpeechRecognitionandDTWagainstthemainfeaturesanddeficienciesmakesummarized.……
  • 所需E币: 3
    时间: 2019-12-25 22:04
    大小: 163.09KB
    上传者: wsu_w_hotmail.com
    本书系统地介绍了数字信号处理的理论、相应的算法及这些算法的软件与硬件实现。全书共14章,分为上、下两篇,每篇各7章。上篇内容包括离散时间信号与离散时间系统的基本概念、Z变换及离散时间系统分析、离散傅里叶变换、傅里叶变换的快速算法、离散时间系统的相位、结构与状态变量描述、数字滤波器设计(IIR、FIR及特殊形式的滤波器)等;下篇内容包括信号的正交变换(正交变换的定义与性质、K-L变换、DCT及其在图像压缩中的应用)、信号处理中若干典型算法(如抽取与插值、子带分解、调制与解调、反卷积、SVD、独立分量分析及同态滤波等)、平稳随机信号的基本概念、经典功率谱估计、参数模型功率谱估计、数字信号处理中的有限字长问题及数字信号处理的硬件实现等内容。书中介绍了数字信号处理中所涉及的绝大部分MATLAB文件,并给出了使用的具体实例。所附光盘中包含了40个分别用FORTRAN语言和C语言编写的信号处理子程序,此外还包含了近100个用MATLAB编写的信号处理程序,这些MATLAB程序可用于求解书中的绝大部分例题并绘制其插图。除第14章外,本书每一章都配有习题及上机练习题。……
  • 所需E币: 5
    时间: 2019-12-27 19:27
    大小: 392.93KB
    上传者: givh79_163.com
    本文设计的基于PWM的孤立逆变电源,其控制模型采用电压外环和电流内环双环控制策略,电压外环和电流内环均采用PI控制方式。应用Matlab软件建立实验模型进行仿真,通过仿真验证了控制系统设计方案的合理性,以及双环控制策略的应用效果,分析仿真结果证明了系统设计方案的合理性和有效性。基于Matlab的孤立逆变源电路设计随着新能源技术的发展,微电网技术得到了越来越广泛的应用。逆变源作为微电网的主要组成部分,逆变源工作的稳定情况直接影响到微电网的电能质量。PWM逆变器输出波形的质量和动态性能主要决定因素是采用控制和实现方法。基于Matlab软件平台,采用双环控制策略设计的逆变源,利用Matlab-Simulink-SimPowerSystems的工具箱进行建模仿真,验证了本文所设计方案的可行性和有效性。0引言随着太阳能、风能等可再生能源的发展,分布式发电以其环境污染少、能源综合利用率高、供电可靠等优点,逐渐成为了各国家竞相研究的热点,在美国、欧洲等技术成熟的国家和地区,以将其广泛应用在微电网中。逆变电源作为一种有效的电力供应源,成为了微电网的重要组成部分,并在微电网的研究和实施中得到了广泛的应用。本文设计的基于PWM的孤立逆变电源,其控制模型采用电压外环和电流内环双环控制策略,电压外环和电流内环均采用PI控制方式。应用Matlab软件建立实验模型进行仿真,通过仿真验证了控制系统设计方案的合理性,以及双环控制策略的应用效果,分析仿真结果证明了系统设计方案的合理性和有效性。1PWM逆变器的电路结构和工作原理在交-直-交变频器中,通常要求直流电路采用可控硅整流电路,如图1(a)所示。逆变输出的电压Uo的大小可以通过改变Ud的大小来控制。通过对逆变器触发电路频率的控制,可以改变输出电压Uo的频率。但是,这种变频电路存在有缺陷:如果输出的交流电压为含有较多谐波的矩形波,这无论是对负载或是交流电网都是不利的;如果输出功率用相控方式来调节,就会使输入……
  • 所需E币: 5
    时间: 2019-12-25 21:36
    大小: 23.52KB
    上传者: quw431979_163.com
    本文主要介绍基于DSP的数字滤波器的设计,使用CCS5000Simulator实现FTSK数据输入,使用FIR滤波器对FTSK调制信号进行处理,输出需要的波形与频谱。文中采用线性缓冲区和带移位双操作寻址的方法实现FIR滤波器……
  • 所需E币: 3
    时间: 2019-12-25 21:18
    大小: 1.09MB
    上传者: 2iot
    TheUWBReceiverPMC/XMCcardfeaturesthemostadvancedarchitectureforultra-fastsignalcaptureandreal-timeprocessinginwide-bandradiosystersandsimilarwidespectumapplications.……
广告