毕设v0.1完成,CC2530实现燃气报警。

来源:互联网 发布:如何建立网络共享 编辑:程序博客网 时间:2024/04/16 23:28
本来预定的是从v0开始的,结果AD转换出了点小意外,只能加一个v0.1了。这算是自己真正开始做的一个小项目了吧?还有比较有意义的,认真对待,而且Blog也是时候好好写写了。

先说说毕设,很幸运的考上研了,所以毕设肯定也就跟着老师一起做了,实验室里正做着一个智能家居的项目,我刚好赶上了,所以也分配了一个小部分。内容嘛,就是可燃气体检测报警系统,顾名思义,就是检测可燃气体浓度,当高于一定值的时候自动报警和切断燃气源。

现在初步实现Ti cc2530和探头的连接,v0.1程序也跑起来了,现在探头采集到数据可通过AD转换送到2530中,暂时实现采用的是串口接收数据到PC中,以后会与基站连接。


总结一下自己的经验吧。
1. 延时程序还是不可少的。本来想着反正是测试,可以手动控制,结果就是自己不是什么时候都能空出一只手点下一步的!

2. 时钟和振荡器初始化。因为ADC的存在,所以晶振只能用32 MHz XOSC, 设置时钟的时候参考TI的程序,这里有一点不明白的,在设置时钟源的时候参考程序用的是SLEEPCMD &= ~0x40; 但是SLEEPCMD的第6位(从第0位开始)是保留的,这是为什么呢?是为了兼容?除去对SLEEPCMD的设置,只有CLKCONCMD &= ~0x47, 这个能理解,但是为什么不用等晶振稳定就直接完成了呢?

3. 串口的初始化。首先是要设置PERCFG, 外设控制和PXSEL, 功能选择。再就是开关中断和串口的各个SFR设置。

4. ADC初始化。先肯定还是外设控制PERCFG和功能选择PXSEL, 吭爹的是ADC是个特殊功能!!怎么没注意到这个呢?有一个PACFG要设成AD输入!再是ADCCON1通用设置,再是ADCCON2和3设置,一个是序列转换,一个是单次转换,一般应该只用一个吧?然后就开始转吧!BTW,精度的设置也比较纠结,用了两个寄存器放结果,低位寄存器只用高6位,低2位保留。高位寄存器8位都能用。精度问题,有7个有效位,一位作符号我懂,但是12位有效位是为什么呢?一共14个位,那多出来的两位都作符号位吗?如果是的话,那为什么要双符号位呢?
CC2530/2430的ADC有效位降到了12位,而且转出来的结果都是左对齐,也就是从ADCH开始存。
问题解决来源于:http://blog.csdn.net/xukai871105/article/details/7318886。感谢。
这里还有一个问题,放到后面说。

5. 主要疑问。我用的探头是MQ7,主要是因为测试时它对打火机有反应。要求的是5V输入,我用的2530的开发板5V输出接上了,可是为什么用万用表测用成了3V呢?改用3.3V输出时,也变成3V,所以不是引脚问题吧?换板子也一样,换探头也一样。这是肿么了?
再就是4里的问题,ADC的参考电压,我选用的是AVDD5作为参考电压,理论上应该是3.3V的参考吧?但是结果总有偏差,最后我用的万用表测出来的电压作参考电压计算,也就是上面那个改变了的电压,结果却对了,这又是肿么了呢?
原创粉丝点击