【武汉芯源】基于CW32L031的NB-IoT水表设计开发

图1 设计系统总框图

第二步:硬件设计及PCB制板

硬件部分主要包括:主芯片、电源、NB模块、存储电路、无线通信模块、红外通讯模块、调试接口、SIM 卡等部分组成。使得水表具有无磁计量、数据存储、无线通信等功能。 主芯片负责采集无磁模块输出的波形,选用CW32L031芯片,L031是武汉芯源半导体有限公司推出的一款低功耗产品,ARM® Cortex®-M0+内核,工作电压可低至1.65V, 且含有三路低功耗 UART,支持小数波特率,支持 LIN 通信接口,一路 SPI 接口 12Mbit/s, 一路 I2C 接口 1Mbit/s,内置 IR 调制器,最低功耗可达到0.4μA。数据通信采用NB-IoT技术,用的是MN316模块。无磁计量模块采用的是Hall元件和叶轮搭配实现水流的计量。系统硬件原理框图如图2所示:

图2 系统硬件原理框图

根据硬件原理框图,设计相关原理图,实物图及原理图如题3、4所示:

图3 NB-IOT水表实物图

图4 NB-IOT水表原理图

****第三步:****软件设计

采用模块化的设计流程,包括:主程序、初始化模块、无磁计量模块、无线通讯模块、数据存储模块、红外接口模块以及远传协议解析模块。主程序负责水表系统在上电以后首先初始化各个模块相应端口的电平参数。 数据存储在 EEPROM 中,可存储水表的各详细数据,包括实时数据、默认参数、上线类型、故障(复位)记录等。具体程序结构如图5所示:

图5 程序组成图

第四步:下载调试

本水表板是需要结合水表基表进行测试的,测试时需要用红外和平台同时测试。物联网水表电子模块焊接完成后,将整表放置在气动走字工装上,并记录基表部分的初始机械读数。运行一段时间后,通过触发水表上的按键开关,将物联网水表的数据上传到生产测试服务器上,并通过显示装置将表内所有的数据显示出来。显示的数据包括水表的累计用量、电池电压、信号强度、物联网卡号、表状态字等,生产检测人员通过上传的数据累计用量,比对机械读数,机电对比判断水表计量是否准确;通过信号强度大致判断表内的天线是否焊接好;通过表状态字判断表内是否有异常报警。如果水表的计量及通讯功能正常,再通过工装或者生产测试系统来控制水表的开关阀,在所有的功能检测完成后,系统将物联网水表的生产测试模块自动切换成出厂运行模式,并测试出厂运行模式的通讯功能,保证参数设置正确。也可以通过专用的测试工装来测试物联网水表的相关功能和设置水表的参数。

功能测试完成后,我们也可以通过上传的数据分析表端的信号强度、电池的状态及表端的故障标志,再通过电流测试设备测试整机的平均功耗,保证所有出厂的物联网水表功能及性能都是合格的,最后将测试的数据及表档案登记、存储,以便所有的出厂的表都有据可查。

【结语】

本文的设计是基于 NB-IoT 通讯的无磁物联网水表,其特点是低功耗,计量精度高、无磁干扰,可做到数据可靠传输,也可做到居民用户的深度覆盖,在通讯上比GPRS和CDMA的覆盖面积和信号强度都好,在一定程度上改善了传统管理模式的种种弊端,符合我国的基本国情,有很强的实用价值。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

### CW32L010 ADC 使用教程 CW32L010 是一款由武汉半导体有限公司推出的高性能、高性价比片,适用于多种应用场景,尤其是仪器仪表设计领域[^5]。该片内置的模数转换器 (ADC) 提供了较高的精度和灵活性,能够满足大多数嵌入式系统的模拟信号采集需求。 以下是关于 CW32L010 片中 ADC 的使用方法及相关配置: #### 1. ADC 基本特性 CW32L010 的 ADC 支持单端输入或多路差分输入模式,具备高达 12 位的有效分辨率。其采样速率可以根据具体应用调整,在快速模式下支持更高的采样频率。此外,ADC 还集成了硬件自动校准功能以及温度传感器接口,便于实现精确测量[^1]。 #### 2. 配置流程 要启用并正确使用 CW32L010 的 ADC 功能,需完成以下几个方面的初始化设置: ##### (1)时钟配置 ADC 的工作依赖于内部时钟,因此需要先通过 RCC(Reset and Clock Control)模块为 ADC 设置合适的时钟频率。通常建议将 ADC 时钟设定为其最大允许范围内的较低值以减少噪声干扰。 ```c // 启用 ADC 所需外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC, ENABLE); ``` ##### (2)通道选择与扫描模式 根据实际需求指定参与转换的一个或多个输入通道,并决定是否开启连续转换或者逐次逼近方式下的多通道轮询操作[^3]。 ```c ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // 单独运行模式 ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 开启扫描模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; // 关闭连续转换 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // 右对齐数据格式 ADC_InitStructure.ADC_NbrOfChannel = 1; // 总共使用的通道数量 ADC_Init(ADC1, &ADC_InitStructure); // 初始化 ADC1 ``` ##### (3)触发机制定义 可以选择软件触发或是外部事件作为启动条件来控制每次 A/D 转换过程的发生时刻[^4]。 ```c // 设置为软件触发 ADC_SoftwareStartConvCmd(ADC1, ENABLE); ``` ##### (4)中断和服务程序编写 当一次完整的转换结束后可能希望立即获取结果,则应注册相应的 ISR 并在其中读取寄存器内容保存下来待后续处理[^2]。 ```c void NVIC_Configuration(void){ NVIC_InitTypeDef NVIC_InitStruct; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStruct.NVIC_IRQChannel = ADC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x01; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x00; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct); } void ADC_IRQHandler(void){ if(ADC_GetITStatus(ADC1, ADC_IT_EOC)){ uint16_t adcValue = ADC_GetConversionValue(ADC1); // 对adcValue进行进一步计算或其他逻辑判断 ADC_ClearITPendingBit(ADC1, ADC_IT_EOC); } } ``` #### 3. 数据处理技巧 对于来自 ADC 的原始数值,往往还需要经过一定的算法优化才能得到更加平滑稳定的最终显示效果。例如采用均值滤波法去除随机误差的影响等常见技术手段。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值