首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于PIC单片机的RS-232转CAN通信适配卡设计
来源:本站整理  作者:佚名  2010-01-27 12:09:37



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写数据的子程序。

C程序

void CANINI()

{

WRCAN(MODE,0x09); //进入复位模式,选择单向滤波方式,对SJA1000T进行初始化

WRCAN(CDR,0x88); //选择PeliCAN模式,关闭CLKOUT

WRCAN(IER,0x0D); //中断允许寄存器

//以下根据需要对屏蔽寄存器赋初值,将位设为1表示DON'T CARE,设为0表示CARE

WRCAN(AMR0,0x00);

WRCAN(AMR1,0x00);

WRCAN(AMR2,0xFF);

WRCAN(AMR3.0xFF); //因为AMR3的最低两位是不用的,必须置“1”

//以下根据情况为验收代码寄存器赋初值

WRCAN(ACR0,0x00);

WRCAN(ACR1,0x00);

WRCAN(ACR2,0xFF);

WRCAN(ACR3,0xFF); //ACR,AMR各位设为1,是为了允许任何数据通过滤波器的验收

WRCAN(BTR0,0x03); //总线定时寄存器

WRCAN(BTR1,0xFF); //设置波特率为50kbps

B=fXT/[2*BRP*(1+Tseg1+Tseg2)]

WRCAN(OCR,0xAA); //输出控制寄存器

WRCAN(RBSA,0x00); //接收缓存寄存器FIFO的起始地址为0

WRCAN(TXERR,0x00); //清除发送错误寄存器

RDCAN(ECC); //清除ECC,因为ECC是只读不能写的,当被读出时,其相应位即被清除

WRCAN(MODE,0x08); //设为单滤波方式,并返回工作状态

return

}

void WRCAN(address,data) //向SJA1000T的寄存器写入数据

unsigned char address;

unsigned char data

{

PORTC=0x0D; //RC3=1;RC2=1;Rc1=0;RC0=1;即ALE置1,则锁存地址,其余端口参考时序图

PORTD=address;

PORTC=0x04; //RC0=0;RC1=0;RC2=1;RC3=0;即ALE置0,则传输据.进入写方式,其余端口参考时序图

PORTD=data; //将数据写入端口D

PORTC=0x0E; //RC3=1;RC2=1;RC1=1;RC0=0;各端口还原

}

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:103,253.90000 毫秒