当前位置:首页 > 基于can总线的温度测控系统的设计本科本科毕业论文
烟台南山学院毕业设计(论文) 第 24 页
5 系统软件设计
5.1 下位机的软件设计 5.1.1 CAN接口的软件设计
由于本系统用到ARM处理器[9],所以用Keil uVision4编译器进行软件的编译设计,它里面集成C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器,通过一个集成开发环境(uVision)将这些部分组合在一起。软件语言应用C语言[10],与其他语言相比,它有着语言简洁、运算符丰富、可以直接对硬件操作、可移植性好的特点,在Keil中生成.hex文件也就是程序通过编译后生成的16进制代码文件,再用J-link下载线通过STC-ISP V391软件下载到ARM里运行。
软件设计主要包括CAN初始化、报文的发送、报文的接收。CAN初始化最重要的是设置CAN的波特率,要根据具体的实际情况而定,通常情况下1Mbps可以最远传送40米的距离,一般波特率的设置会用到PCK1时钟,它可以通过测CANTX引脚上面的波形得出。
图5.1 CAN初始化流程图
1、CAN初始化
烟台南山学院毕业设计(论文) 第 25 页
初始化程序包括对系统时钟(RCC)配置、中断向量控制器(NVIC)配置、输入输出(GPIO)设置、同步异步收发端(USART)配置和CAN配置,其中最重要的是对CAN的设置,CAN_Configuration()函数主要就是用来对CAN寄存器、内核、工作模式、滤波器进行设置,具体流程图如图5.1所示。
2、CAN发送函数
CAN发送函数主要包括选择一个空的邮箱、设置ID、DLC所要传送的消息帧长度设置、请求发送。部分代码如下,其流程图如图5.2所示:
图5.2 CAN发送函数流程图 图5.3 CAN接收函数流程图
3、CAN接收函数
CAN的接收函数跟发送函数正好相反,主要是在参数检查完后进行获取ID、得到DLC和FMI、解析数据帧、最后释放FIFO,其流程图如图5.3所示。 5.1.2 转换器的软件设计
由于CAN总线和RS232工作在两个不同的网络,且CAN总线是基于数据块编址的,以报文为单位来发送数据的,报文都有唯一的标识符ID,每一帧最多容纳8个字节,RS232是以位数据的形式进行传输的,是一种串行物理接口标准,因此要实现两者的通信必须进行协议的转换,转换程序主要包括:协议转换,CAN函数、RS232函数,其中协议转换可以使RS232到CAN,CAN到RS232的数据转化。CAN函数主要实现的是SJA1000的初始化,发送和接收数据,其中韧始化主要包括设置工作
烟台南山学院毕业设计(论文) 第 26 页
方式、接收滤波方式、接收屏蔽寄存器,接收代码寄存器、波特率设置和中断允许寄存器,发送函数将数据存储区的数据取出后封装成报文格式送入缓冲区内,接收函数在缓冲区里读数据并将其存入数据存储区里。RS232函数实现了串口初始化、接收发送函数及中断函数,串口工作在查询模式,CAN总线有数据时,微处理器将其发送串口,当串口有数据时,将其发送到CAN总线。主程序流程图如图5.4所示:
图5.4 协议转换器主程序流程图
要使转接卡可以正常工作,就要对CAN控制器SJA1000初始化,主要的CAN控制器寄存器的控制字见附录。
在波特率的设置上,在不进行传输数据压缩的前提下,它的值就是每秒所传送的数据位数,所以要保证本转换器的设置跟下位机所有节点的设置是一样的,如果偏差很大则不能进行通信,SJA1000初始化流程图如图5.5所示:
烟台南山学院毕业设计(论文) 第 27 页
图5.5 CAN控制器SJA1000初始化流程图 图5.6 串口部分程序流程图
在进入复位模式后选择CAN的BasicCAN模式,设置代码寄存器和屏蔽寄存器,波特率,输出模式和时钟分频,最后退出复位。
在接收串口数据时,把由上位机PC发来的数据进行处理,数据是ASCII码形式的,需将其转化为字节的形式,gethex(1)是将2个ASCII码转为一个字节,S位是进行CAN节点ID和速度设置的。其流程图如图5.6所示。 5.2 上位机的软件设计 5.2.1 串口通信
Windows提供串口通信有三种方法:
1、使用串口通信控件。针对串口通信,Microsoft公司提供了MSComm控件,使用控件串口通信是非常方便的,设计人员不需要了解繁琐的API函数到底是怎么运作的,通过简单的修改控件的属性就可以实现串口的配置,完成串口接收和发送功能。
2、应用Windows的API应用程序接口。Windows中串口是以文件的形式被打开和访问的,串口和串口通信驱动需要用到设备控制块(Device Control Block,DCB)进行配置。应用程序使用API函数打开CreateFile打开串口,ReadFile读取串口,CreateEvent建立事件对象和CloseHandle关闭串口。
共分享92篇相关文档