1、wwwele169com|3电子电路设计与方案0 引言Real Time-Thread(RT-Thread)是一种国产的包括线程管理、调度管理、中断管理和系统时钟管理的实时操作系统,广泛被学者引用学习13。文献 4 采用功能分离机制,在 STM32L431 上实现 RT-Thread 的移植并将可执行二进制程序和用户程序分开下载到闪存。文献 5 基于实时多线程系统,设计一种水下潜航器,并进行通信测试,实现了RT-Thread 操作系统的驱动移植和调试运行。在文献 6 中,将 Cortex-M3 内核与特定的变换加速模块相结合,设计可用于数字信号预处理的专用处理器,简单高效。在文献7中,设计了物
2、联网多传感器数据采集系统,有效地实现了灾害的预警处理。然而聚焦于嵌入式实时操作系统与 MCU 及其外围电路功能实现的文献却很少出现。文章探讨物联网仪表板载 PCB 嵌入式 MCU 及其外围电路的设计和功能验证。行文思路首先是对外围电路及功能验证所用到的部分软、硬件作简要介绍(如表 1 所示);其次是对燃气仪表主控板 MCU 及其电源切换、74LS148 编码器等外围电路的设计;最后使用检测板对主控板设计的电路逐一进行功能验证。本文的贡献如下:(1)电源切换设计可满足主控板多元化供电需求、引入 74LS148 优先编码器判断传感器或开关量的状态、各功能状态可在 LCD 显示屏直观展出,电流表可通
3、过继电器触头接入,用以判断 MCU 在低功耗模式下主控板电源的功耗。(2)对照图 17 所示功能验证流程,用检测板对生产的仪表主控板功能进行检测,功能异常可快速定位,提高生产效率。1 系统组成系统的部分软、硬件及其作用如表 1 所示。图 1 为系统的硬件连接,图 2 是图 1 的抽象结构图。主控板包含MCU 及其外围电路,烧录有验证程序的检测板对主控板的电源控制、串口收发等功能进行验证,转接板用于传感器及开关量的电平测试。表1 系统软、硬件 名称 作用(用途)软件Keil Vision5(MDK编译器)Altium Designer16 代码编写、调试及运行 检测板、主控板PCB绘制硬件工装壳
4、体主控板、检测板万用表、示波器已移植RT-Thread的MCU外部PC机 为整个系统提供测试平台 MCU外围电路设计、功能验证 测量电参数、抓取波形 系统控制电路的核心 用于软件安装、工装壳体的通信连接 图 1 系统硬件连接MCU电源切换复位、晶振、下载ADC转换UARTLCD显示编码器主控板检测板开关电源24V220V外部PC电流表RXTX转接板主要用于对传感器及开关量电平的测试图 2 抽象结构图基于 FM33LG048 微控制单元外围电路的设计与功能验证周智勇,叶庆红,王超群(上海航天能源股份有限公司,上海,201112)基金项目:上海航天技术研究院系统专项基金项目资助课题(SAERD20
5、21009);上海市工业互联网项目(2018-GYHLW-02030)。摘要:微控制单元(MCU)作为物联网仪表的核心控制部件,对它稳定、可靠的要求也越来越高。仪表印刷电路板如电源控制、串口收发、液晶显示(LCD)、传感器输入/输出(I/O)接口、闪存等功能由MCU及其外围电路的耦合实现。本文在Keil Vision5开发环境下,以主控板为载体,设计了以MCU为核心,包含电源切换、串口异步收发传输(UART)、LCD、74LS148编码器等外围电路。在检测板中烧录验证程序,通过调试,实现了主控板的MCU各外围电路的功能验证。结果表明,串口、LCD、传感器I/O接口、低功耗等各项功能均为ok状态
6、,主控板电源在MCU处于低功耗模式下的功耗为32.4W,在百微瓦最大功耗要求范围内;LCD可快速定位检测正常与否,提高物联网仪表良品生产效率。关键词:MCU;外围电路;主控板;检测板;功能验证;低功耗DOI:10.16589/11-3571/tn.2023.03.0014|电子制作 2023 年 2 月电子电路设计与方案2 MCU 外围电路设计 2.1 电源切换和电流表接入设计为满足嵌入式燃气仪表的供电电源需求,设计有市电经开关电源整流为直流 5V 或者电池 3.6V 供电。当继电器触头 K1、K2 均向上拨时,此时仪表主控板由电池电源+3.6V供电;当继电器触头 K1 向下拨、K2 向上拨时
7、,此时仪表主控板由外接电源+5V 供电;当继电器触头 K1、K2 均向下拨时,AMP_IN 接入 3.6V,AMP_OUT 为低电平,接入电流表,用以判断是否满足低功耗要求。通过 switch()语句设置 GPIO_k1、GPIO_k2 的高低电平来控制继电器触头K1、K2 的拨向。切换控制图如 3 所示。void power_switch(uint8_t para)/外接电与电池供电的切换 switch(para)case 0:set_GPIO_k1(0);/设置 GPIO_k1 为低电平,3.6V 电池供电 break;case 1:set_GPIO_k1(1);/设置 GPIO_k1 为
8、高电平,5V 外接电供电 break;case 2:set_GPIO_k2(0);/设置 GPIO_k2 为低电平,不接入电流表 break;case 3:set_GPIO_k2(1);/设置 GPIO_k2 为高电平,接入电流表 break;2.2 复位、晶振及下载电路设计复位电路可使 MCU 回到初始状态,若缺少复位电路可能使得MCU中RAM、FLASH、计数器、中断等程序的错乱89。图 4 中,MCU 采用低电位 RC 复位电路,开关 S1 按下时,RESET 电位被拉低;松开时,RESET 电位上升,实现复位。C29104/0805R4101/0805S1SW-PBGNDVCC_3.3
9、VR310K/0805RESET 图 4 MCU 复位12Y132.768KHzC2630/0805C2530/0805XTALINXTALOUTGND 图 5 晶振电路对于 FM33LG048MCU 而言,芯片内包含 32kHz 低频晶体振荡电路、最高 36MHz 高频振荡器、32kHz 低功耗内部环振、512kHz 低频环振和一个锁相环。调试时,内部晶振设置为 12MHz,接入到 MCU 的晶振电路如图 5 所示。程序烧录时选择 J-LINK 调试器,与 MCU 接口连接电路如图 6 所示。TMGNDSWIO1235RESETJ1SWD-HDI6VCC_3.3VSWCLK 46 图 6 下
10、载电路cbeQ1R101K1KR912345678K1Relay-DPDT+5VD8SS14GNDGNDGIPO_k1+5V+3.6VQ2S8050R121K1KR11D9SS14GIPO_k2+5V+3.6V227CC27GND227CC30+5V+5VAMP_INAMP_OUTV_BATTV_EXITC28104/0805C31104/080512345678K2Relay-DPDTGNDS8050ebc图 3 切换控制图wwwele169com|5电子电路设计与方案 2.3 ADC 转换设计ADC,即将模拟量转变为数字量,分为采样、量化、编码等过程1011。由于该MCU 内部集成了 AD
11、 转换模块,所以只需要在 MCU 的输入模拟量引脚进行采样,然后在需要的数字量输出设置测试点即可。本文需要进行 ADC 转换的引脚有 ADC_MCU、ADC_VDD_4G、ADC_SENSOR6、ADC_SENSOR5、ADC_SENSOR4、ADC_SENSOR3、ADC_SENSOR2、ADC_SENSOR1,转换电路如图 7 所示(给出了ADC_SENSOR1,剩余传感器的转换同理)。2.4 UARTUART,用于串口异步收发,是系统中各电路模块通讯的“桥梁”12。UART有 8 种工作方式,如表 2 所示。为简单起见,本文 UART 配置为工作方式 0,波特为115200。图 8 为两
12、路 UART 交互示意图,由图可知,若要实现主从 UART 的串口通信,必须满足:(1)主机端(仪表的 MCU)通过 UART1发送的指令从机端(串口指令接收端)要能够接收到,并且从机端能对接收到的指令做出反馈,通过 UART2 发送反馈指令;(2)主机端能够接收到从机端发来的反馈指令,以确保主机、从机端的发送和接收均为正常。表2 UART工作方式 方式 data_bit第9位 start_bit stop_bit0 8无111 8无122 9奇校验113 9 奇校验124 9 偶校验1159偶校验1269自定义1179自定义12bit 0bit 1bit 2bit 3bit 4bit 5bi
13、t 6bit 7TXRXTXRXbit 0bit 1bit 2bit 3bit 4bit 5bit 6bit 7Data BusUART1UART2Data Bus 图 8 UART 之间的交互 2.5 MCU 外围 LCD 显示电路设计图 9 为 MCU 与 LCD 的连接示意图,LCD 显示使用 I2C协议,要使显示屏正常显示,片选端 CS 需置为低电平13。读数据时,字符有可能是中文或其他 ASCII 码支持的形式。若存在中文时,首先应将可能需要展示的中文字体库列出,以便显示屏显示不出现乱码。需要注意的是,显示屏所支持的最大行数为 4,当显示行数大于 4 时,需要考虑翻页,具体为:(1)
14、需要展示的行数为 m,每页支持的最大行数为 n;若 m n,m%n=0,则 pages=m/n;(3)若 m n,(m%n)!=0,则 pages=m/n+1。显示屏的翻页如图 10 所示。图 10 显示屏翻页 2.6 MCU 外围编码器电路设计工业用燃气仪表的工作环境在室外,需要众多传感器采ADC_MCU_EN312Q7NTR4502PT1GR49220RR504.7KR514.7KC4210nFGNDADC_VDD_4GADC_MCU312Q8NTR4502PT1GR52220RR534.7KR544.7KC4310nFGNDVDD_4GMCU_VCC3.3VDD_4G_ENR944.7K
15、R954.7KC4410nFGNDADC_SENSOR1S1_VDD图 7 MCU 的外部 ADC 转换电路图C35104/0805C3410uFLCD1_SCLLCD1_RESLCD1_A0LCD1_CSLCD1_SIR241kR251kR261kR271kR281kLCD_A0RLCD_SCLRLCD_CSRLCD_SIRLCD_RESRGNDR18510/1206VCC_3.3VVCC_3.3VC37104/0805GNDLCD1_BLLCD1_BL1 23 45 67 89 101 11 121 13 141 15 16P3LCDGNDF8JK-SMD0805-010图 9 LCD 显
16、示电路6|电子制作 2023 年 2 月电子电路设计与方案集不同的参数。该仪表含有用六个传感器接口(三个用于采集压力、温度、流量等,其余均为备用接口),并使用 3 片74LS148 判断传感器 IO 接口及信号量的状态。为便于对传感器的检测,将传感器的引脚转接到外部转接板。在图 11中,A0、A1、A2 为编码器的输出端(低电平有效),管脚07 为编码器的输入端(低电平有效),EI 端低电平有效。根据编码器真值表,传感器及开关量状态判断方法如下:(1)首先将传感器数字量输入端引脚的 GPIO 引脚配置为输出高电平模式;(2)将编码器的输出端 A0A1A2 输出全为高电平的情况下,再将传感器各
17、IO 口配置为低电平,查看编码功能是否完好;(3)若三个编码器的 A0A1A2 端均为低电平时,则传感器的 IO 口正常;(4)异常判断:在(2)和(3)的条件下,若三个编码器中,有一个编码器的 A0A1A2 端全为高电平时,则可判断为传感器 1 异常(100)或传感器 2 异常(010)或传感器 3 异常(001);在(2)和(3)的条件下,若三个编码器中,有两个编码器的 A0A1A2 端全为高电平时,则可判断为传感器 4 异常(110)或传感器 5 异常(101)或传感器 6 异常(011);在(2)和(3)的条件下,若三个编码器的 A0A1A2 端全为高电平时,则可判断为开关量异常。3
18、功能验证分析本部分用检测板对MCU外围电路进行功能验证,具体为:(1)检测主控板是否安装到工装上;(2)电源切换为3.6V,检测ADC_MCU的3.3V工作电压,如果异常将不再进行后续步骤,如图 12 所示;图 12 MCU 电源检测(3)检测通讯串口功能,由检测板发送字符串“test uart”,与主控板发送内容是否一致进行对比,等待主控板返回信息“uart ok”,超时时间为 2s。否则返回“uart error”,停止检测后续步骤,如图 13 所示;(4)检 测 LCD 显 示 功 能,由 检 测 板 发 送 字 符 串“test display”,用外层 for 循环遍历显示屏要显示的
19、行数,执行写命令;内层 for 循环遍历显示屏要显示的列数,执行写数据,在执行到的行、列地址处是否打印黑点,如果是返回“display ok”,超时时间为 2s。否则返回“display error”,停止检测后续步骤,图 10 为正常显示需要打印的黑点;图 13 串口通讯检测(5)检测板发送指令“test flash”,主控板接收到指令后开始对外部 flash 进行检测。烧录特定数据并读取,若烧录的数据与读取的数据一致,则外部flash正常,返回“flash ok”,超时时间为 2s。否则返回“flash error”,停止检测后续步骤,如图 14 所示;图 14 flash 检测(6)传
20、感 器 IO 口 检 测,检 测 板 发 送 指 令“test sensor”,先检测传感器的所有引脚是不是低电平,如果是返回“sensor ok”,并根据真值表在显示屏显示相应传感器状态,超时时间为 2s。否则返回“sensor error”,停止检测后续步骤,如图 10 所示;(7)低功耗检测,调用 power_switch()使图 3 中的K1、K2 均向下拨。主控板发送指令“test low_power”,MCU 进入休眠状态之前发送反馈“in sleep”,切换到电流表等待稳定后,根据正确报文格式读取电流信息。由表 3及图15可知,电源AMP_IN流经的电流为9微安(数据区),功耗
21、P=(3.6V)(9A)=32.4W,满足低功耗(要求 100WS3IN_1S3IN_2M1_Y01526374E15A2M1_Y1A1M1_Y28GND9010111212313GS14E0154VCC16U674LS148+5VGNDS1IN_1R1311KR1321KR1331KR1341KR1351KR136S1IN_2S1IN_3S2IN_1S2IN_2S2IN_31KR1371KR13867A0图 11 第一片 74LS148 编码器电路图 15 报文信息wwwele169com|7电子电路设计与方案以内),发送反馈“low_power ok”,否则发送反馈“low_power e
22、rror”,检测结束,如图 16 所示。(1)(7)验证流程如图 17 所示。表3 从设备在缓存中正确报文格式 从设备地址功能码数据区字节数数据区CRC校验码所占空间 1字节1字节1字节2字节2字节 图 16 低功耗检测4 结论本文以 FM33LG048MCU 为例,介绍了物联网仪表板载 PCB 的 MCU 及其电源切换、74LS148 编码器等外围电路。在 Keil Vision5 开发环境下,用检测板对主控板串口、LCD 显示、flash、传感器 I/O、低功耗各功能模块进行验证,且均为 ok 状态。主控板在低功耗工作模式下的功耗为32.4W,小于百微瓦的最大功耗。生产过程中,按图 17验
23、证流程,如出现异常可在 LCD 中快速定位,为嵌入式燃气仪表的生产与检测提供依据。参考文献 1 蔡曙光,陈焱焱,马祖长,等.基于 RT-Thread 的便携式健康监测仪的设计 J.电子测量技术,2015,38(11):100-105.2Tian Y,Lin Y W,Tian J D,et al.Multi-thread sensing coil design for metal object detection of wireless power transfer systemsJ.Measurement,https:/doi.org/10.1016/j.measurement.2021.10
24、995.3 赵东升.基于 ARM Cortex-M3 核 MCU 的设计与应用 D.山东大学,2021.4 许明宇,王宜怀,汪恒.面向 ARM Cortex-M 系列 MCU 的RT-Thread 驻留方法 J.现代电子技术,2022,45(4):7-12.5 丁 一 明,李 文 魁,张 煦 光.AUV 运 动 控 制 器 CAN 通 信 模 块 在RT-Thread 上的设计与实现 J.自动化仪表,2021,42(9):10-13.6 郑尧尹.基于 Cortex-M3 核的MCU的设计及应用D.电子科技大学,2022.7 胡茂力.基于物联网的多传感器数据采集系统设计与实现 D.华南理工大学,
25、2016.8 彭伟娣.嵌入式低功耗上电复位与晶振电路设计 D.湘潭大学,2013.9 任克强,王传强.嵌入式可移动无线视频监控平台设计 J.传感器与微系统,2022,41(8):85-88.10 佟星元,张洋.R-C 型逐次逼近ADC D/A 转换网络功耗模型与仿真 J.系 统 仿 真 学 报,2016,28(04):946-950.11 饶成明,杜伟略,蒋松昊.新型MEMS 压力传感器的设计与制造 J.传感器与微系统,2022,41(6):70-73.12 马金平.基于 UART 串口的多机通讯 J.山东大学学报(工学版),2020,50(03):24-30.13 张军才,茹伟,赵腊才,等.
26、I2C 总线测试系统的设计与实现 J.仪表技术与传感器,2016(12):118-120.开始,接通电源否电路板是否安装到工装上?是否MCU3.3V工作电压是否正常?是硬件检查否发送测试命令“testuart”,2秒内是否有“uart ok”返回?串口异常发送测试命令“testdisplay”,外层for循环遍历行数写指令,内层for循环遍历列数写数据,是否打印黑点?1:通讯串口功能检测2:LCD扫描显示检测displayerror否display ok是uart ok是3:flash检测发送测试命令“testflash”,烧写特定数据读取对比,2秒内判断写入与读取是否一致?重新安装flash error否flash ok4:传感器检测发送测试命令“test sensor”,在2秒内传感器引脚是否为低电平?sensor error否sensor ok是是5:低功耗检测结束 发送测试命令“testlow power”,进入休眠之前反馈读取电流信息,满足低功耗?是否low_powererrorlow_power ok图 17 功能验证流程图