基于DC10的串口扩展编程

2016-11-22 01:58白玉李智
电子设计工程 2016年15期
关键词:看门狗中断串口

白玉,李智

(沈阳航空航天大学 电子信息工程学院,辽宁 沈阳 110136)

基于DC10的串口扩展编程

白玉,李智

(沈阳航空航天大学 电子信息工程学院,辽宁 沈阳 110136)

出租车车载智能终端项目是一个linux系统和安卓的一个项目,主要运用到的就是串口通信。本课题针对该系统中的串口数目不足的问题,设计了基于STM32F103RCT6微控制器和uc/os ii操作系统的串口扩展系统。采用上海大潮电子技术有限公司设计的一款基于STM32RCT6的串口扩展板DC10进行串口扩展,实现车载智能终端主机和一些外设串口数据的接收和转发。详细描述了扩展系统的软硬件设计。通过大量的实车测试,在出租车的一天运营过程中,转发数据基本不会出错,完全可以用于实际应用。

STM32RCT6;uc/os ii;串口;CAN总线;定时器;看门狗

uc/os ii是专门为计算机的嵌入式应用设计的,该操作系统是一款较为简单的实时操作系统,uc/os ii是一种基于优先级的可抢先的硬实时内核,具有实时任务调度的功能,拥有信号量等机制可以同步任务[1]。

STM32RCT6是基于ARM Cortex-M3处理器的一款大容量的产品,采用四方扁平式封装,共有64否个引脚,flash高达256 kB,ARM Cortex-M3处理器是专为低功耗、小尺寸、短的中断延时和优越的确定性而设计,性价比很高。

课题是大潮电子技术有限公司的出租车的电调系统终端的一部分,该电调系统终端主机开发环境是Linux系统,因串口资源不够,故需增加串口,开发出一款基于STM32RCT6的DC10板,本课题就是基于DC10板的串口扩展系统的设计,负责主机和外设、出租车之间的通信。

1 系统硬件设计

本课题是基于DC10板的通信系统的设计,DC10板如图1所示,系统主要由3部分组成:STM32自检模块、与主机交互模块、和外设、出租车通信模块。系统主控制器选用STM32F103RCT6微控制器来进行通信的控制,USART1、USART2、USART3、UART4连接 RS232串口,UART5连接RS485串口,该DC10版的功能和连接方式如图2所示。

图1 DC10板实物图

2 系统软件设计

2.1 软件编程环境

本次课题所使用的开发环境是MDK 4.70 A,是ARM公司于2009年开发出的一款开发软件,其编译器、调试工具都实现与ARM器件最完美的匹配。本次所使用的正是ARM开发出来的Cortex-M3处理器。

2.2 uc/os ii 操作系统

图3是uc/os ii体系结构,,内核源代码分为3部分,第一部分为与硬件无关的内核代码,第二部分是与处理器有关的一直代码,第三部分为用户配置文件[2]。

图2 系统总体结构图

图3 uc/os ii体系结构

2.3 串口的配置

在本次课题中,STM32拥有的5个串口都被全部引出,其中串口1~4连接的RS232,串口5连接的是RS485,485接口在总线上是允许连接多达128个收发器,具有多站能力[3]。

串口2连接的是计价器,通过该串口与主机进行通信,用于交流营运数据。串口3连接的是232串口摄像头,在必要的时候进行拍照,保留本地数据并且可以上传至平台。串口4连接的是出租车顶灯,用于显示此时出租车的状态。串口5在此次设计中进行保留,为以后增加功能时使用。

串口1与主机进行数据通信,通过该串口实现其他外设(比如计价器、串口摄像头、顶灯等)与主机的交互功能。

5个串口的波特率默认9 600 bps,可以由终端主机发送数据进行设置更改(具体更改哪一个串口,由数据中的ID决定),其他配置都是一样而且固定的,数据位为8位,1位停止位,无奇偶校验位,无硬件流控制[4]。

所有的串口的管脚配置如图4所示。

图4 串口管脚配置

其中USART1和UART4使用了管脚重映射功能,所谓串口重映射说的是串口的接收发送等引脚映射到其他的地址上,在STM32中有些功能具有管脚重映射功能,甚至有些功能还具有部分重映射和完全重映射[5]。

USART1复用功能重映射如表1所示:

表1 USART1复用功能重映射

下面是USART1复用功能重映射的配置代码,“//”后面的是注释:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_USART1,ENA BLE); //USART1端口重映射

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1

2.4 其它的配置

时钟:本次课题所使用的时钟是外部高速时钟,DC10板上外部晶振的频率为12 MHz,经过6倍频设置之后,APB1上时钟频率为36 MHz,APB2上时钟频率为72 MHz,AHB上时钟频率为72 MHz。图5是根据STM32的大容量产品的时钟树使用外部高速时钟的时钟配置流程[6]。

图5中,不分频后6倍频之后的频率:12/1*6=72 MHz,在配置时钟的同时,还应该进行flash的一些配置:

①FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//配置flash预取指使能

②FLASH_SetLatency(FLASH_Latency_2);//FLASH的等待周期为两个周期

配置FLASH延时两个周期是进行等待总线同步操作。0~24 MHz时,取Latency=0;24~48 MHz时,取Latency=1;48~72 MHz时,取Latency=2,本次频率为72 MHz。

图5 时钟配置流程

中断:STM32的NVIC中断优先级被分成5个组,组0~4,该分组的设置有SCB->AIRCR寄存器的bit10-8来定义的,该值决定了抢占优先级和响应优先级的位数,抢占优先级高的中断可以打断抢占优先级低的中断,响应优先级则不能,响应优先级只有当抢占优先级相同且中断同时到达才发挥作用。本次所采用的中断分组是1组,即一位抢占优先级,三位响应优先级。

具体中断优先级配置如表2所示:

表2 中断优先级配置

50 ms定时任务:该任务使用TIM3的定时功能触发中断配合uc/os ii的信号量机制进行同步,可以进行精准的定时[7],该任务实现独立看门狗和外部看门狗的喂狗操作、获取定时器的速度脉冲的计数(可以在主机终端发送速度获取命令时,计算速度发送至主机)。

外部看门狗:本功能使用的芯片是X25043,用SPI总线驱动。SPI_MOSI连接X25043的SO引脚,SPI_nSS引脚连接X25043的CS引脚。使用SPI_MOSI引脚进行配置X25043,首先需要发送写使能,再发送写状态数据寄存器,最后发送要配置的状态数据到X25043的状态寄存器即可配置成功。看门狗复位时间有3种选择:1 400 ms、600 ms和200 ms。本次配置选择600 ms。想要X25043不进行复位,则必须使得该模块的CS引脚不断地切换状态,在上面的50 ms定时任务中EXDOG就是该引脚的状态。

TIM1速度脉冲:STM32RCT6是大容量的一款新片,所以带有两个高级定时器,TIM1和TIM8,其中TIM1_CH2也就是PA9被用来进行速度脉冲的测量。STM32的计数器的时钟选择可以分成4类,具体分类如图6所示。

①来自RCC的内部时钟TIMx_CLK

②芯片内部其他定时器的触发输入ITR1、ITR2、ITR3和ITR4

③外部时钟源模式1——外部捕获引脚上的边沿信号

>>Pin1:TI1FP1或TI1F_ED

>>Pin2:TI2FP2

④外部时钟源模式2——外部引脚ETR。

图6 STM32的计数器的时钟选择

库函数中:TIM_ITRxExternalClockConfig函数设置 TIMx内部触发为外部时钟模式

TIM_TIxExternalClockConfig 函数设置 TIMx触发为外部时钟

因为本次选择的是TIM1_CH2引脚,所以只能是用外部时钟源模式1,配置代码如下:

TIM_TIxExternalClockConfig (TIM1,TIM_TIxExternal-CLK1Source_TI2,TIM_ICPolarity_Rising,0);

CAN通信:CAN总线是现场总线的一种,已经成为汽车控制系统和嵌入式工业控制局域网的标准总线。CAN通信是通过发送邮箱发送数据,接收数据是通过FIFO,CAN总线能支持多个节点,每个报文里具有一个标识符,报文的标识符不代表节点的地址,而是和报文的内容相关的,当总线上有数据发送时,其他节点都接收,通过接收过滤器识别该报文是否是是发送给自己的。

3 结束语

串口通信是最基本的通信方式,也是使用最广的一种通信方式。设计了以STM32为核心的串口通信系统,结构简单,占用资源较少。经过特定的协议解析,实现了串口数据的上传和转发,该系统已经经过测试并投入使用,能够更加深刻的理解和使用串口。

[1]Joseph Yiu.ARM Cortex-M3权威指南 [M].宋岩,译.北京:北京航空航天大学出版社,2008.

[2]任哲,房红征.嵌入式实时操作系统UC/OS-11原理及应用[M].3版.北京:北京航空航天大学出版社,2014.

[3]胡成华,刘传瑞,郭文生.嵌入式网络编程:串口通信、工业总线、传感器网络应用开发[M].北京:电子工业出版社,2012.

[4]陈瑶,李佳,宋宝华.Cortex-M3+μC/OS-II嵌入式系统开发入门与应用[M].北京:人民邮电出版社,2010.

[5]刘军,张洋,严汉宇.原子教你玩STM32(库函数版)[M].北京:北京航空航天大学出版社,2013.

[6]刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2013.

[7]Jean J.Labrosse.嵌入式实时操作系统uC/OS-II[M].邵贝贝,译.北京:北京航空航天大学出版社,2007.

Serial port expansion program based on DC10

BAI Yu,LI Zhi
(Electronic and Information Engineering,Shenyang Aerospace University,Shenyang 110136,China)

Taxi vehicle intelligent terminal project is a project based on linux system and android and mainly use serial communications.Due to the shortage of the number of serial in the taxi vehicle intelligent terminal project,we extand serial by using DC10 board and realize receiving and forwarding intelligent vehicle terminal host and some peripheral serial data.Forwarding data cann't basically go wrong by a large of real vehicle tests during a day of opetations.It's completely used in practical application that serial expansion system based on STM32F103RCT6 and uc/os ii operating system in the design.

STM32RCT6;uc/os ii;serial port;CAN bus;timer;watchdog

TP271

A

1674-6236(2016)15-0171-03

2015-07-17 稿件编号:201507132

白 玉(1969—),女,辽宁沈阳人,硕士,副教授。研究方向:嵌入式系统应用。

猜你喜欢
看门狗中断串口
一种嵌入式计算机系统的看门狗设计
浅谈AB PLC串口跟RFID传感器的通讯应用
把他叫醒
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
跟踪导练(二)(5)
千里移防,卫勤保障不中断
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式