本帖最后由 wgsxsm 于 2015-5-24 22:51 编辑
照旧,接上篇:
https://bbs.eeworld.com.cn/thread-459940-1-1.html
先感叹下:最后一批(4月17号左右)拿到这个板子的,时间非常紧,期间也想每个周都发表一些分享的文章,可是有一个周时间几乎天天出差在外面,平时都是晚上弄得,浪费了一个周的时间,只好先把整体做完再发文章。截止今天,交作业时间到了,本来想着在LCD上画出采集的信息值呢,也没时间了,现在只是整体功能完成了,当然,好多细节还需要优化。通过这次对NXP双核MCU的学习,收货颇多,了解到先进的MCU双核的工作方式,感觉还是蛮实用的。
言归正传,接下来先概括一下大概的整体功能,然后通过视频和分解详细分享一下自己对各个功能模块的认知。
1.使用的是万利的板子,板载了不少实用的模块,比自己接线搭起来稳定多了,另外自己也扩张了一些模块,先来张全家福:
附上万利开发板的原理图和PCB以便自己以后随时随地查看。
lpc54100_sch.pdf
(82.27 KB, 下载次数: 15)
lpc54100_pcb.pdf
(107.77 KB, 下载次数: 7)
2.功能大致说明:
双核MCU分工:M4负责数字部分,M0+只负责模拟采集。
M4核通过和外设IIC,UART,SPI,RTC,TIMER分别控制时钟模块,温度传感器,HM-06蓝牙模块,LCD和TF卡(FATFS V0.08A)。
M0+核主要是对ADC Channel7进行采集其分压后的电阻值。
系统开机后,会检测各个模块的运作是否正常,如果有问题,会提示启动失败。启动完毕,主界面显示时间、温度、蓝牙信息和采集状态。
时间信息和温度没什么可说的,主要就是RTC设置的每秒一次的警报给出一个更新标志,拿到这个标志后,LCD刷新时间和温度值。
采集状态由板载的按键B2和B3的控制,按下B2可以启动Mailbox的互斥机制,M4核使用RTC的每秒钟的定时功能将所要更新的值地址传送给M0+核,M0+核收到Mailbox中断后,将采集的值赋给该地址,然后通知M4核,M4收到后便将该采集值分别通过LCD显示和TF卡进行储存,这样就完成了启动采集信号并进行记录的动作;启动后,LCD上显示采集进行的状态和采集到的由可调电阻RV1分压后得到的电压值;按下B3可以停止采集信号和记录,LCD上更新采集状态为停止,电压显示消失。记录的格式为了方便显示,都是以可显示的字符记录的,例:记录值15-05-24 18:50:49 00 27.125 3.27 代表的是在该时间点上的温度值和采集的电压值,其中的00为Dummy,系统中未用到,本来是想记录某个按键的按下的,由于时间关系,暂未加入该功能。
HM-06蓝牙模块最后说明:通过手机上的蓝牙串口助手,每次连接和断开以及发送的信息值都可以在LCD上实时更新。可以进行时间同步,实时获取温度值,取代按键B2和B3来进行启动采集并记录。设置时间的格式为:(SET TIME:15-05-24 12:00:00),星期不需要设置,通过年月日可以算出;获取温度的格式为:(GET TEMP:START)和(GET TEMP:STOP)分别可以进行启动和关闭每秒钟接收一次温度值,接收后,手机上的串口助手实时显示温度值;启动和关闭采集记录的格式为:(SET SAMPLE:START)和(SET SAMPLE:STOP)。
3.硬件连接:
除了万利的板载的器件不再做出说明,对自己外加的几个模块给出说明:PCF8563使用的IIC和器件LM75A的IIC公用,即P0.23(1PIN)和P0.24(2PIN),剩余的IIC1和IIC2可以留给别的模块使用;TF卡使用的SPI0和板载的Memery公用总线P0.11(46PIN),P0.12(47PIN),P0.13(48PIN),CS PIN使用的是P0.15(50PIN),CD PIN(探测TF卡是否插入)使用的是P1.12(51PIN);HM-06模块连接的是uart0,即P0.0(31PIN)和P0.1(32PIN),另外模块的第16PIN连接的是P1.10(30PIN),在系统启动时,P1.10给出一个100ms的脉冲值,确保蓝牙模块断开连接进入设置AT指令。
另外,值得一提的是,接入TF卡模块之后,FLASH 25P16无法使用了,不知道是不是蓝牙模块的电路里接的上拉电阻太多导致的,只要接上P0.13PIN(48PIN)之后,就不能再使用了,百思不得其解。
4.软件概述:
把系统用到的PIN功能定义都在board.c做了,这样比较省心。温度传感器LM75A、ADC、LCD部分都是移植的万利的例子,PCF8563时钟模块部分直接参照温度传感器LM75A的驱动就可以获取数据了,记得区分其地址值和寄存器值;TF卡部分移植的是微雪电子的TF卡模块例程中的FATFS的例子,包括硬件模块也是参照他们的方式做的(有兴趣的同学可以移步到这里:
http://www.waveshare.net/wiki/Micro_SD_Storage_Board)例子里只提供了TF卡挂载和查询磁盘容量和可用容量,事件记录部分是之前项目中用到的,开机时建立一个文件编号为00,在该文件中写入采集的数值,记录一小时后,会新建一个编号为01,02,03等的文件记录,。。。记录都是每秒获得数据都是立即写入的,以防掉电丢失掉部分采集未来及记录的信息;蓝牙部分,可谓是花了好几个晚上才弄好的,挺稳定的,每次连接和断开时,LCD上可以及时更新,而且命令的传送每次都可以收到,这部分的功能是这个项目中我最满意的部分,也是我最大的收获;双核部分的有点虎头蛇尾的感觉,只是在M0+核做了ADC采集,相当于双核的功能展示啦;本来在M0+核部分加入LSM303DLHC模块做电子罗盘功能,可惜时间太少了,这个模块之前在参加TI MSP430FR5969时有做过,还算稳定。
最后,我会把软件压缩上传,有用的童鞋记得顶一↓。。。
5.视频
部分:中间夹杂着宝宝的哭闹声,大家自行关闭声音啊,O(∩_∩)O~
优酷部分,慢慢传着。。。
视频来了。。。
A.系统启动
B.蓝牙的连接与断开
C.蓝牙的时间同步
D.蓝牙获取温度
E.蓝牙遥控采集的启动和停止
F.采集+记录1,2
6.记录值也上传一下:
由于温度值不能突变,可调电阻也不能时刻去调,可以断定,记录的数据几乎都差不多。。。,有兴趣的可以下载看看
record files.zip
(26.64 KB, 下载次数: 16)
7.最后是代码包,文件名一直未来得及改,O(∩_∩)O哈哈~
lpcopen_2_14_1_keil_iar_lpcxpresso_54102-done.zip
(6.41 MB, 下载次数: 69, 售价: 1 分芯积分)
8.图片乱入