STM32使用概述——远程抄表系统设计
来源:互联网 发布:java accept 编辑:程序博客网 时间:2024/05/19 22:04
在给导师的项目中首次用STM32设计了远程抄表系统,STM32是ST公司一款主频为72MHz的32位单片机,以其强大而方便函数库获得了无数开发者的青睐。根据性能不同可以分为从101-107Tx\Cx\Rx\Vx\Zx几个系列,丰富的外设资源、可达512K的flash容量以及越来越低的价格,以后将可能完全取代8位单片机。
1.选型
远程抄表系统以RS232以及RS485为通信方式,要求至少有10路串口。可STM32系列单片机最多就5个串口,虽然比以前机器人大赛使用的LPC2138对出了三个,但是还不能满足要求。但这已经算是相当多的了。没办法只能通过串口拓展的方式来满足这个设计需求。远程抄表系统需要USB与上位机进行通信,所以选择带USB2.0接口控制器的芯片。另外还需要至少两个SPI接口,一个I2C接口,一个SD/MMC接口以及适当的IO口。也考虑到焊接的方便,选择了STM32F103RE作为主控芯片。该芯片拥有5个原生串口,使用串口1下载程序,串口2-3与上位机通信。串口4-5拓展出10路串口分别转成RS232以及RS485与下位机通信,设计PCB后实际效果如下所示。
2.程序设计流程
远程抄表系统的功能是将SD卡内的配置文件下载到STM32中,再根据不同的地址存入AT24c512中,通过定时对这个地址的下位机进行定时扫描获取数据,将最近的数据一方面以文本的方式存入SD中作为日志文件,另一方面计算每户的使用时间,进行热量分摊,再通过指令的形式上传到上位机中去。还可以完成与上位机以及下位机之间的参数传递与设置。
对于STM32可以使用固定的初始化流程,如下所示,大部分的外设初始化已经做好了封装,使用起来非常方便。
RCC_Configuration();
Delay_Init(72);
GPIO_Configuration();
GM8125_Configuration();
NVIC_Configuration();
USART1_Configuration();
USART2_Configuration();
UART4_Configuration(7200);
UART5_Configuration(7200);
Set_GM8125(1, 57600);
Set_GM8125(2, 57600);
UART4_Configuration(57600);
UART5_Configuration(57600);
USART2_Configuration(9600);
USART3_Configuration(115200);
MMC_SPI_Config(); //SPI3
I2C_mConfiguration();
TIM3_Configuration();//1s定时器
RTC_Config();
其中比较值得提的一点就是中断优先级的初始化,因为使用的中断比较多,各外设中断优先级最好不要嵌套,应该使用同一分组。与大多ARM一样,STM32采用4bit控制优先级,分为抢占优先级NVIC_IRQChannelPreemptionPriority以及相应优先级NVIC_IRQChannelSubPriority。先对优先级控制器进行初始化,确定采用几bit用来分组抢占,几bit用来响应,4bit最多可分为16组,每组一个中断,最少分为一个组,每组16个中断,优先级高的组可以抢占优先级低的组实现中断的嵌套,同组内不能嵌套,但先响应优先级高的中断。在程序设计时,应尽量不出现中断嵌套的情况,所以一共分为一个组。
对于串口拓展芯片GM8125,一片可以拓展5个RS232口,母口是子口通信速率的6倍,母口的波特率可设置。在使用过程中虽然只采用了STM32的一个串口进行通信,但是通过不同IO的选择可以实现5个子口互不干扰的收发数据,就和原生串口一样使用。
- STM32使用概述——远程抄表系统设计
- 远程抄表系统集中器的设计与实现
- GPRS电力系统远程抄表系统解决方案
- GPRS电力系统远程抄表系统解决方案
- GPRS电力系统远程抄表系统解决方案
- 远程自动抄表系统市场前景看好
- 国外远程抄表系统的现状
- 一种基于无线传感网的远程自动抄表系统设计
- 基于STM32温控系统的设计概述
- 基于串口通信的远程自动抄表系统实现
- GPRS电力远程自动抄表系统解决方案
- GPRS电力系统远程抄表系统解决方案[转]
- 基于串口通信的远程自动抄表系统实现
- 国内远程智能抄表系统的发展前景
- ENMS直读式远程集中抄表系统
- 远程控制预付费集中抄表系统
- ST2000R远程居民电表联网抄表系统
- 电力远程集中抄表无线联网系统
- poj Buy Tickets (巧妙的线段树)
- 软件设计师成绩
- C指针的基本概念
- Thrift源码修改,改造RPC,支持多Processor模式(C#客户端调用)
- 软引用、弱引用、虚引用 总结
- STM32使用概述——远程抄表系统设计
- Android 的 Activity 组件
- c++中不用循环计算求和等的方法
- What are the clusters? What are their advantages?
- IDispatch接口原理与应用
- Cycle Count Interface Table - MTL_CC_ENTRIES_INTERFACE
- VS2008 编译SQLite得到lib dll
- 菱形继承
- PE文件和COFF文件格式分析--概述