基于PIC单片机通信适配卡设计

发布者:AdventureSeeker最新更新时间:2011-10-12 关键字:PIC单片机  通信适配卡 手机看文章 扫描二维码
随时随地手机看文章

  CAN总线-控制器局部网(CAN)国际标准(ISO11898)。CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。

  其特点可概括如下:CAN为多主方式工作。在报文标识符上,各节点分成不同的优先级。采用非破坏总线仲裁技术。只需通过对报文的标识符滤波即可实现点对点、一点对多点方式传送接收数据。直接通信距离最远可达零10km(速率5kbps以下);通信速率最高可达到1Mbps(此时通讯距离最长为40m)。CAN上的节点数主要取决于总线驱动电路,目前可达110个。报文采用短帧结构,传输时间短,受到干扰的概率低。每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。通信介质可为双绞线、同轴电缆或光纤,选择灵活。节点在错误严重的情况下具有自动关闭输出功能,使得其他节点的操作不受影响。它具有较高的性能价格比。CAN协议是建立在国际标准组织的开放系统互联模式基础上的,由于CAN的数据结构简单,又是范围较小的局域网,因此不需要其他中间层,应用层数据直接取自数据链路层或直接向链路层写数据。结构层次少,有利于系统中实时控制信号的传送。

  本实验通信网络通过CAN总线传输数据,设计的CAN-RS-232通信适配卡,可挂接在通信网络的任一节点位置,对于通过RS-232总线连入CAN网络的PC,可用WINDOWS自带的超级终端或者我们用VC编写的串口操作程序来接收和发送数据,可以实现点对点,及一点对多点的通信,实现CAN协议里的数据帧和远程请求帧的传送所谓远程请求帧就是接收端通过发送远程帧启动其资源节点传送它们各自的数据,板卡还可实现10位精度的A/D转换并将得到的数据通过CAN总线上传给上位机CAN总线系统结构如图1所示:

        

  1系统硬件设计

  板卡电路主要由四部分组成:PIC16F877A单片机、独立CAN通信控制器SJA1000T、CAN总线驱动器TJA1050和RS-232总线驱动器MAX232。主要实现基于CAN总线的数据传输,同时通过RS-232把Pc作为终端接人CAN总线以及采集模拟信号并通过CAN总线上传给上位机。SJA1000T是集成的独立CAN控制器(与PHILIPS早期的CAN控制器PCA82C200完全兼容),它负责完成CAN总线通信协议的物理层和数据链路层的功能。对于微处理器来说,它相当于一个存储器I/O 映象设备。由于CAN控制器和微控制器内部都有自己的时钟产生电路,为了让两者之间协调,外加了10M 晶振在微控制器上作为整个系统的时钟,并将微控制器的时钟输出作为CAN控制器的时钟输入;SJA1000T的中断输出信号/INT接到单片机的INT中断,但也可通过查询方式实现单片机与CAN控制器的通信;为了使CAN控制器和微控制器能同时可靠的复位,外加了手动复位电路。

  PIC16F877A单片机是目前使用非常广泛的中端单片机,在本系统中,它主要是用于控制CAN控制器SJA1000T,对SJA1000T进行初始化和读/写操作以及将从CAN总线或从RS-232总线传来的数据进行打包处 后再转传到RS-232总线或CAN总线上,即对两个总线上的数据流按照协议进行处理和传送。下位机的单片机主要是采集模拟信号并实现A/D转换,并通过CAN总线上传给上位机。

  1.1 CAN通信模块

  SJA1000T的AD0~AD7是地址、数据复合总线,与PIC16F877A的PORTD端口相连,即单片机通过SJA1000T的这个并口来传递数据和地址;需要注意的是51系列的单片机有专门的读、写和地址锁存的引脚,而PIC16F877A并没有,所以我们只能用其他端口来模拟控制,在本系统中SJA1000T的ALE、CS、RD 、WR分别与单片机的RC0-RC3引脚相连,即  用RC0-RC3来控制SJA1000T的地址锁存、片选和读/写操作。

  TJA1050是CAN 协议控制器和物理总线之间的接口,主要应用在波特率范围从60kbps到1Mbps。TJA1050可以为总线提供差动的发送功能,为CAN控制器提供差动的接收功能,而且完全符合ISO11898标准。CAN控制器SJA1000T通过一条串行数据输出线TxD 和一条串行数据输人线RxD 连接到CAN总线驱动器TJA1050,而TJA1050则通过两个有差动接收和发送能力的总线终端连接到CAN总线。总线终端为120欧的电阻,其作用为匹配总线阻抗,提高数据通信的抗干扰性及可靠性。CAN通信模块的原理图见图2。

       

  1.2 RS-232模块

  RS-232标准是美国EIA电子工业联合会制定的一种串行物理接口标准,广泛用于汁算机与终端或外设之间的近端连接 完整的RS-232接口有25根线,一般在计算机串口采用简化的9芯插头座:工作时,应保证电平在±(5-15)V之问。因此为了能够同计算机或控制器的TTL器件连接,必须在RS-232与TTL电路之问进行电平和逻辑关系的变换。常用的转换芯片是MAX232。MAX232内部有电压倍增电路和转换电路,只需5V电源便可实现TTL电平与RS-232电平转换。RS-232模块的原理图见图3。

       

  1.3 A/D转换模块

  PIC16F877A单片机自带有8路模拟通道,转换精度为10位。本适配卡选择RA0为模拟通道。板卡将A/D转换后的数据通过CAN总线上传给上位机。

  1.4 数据流

  CAN-RS-232的数据流图见图4。

       

  2 系统软件设计

  软件设计分为两大块:板卡底层软件设计和PC机上串口操作软件设计。板卡底层软件设计主要是对PIC16F877A编程,用于把从PC机通过串口输人给单片机的数据按照CAN协议帧结构进行打包处理,并操作CAN控制器把数据发送到CAN总线;把从CAN总线上输入的数据转换成串行数据输出给PC机:PC机上串口操作软件设计主要是对串口的操作和通过串口收发数据。

  2.1单片机编程

  开发工具使用的是MPLAB集成开发环境(IDE),它是综合的编辑器、项目管理器和设计平台,适用于使用Microchip的PICmicro系列单片机进行嵌入式设计的应用开发;编程语言用的是C语言,将HITECH 公司的PICC编译器直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。

  CAN控制器SJA1000T片内有模式寄存器MOD、命令寄存器CMR、状态寄存器SR、中断寄存器IR、中断使能寄存器IER、接收缓冲器RXB、发送缓冲器TXB、仲裁丢失捕捉寄存器ALC、错误代码捕捉寄存器ECC、错误报警限额寄存器EWLR、错误计数寄存器ERR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线时序寄存器BTR、输出控制寄存器OCR和时钟分频寄存器CDR等,单片机就是通过读写这些寄存器来实现对SJA1000T的控制,从而实现CAN报文的接收和发送。文后给出CAN控制器SJA1000T初始化和接收子程序的流程图。下面给出CAN初始化程序,其中WRCAN是自定义的一段对SJAIO00T写数据的子程序。

        

        

  2.2 串口操作程序设计

  在各种开发工具中间,VC由于功能强大和灵活,所以本实验系统使用VC作为开发工具。串口通讯目前流行的方法主要有3种:一是利用Microsoft提供的CMSCOMM控件进行通讯,通过插入ActiveX控件的方式实现;二是利用WIN API函数进行编程,这种编程的难度较高,要掌握较多的API函数;三是利用现在网络上面提供的一些串口通讯控件进行编写,比如CSerial类等。本程序采用WINAPI函数进行串口的开发,程序在PC机上用来收发串口数据运行正确稳定。

        

  3 结束语

  本系统在PC机上使用串口通信程序收发RS-232总线上的数据,并通过PIC单片机和CAN通信模块连人CAN网络。板卡可进行双向通信:一方面可以把从CAN总线接收的数据流转换成标准的RS-232格式的数据流上传给PC机;另一方面可以把接收的RS-232格式的数据流转换成符合CAN协议的报文结构传送到CAN总线上。充分利用了CAN总线组网的优势,构成的总线型通讯网络具有通讯波特率高、通讯距离长、节点容量大、可靠性高等特点。利用VC编程的串口通信程序接收显示和发送数据,实现了多主机基于CAN网络的数据通讯。

关键字:PIC单片机  通信适配卡 引用地址:基于PIC单片机通信适配卡设计

上一篇:18B20通讯程序-PIC
下一篇:基于PIC单片机设计的RLC智能测量仪

推荐阅读最新更新时间:2024-03-16 12:43

PIC单片机与液晶显示模块DMF5001N的接口应用
  DMF5001N图形液晶显示模块由一块160×128点阵单屏结构的液晶显示器件、两片T6961B、两片T6A39、一片T6963C及其8KRAM以及配套电路组成。T6963C有一内置字符器CGROM,共有128个5×7点阵ASCII字符;它有64K的显示RAM,用户可在其中方便地设置文本、图形和用户自定义的显示数据缓冲区。从而DMF5001N不仅可显示汉字,还可显示ASCII字符和各种曲线;它可以选择文本与图形之间的逻辑“与”、“或”、“异或”等组合,可以实现反显、闪烁、滚屏、翻页及动画等多种显示功能,还具有多种光标显示功能。因此可将它与单片机连接构成功能强、结构简单、人机界面友好的各种智能仪表和控制系统。   PIC16
[单片机]
<font color='red'>PIC单片机</font>与液晶显示模块DMF5001N的接口应用
24C02在PIC单片机系统中的应用
MICROCHIP公司的PIC16系列单片机以其精简的指令和较强的端口驱动能力在各个领域得到广泛的应用。在需要储存较大数量数据的控制领域,24C02可以解决PIC16C8×系列单片机片内EEPROM不足的问题,用以保存诸如用户设置参数、采集到的数据等。 由于部分PIC单片机不具备I2C总线接口,在应用时必须用软件法加以解决。 在软件编制时应当严格遵循I2C总线规则,并注意24C02的片内读写周期时间,调整好程序流程,以避免写不进、读不出的问题。 下面将笔者在实际工作中遇到的问题和解决的方法进行简单的介绍,希望可以给同行一些帮助。 首先约定,数据由微处理器发送到24C02称“写”、“发”,反之称“读”、“
[单片机]
24C02在<font color='red'>PIC单片机</font>系统中的应用
温度DS18b20与PIC单片机通讯程序
ORG PIC54 GOTO MAIN ORG 0 ;---------------------- ;---------------------------- DELAY22 MOVLW D'200' ; DELAY 2*250=500mS MOVWF COUNT1 DE32 MOVLW D'250' ; 8*250=2mS MOVWF COUNT2 DE42 NOP ; 1+2+1=5uS DECFSZ COUNT2,1 GOTO DE42 DECFSZ
[单片机]
基于PIC单片机的NRF2401发送程序
#include p18f4550.h #include delays.h // /************************************************************* 引脚连接宏定义 *************************************************************/ #define DATA LATBbits.LATB0//频道1收发数据端 #define CLK1 LATBbits.LATB1//频道1时钟 #define DR1 LATBbits.LATB2//频道1数据已准备好 #define CS
[单片机]
PIC单片机程序设计的基本框架
为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。   TITLE“This is……”;程序标题   ;程序说明   LIST P=16F84,F=1NHX8M   ;   include p16F84.inc   -config_RC_Qsc &_WDT_0FF…   ;资源定义和变量定义   STATUS EQU 03
[单片机]
PIC单片机的BootLoader实现
引 言   PIC单片机的BootLoader属于需要自己写程序的那种,可以根据自己的需要写出各种功能的BootLoader程序来。目前,比较常见的BootLoader程序有Microchip公司的C18版本和著名的PICC编译器厂商 HI-TECH公司(以下简称HI-TECH)的PICC18版本。它们的相似之处在于都占用了系统的0x00~0x1FF的程序空间。 Microchip的版本是用纯汇编写的,而HI-TECH的版本是用C语言编写的。   在PIC系列单片机中,只有PIC18系列和PIC16F87X系列的单片机才有IAP功能,才能够使用BootLoader功能。下面只介绍PIC18的BootLoader,PIC16F8
[单片机]
PIC单片机驱动TM1616源程序
/*本程序适用于没有SIP功能的单片机添加SIP发送功能*/ #include pic.h __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define clk P10 //定义时钟管脚 #define clk RC3 //定义时钟管脚 #define dio RC5 //定义数据管脚 #define stb RC2 //定义片选管脚 //#define nop _nop_(); #define uchar unsigned char #define uint unsigned int
[单片机]
基于PIC单片机的便携式测试记录仪设计
基于PIC单片机的便携式测试记录仪(以下简称记录仪)既有一般数据采集装置的实时采集与保存功能,同时又能够对采集数据进行实时处理、显示和打印。适用于对采集速度要求不高、交流供电比较困难以及无须长期留人值班的场合。 以追求高可靠、低功耗、小体积设计思想的本记录仪具有如下功能:对现场物理量进行实时采集、保存、处理与显示;自动识别现场安装的传感器数量、传感器号和量程;自动和手动两种采集方式,自动采集适用于长期无人值班的固定场合,手动采集便于对分布在不同区域的物理量进行测试;与PC机通讯,可根据需要将采集数据下载至PC数据库;实时打印;自检功能,避免了系统运行过程中可能遇到本身无法容错处理的异常事件而导致的死机现象。 1 硬件设计 1.
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved