高温传感项目调试日记

2015-6-27

1.Link to sources

新建工程路径中既没有源代码,也没有库,源代码和库在系统文件夹里

如果这时修改库或源代码,系统文件夹中的也相应修改。等到下次新建或者其他工程要包含这个库时,可能就不是原来的版本

2.Link libraries and copy sources

新建工程路径中有源代码,没有库,库在系统文件夹里

3.Copy contents

新建工程路径中既有源代码,也有库


比较推荐2或3


2015-6-29

第一次用example编译,发现提示有如下问题

Couldn't reserve space for cygwin's heap

去silab的线上找技术支持,发现有人遇到相同的问题,具体可参考下面链接

http://community.silabs.com/t5/Simplicity-Studio-and-Software/Couldn-27t-reserve-space-for-cygwin-27s-heap-2C-Win32-error-0-0D/m-p/143919/highlight/true#M10171


出错的原因大概是一个dll文件没有更新,他们也给出了一个新的dll,下载地址:http://download.csdn.net/detail/u011388550/9013065


STK3300左下角的开关忘记拨了,导致下载程序的时候,系统提示这个设备不兼容。

因为开关没有拨,MCU是没有上电的,但Jlink是上电的,系统可以识别出Jlink,但却识别不出设备。


2015-8-15

最近调试串口,发现只要一进串口中断,程序就卡死,后来发现,罪魁祸首是中断处理的函数名写错了。中断一直在寻找那个函数,又一直找不到。

其实这个中断函数是从官网上down下来的,可能是lib的版本不一样了,串口UART都需要改成USART。


2015-8-16

大概隔了一个星期没有动STK3300了,这次拿起来用,发现电脑识别不出Jlink了,下载不了,调试不了,回想一下,大概是有一次把泡椒水撒在了USB口和Jlink的地方,板子时好时坏的,撑了几次,终于一直都不行了。于是寻找解决方案,最简单粗暴的方法就是TB重新来一块,但TB的价格比较贵,便宜的也要250左右,官网卖的价格是29.9美元,但这个价格在中国享受不到,国内买要60美元,还不如上TB,TB卖家也说了,他们也是要国外订货,再发来这边。看来小壁虎的热门程序远不如STM32啊。后来发现有一种调试方式是JlinkOB,就是onboard,且SWD模式下,只需要4根线就可以调试了,STK3300留了相应的外置DEBUG接口。JlinkOB成功工作,但没过多久,JlinkOB又不行了。于是我又需要来回倒腾,重装Simplicity Studio、重装驱动、不断重启,好像都不是治本的方法,虽然一时可以调试了,但拔下来之后,过段时间再插上去,就又不行。

后来发现,可能是Jlink驱动的问题,我电脑上有2个版本的驱动,一个v4.8,一个v5.0,v5.0的是可以用的,猜测可能是因为两个版本的驱动的问题。


2015-8-22

调试串口的时候发现一个问题,已发送的index竟然比数据缓冲区中等待发送的index还要大1,导致程序混乱.

刚开始认为:出现这个问题的原因是串口的发送数据缓存区太小,只有512byte,程序中会一次将488byte放入数据等待区发送,这个buffer是循环存储的,如果发送得过慢,后面的会把前面的覆盖掉。

后来经过实践发现,这个不是缓存区大小的问题,而是我边组帧边发送的问题,我组一帧(8byte)就发一次,这样容易出乱,至于是怎么出得乱,debug了一天也没找出问题,如果可以用print函数调试,应该会比较容易定位出问题。出错的原因不知道,但如何修改还是很容易的,就是一次把所有的数据帧都组好,然后一起发送,比如一次要发送61帧,那么就是488byte,将488byte组好之后,一起发送,这样就不会出现上述问题了。


2015-9-2

今天看了EFM32中的LCD Driver,之前都没有接触过片上外设LCD驱动,且LCD都是集成好的,只要单片机往LCD里写简单的命令就可以了。这里要了解的,是更直接的驱动。

在上图中,当不通电压时,液晶的排列是渐变的,此时入射光的偏振方向会一点一点地改变,到达反射层并能成功地出去,这时,这一段就是透明的,可以说是关闭显示。

在下图中,当通电时,液晶会整齐排列,入射光的偏振方向与反射层的偏振方向正交,导致无光射出,这时,这一段呈现出黑色,可以说是开启显示。

那么要点亮一段LCD,只需要两个电极即可,也可以是两个引脚


这里给的电压必须是交流电,这跟数码管不同,若给直流电的话,液晶的排列只会持续很短的时间,因为直流电会影响液晶的工作,所以我们应该给一个RMS为0的信号。下图是两段LCD的工作原理,这种工作方式成为静态工作方式,有n段LCD,就需要n+1个引脚,缺点是引脚量太大;优点是省电,显示的对比度好。



下图给出的是另一种工作方式:复用工作方式,这种方式可以减少引脚,可以连接的LCD的段数是com和seg的乘积。这时,电平的模式就不能像静态方式一样是两电平,而是要多电平,这时LCD的off也只是相对的,相对on来说,波动小,显示不明显。如果段数增加,要想保持显示效果,那么就需要增大电压、增加电平数,那么相应地就会增大能耗


EFM32TG840中有8个com,24个seg,那么相应地就有8*24bit的寄存器,将该寄存器设置为1,外设就会配合产生方波波形,去点亮这个segmengt。com与seg具体对应LCD里的哪一段,这个需要看LCD的文档。


2015-9-06

今天发现要使用板载的Jlink必须要连上JlinkOB小模块(后来发现不是这个问题,而是拨码开关接触不好,开关接上了,JlinkOB就会亮;开关没接上,JlinkOB就不会亮。会让人误以为是JlinkOB的原因)


2015-9-8

今天把JlinkOB小模块用SEGGER J-link Configuration V5.02a 更新了一下"Update firmware of selected emulators",然后这个小模块就可以用于调试了(用Simplicity Studio调试,用Keil是一直可以调试的)。

奇怪,之前刚买来的时候也是可以的,后来不知道为什么就不可以了。

后来用了几次,本来可以的,就又不可以用了,很是奇怪。

现在是用Keil调试,但感觉Keil没有Simplicity Studio好用


2015-9-12

想在Simplicity Studio上面调试程序,但自己做的板子只能用JlinkOB来调试,而JlinkOB只能在Keil上面使用,这个就恨麻烦,这周搞了一个星期的eclipse下编译cortex都失败了,还下了许多软件,Emblock、CoIDE,都感觉不好用,还试着刷Jlink的固件版本,但刷完后的Jlink不能使用,最后还是在Keil上写程序了,但明显感觉Keil没有eclipse好用。


2015-9-14

在924用示波器,感觉924没有接地,示波器使用一段时间,探头的地线就会放出静电。这个静电就把EFM32的OPA P2的引脚烧掉了,通过放大器进入ADC的D值是一直不变的。


2015-9-22

word与硬件系统有关,若是32位机,1word=4bite;若是16位机,1word=2byte.

在Keil编译完成后,会给出程序的大小:

Program Size:Code=10938      RO-data=446      RW-data=88      ZI-data=3608,这里每个数字的单位是byte

Code:程序代码部分

RO-data(ReadOnly-data):程序定义的常量,const

RW-data(ReadWrite-data):已初始化的全局变量

ZI-data(ZeroInitiate-data):未初始化的全局变量

Code、RO-data、RW-data占用Flash

RW-data、ZI-data占用RAM

MCU初始化时,由于RAM是掉电不保存的,RAM刚开始是空的,RW-data从Flash拷贝到RAM,Flash是掉电保存的,所以程序中的一切信息都保存于Flash中

在移植uCOS到EFM32TG840F32(Flash:32K;RAM:4K)中时,原本每个任务的堆栈是256byte,共20个任务,于是编译不通过,提示错误RAM不够


将任务数量减小到3,任务堆栈减小到16,编译通过,可以看出这时的RAM=3608+88,已经接近4K

从这个ucos可以看出,一个ucos大概需要10K的Flash和4K的RAM,所以在我这个EFM32项目上用ucos不太好,移植了系统,还有自己的程序需要占用空间。


2015-9-30

在Modbus的函数中将数据从[512]增大到[640],程序就会跑入HardFault_Handler死循环,可能是堆栈太大,后来改成不在函数中定义数组,而是将数组定义成static,放在全局变量区,也实现了对本文件的可视,对全局的隐藏

导致HardFault_Handler的原因一般是:

1. 数组越界
2. 野指针
3. 未初始化硬件却开始操作,或无中断服务函数等


2015-10-1

有时候在编译QT时,会莫名其妙地提示“无法解析的外部符号”,若确定代码没有问题,那么我们需要手动删除目录下的debug文件夹,然后重新构建项目。

客户希望线性化的数据可以不要每次都手动输入,能把目录下的Excel导入就方便很多。于是找了许多excel在QT下的库,最后看到一个BasicExcel(http://www.codeproject.com/Articles/13852/BasicExcel-A-Class-to-Read-and-Write-to-Microsoft),这是一个有关excel操作的类,且只有一个cpp和一个hpp,非常简洁,操作可参考上面那个网址,也可以参考http://www.linuxidc.com/Linux/2011-06/37581.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
压力传感multism仿真是一种模拟和分析压力传感器的工作性能的方法。Multism是一种电路模拟和分析软件,可以用来模拟和分析具有多种模拟和数字功能的电路。压力传感multism仿真将电路中的压力传感器作为研究对象,通过Multism软件进行仿真分析。 在压力传感multism仿真中,首先需要建立一个包含压力传感器的电路模型。通过Multism软件提供的元器件库,可以选择合适的压力传感器元件,将其添加到电路中。然后,根据压力传感器的工作原理和参数,设置相应的电路参数,如供电电压、参考电压等。 完成电路模型的建立后,可以进行仿真分析。通过输入不同的压力信号,模拟实际应用环境中的不同压力情况。Multism软件会根据电路模型和输入信号,计算出压力传感器的输出信号。通过观察输出信号的变化,可以分析压力传感器在不同压力下的工作性能,如灵敏度、线性度等。 通过压力传感multism仿真,可以评估和优化压力传感器的设计。可以通过调整电路参数,比如增加放大器增益,改变滤波器参数等,来改善压力传感器的性能。同时,还可以通过仿真分析,探索不同压力条件下的传感器响应,并根据实际需求进行调整。 总之,压力传感multism仿真是一种有效的方法,可以帮助工程师了解和优化压力传感器的性能,在产品设计和制造过程中具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值