新唐单片机项目总结

最近做了两个单片机项目,新唐的029和mini58ZDE的MCU,都是cortex-M0,一个厂家所以API基本一致,大致了解了串口中断及定时器功能以及ADC采样相关的编程内容。

4G项目即mini58zde,主要是从GPS中读数据然后从另外一个串口转发出去

GPS模块  ------ 串口1接收 ----数据处理组包 -----串口0发送------上位机

GPS模块是不断地有数据来,数据格式为

$GNRMC,014053.00,A,3205.65222,N,11853.26056,E,0.038,,030817,,,D,V*18

$GNGGA,014053.00,3205.65222,N,11853.26056,E,2,14,0.81,52.6,M,3.1,M,,*41

$GNGSA,A,3,01,09,11,16,08,30,28,,,,,,1.36,0.81,1.09,1*0A

$GNGSA,A,3,03,07,08,01,02,04,13,,,,,,1.36,0.81,1.09,4*08

$GPGSV,4,1,16,01,47,176,41,04,12,058,,07,66,274,,08,55,026,30,0*63

$GPGSV,4,2,16,09,10,223,30,10,03,059,28,11,72,198,46,16,16,098,45,0*6F

$GPGSV,4,3,16,17,02,245,23,22,05,152,18,23,02,197,,27,23,049,18,0*65

$GPGSV,4,4,16,28,17,303,37,30,36,311,29,42,43,137,42,50,43,137,42,0*67

$BDGSV,3,1,10,01,48,143,43,02,37,232,39,03,53,196,43,04,33,121,35,0*78

$BDGSV,3,2,10,05,16,252,,07,76,112,44,08,69,219,44,10,74,327,,0*7E

$BDGSV,3,3,10,13,43,220,42,17,50,110,,0*75

$GNTXT,1,1,01,ANTENNA OPEN*3B

主要处理的数据是GNRMC和GNGGA,用了状态机的方法判断前面GMRMC/GNGGA之后直接判断是否是 ‘*’,因为逐个判断状态太多,很复杂而且容易出错,读取到 * 之后,再读校验位,校验成功的话,将数据拷贝到 处理缓冲区置标志位,在主程序中检测标志位,然后处理数据,更新数据

串口0 既要接受命令也要返回数据,串口0的数据接受为固定长度的,在这里也使用了状态机,提取出命令码之后,将命令码写到命令队列中,这样就能及时响应下一个命令,不用死等,数据接收与数据处理独立运行,不会造成高耦合的现象

串口0 接收数据提取命令码---------压入命令队列 POP(中断中实现)

串口1 接受提取有效数据-------------更新GPS数据结构体(中断中实现)

主程序 读取命令队列----------------出列PUSH ,根根不同的命令将GPS数据组包通过串口0发出去。

主程序中使能看门狗,使用定时器喂狗。

开发中遇到的一些问题:

1.设计思路有问题,没理清流程,一开始以为接受到命令码马上处理,造成串口0一直要等待

2.看门狗操作寄存器是写保护,要先解保护才能操作,厂家给的示例不对,造成看门狗使能失败,喂狗失败。

3.状态机使用出错,状态太多,两条命令混合处理,造成代码混乱,很难理清。

4.铁塔协议花了很久才明白是怎么一回事,要多看代码才行。

5.内部时钟的配置,要根据实际情况来,没有外部时钟就不能用,

029电源控制模块:

电源充放电管理的一个小模块,几个条件限制充放电

低于5度不充电,电压低于6.1V或者放电时间到了20MIN不放电

使用了GPIO的中断 确定什么时候开始放电,电源关闭,下降沿触发,电池开始放电。重新上电,上升沿,电池可以开始充电。代码很简单主要是ADC采样还有定时器中断的问题,

电压和温度都是通过ADC采样转换实现的,使用内部温度,一个管脚配置成温度传感器,然后进行ADC采样,电压基准源采用的是3.3V,这个项目没有串口,打印会造成很多异常,debug下正常但正常跑起来却有问题,所以调试时尽量少用或者不用printf,整个程序很简单,就是控制GPIO口

开发中遇到的一些问题:

1.添加printf造成程序异常,定时器异常

2.一上电就进行ADC采样不对,电压还没有升上来,采样的值很小,等待10ms之后采样值就对了

3.float 数据计算及比较要注意

时间: 2024-11-08 01:36:32

新唐单片机项目总结的相关文章

ARM手记之新唐M0系列

NUC1xx系列是32位的内嵌ARM Cortex-M0核的微控制器 ,适用于工业控制和需要丰富的通信接口的应用领域.ARM Cortex-M0 内核最高运行50MHz.宽电压工作范围 由2.5V 至 5.5V. 1.ARM  Cortex-M0 内核 Cortex-M0处理器是32位多级可配置的RISC处理器.它有AMBA AHB-Lite接口和嵌套向量中断控制器(NVIC),具有可选的硬件调试功能,可以执行Thumb指令,并与其它Cortex-M系列兼容.支持两种模式:Thread模式和Ha

李克强:在量子通信等重点领域启动新的科技项目

李克强:在量子通信等重点领域启动新的科技项目 李克强主持召开国务院常务会议 国务院总理李克强7月20日主持召开国务院常务会议,通过“十三五”国家科技创新专项规划,以创新型国家建设引领和支撑升级发展:部署推进互联网+物流,降低企业成本便利群众生活:通过<国务院及其各部门任命的国家工作人员宪法宣誓组织办法>. 会议指出,创新是引领发展的第一动力.为进一步落实全国科技创新大会精神,依据国家“十三五”规划纲要,对未来五年科技创新进行系统谋划和前瞻布局,是实施创新驱动发展战略.建设创新型国家的重大举措,

新浪sae 项目之 git 配置

新浪sae 项目现在支持git 配置了,但是有好多人配置不成功.下面对这个问题进行一个总结. 1. 在新浪云上面新建项目(该步骤省略) 2. 一般新建完毕后,会让你选择代码的管理工具,如下 注意这里,使用 git 之后,就不能再使用其他的方式对代码进行管理.我们选择git 方式,然后确定. 3. 查看生成的远端项目地址 一般一个项目新建完毕后,我们会在网页上看到上面信息,注意sae 版本信息,意味着,1,2, 实际上代表的是你在本地一个1.2 的文件夹. 4. 本地同步远端代码 ①初始化本地gi

基于新唐M0的XXTEA加密解密算法源码

源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------------------------------------- 在数据的加解密领域,算法分为对称密钥与非对称密钥两种.对称密钥与非对称密钥由于各自的特点,所应用的领域是不尽相 同的.对称密钥加密算法由于其速度快,一般用于整体数据的加密,而非对称密钥加密算法的安全性能佳,在数字签名领域得到广 泛的应用.

创建新的Android项目,Eclipse自动创建的appcompat内容

====================问题描述==================== 更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容.并且是创建一个新的内容就会出现.这到底是怎么回事,本来MainActivity的是继承Activity的,创建出来的项目继承的是ActionBarActivity.选主题的是就是none.大家又遇到这样的问题? 如果我删除appcompat_v7这个内容,便会出现各种各样的其他问题.我快崩溃了!  ==========

新唐Cortex-M0微控制器的省电管理

新唐科技的NUC1xx包含NUC101.NUC100.NUC120.NUC130和NUC140,是以ARM Cortex-M0为核心的32位微控制器(MCU),经由不同时钟的设定,最高可以达到 50MHz的运作频率.然而在一般简单控制或系统负载较低时,CPU并不需要执行在最高的运行时钟下即可应付所需要的计算量.这时候,便可以利用系统时钟的控制来降低时钟,以达到省电的目的. 另一种情况是CPU因为等待下一个工作或只需要久久工作一次时,就可以先将CPU进入Idle或Power Down模式,等到一定

liunx新装tomcat之后,tomcat不能识别新发布的项目

遇到的问题 在liunx新装tomcat之后,发布之前的项目,发现在tomcat不能识别新发布的项目,打成war包,还是直接把项目拷贝过去都不行. 环境:主机:win10 虚拟机:CentOS-6.5-x86_64-minimal JDK:jdk-8u201-linux-x64 虚拟机:VMware 在浏览器上可以访问tomcat主页,访问项目路径报404错误. 经过分析之后,发现将日志拷贝到主机上查看和在linux tail -f看到的内容不一样,发现xftp的时间和liunx的时间也不一致,

[转帖]中信银行信用卡业务数据库实现国产替换,湖北银行新核心系统项目正式验收,阿里云与MongoDB达成战略合作

中信银行信用卡业务数据库实现国产替换,湖北银行新核心系统项目正式验收,阿里云与MongoDB达成战略合作 http://www.itpub.net/2019/10/31/3942/ 中信银行 goldenDB 湖北银行 达梦数据库 中信银行信用卡业务数据库实现国产替换 10月31日,由IT168旗下ChinaUnix社区主办的第十一届中国系统架构师大会(SACC2019)在北京召开. 会上,中信银行软件开发中心/技术平台开发处副处长刘文涛不仅分享了中信银行IT架构的转型探索与实践,还宣布基于完全

新唐的icp和isp

ICP 的意思是 "在电路编程"(in Circuit Programming),PC 电脑可以运行 “NuMicro ICP Programming Tool”软件通过 Nu-Link 的 SWD 接口(serial wire debug) 去更新目标板上的 APROM, LDROM, Data Flash 和用户配置字.ISP 的意思是“在系统编程”(In System Programming),目标板通过运行 LDROM 里的启动/加载代码调用外部的接口,如 USB/UART/S