《CAN总线与RS-232、SPI总线转换模块的设计》论文 - 图文(7)

2018-12-29 19:26

第五章 CAN/SPI总线转换模块设计

第五章 CAN/SPI总线转换模块设计

CAN/SPI总线转换模块的设计与CAN/RS-RS-232转换模块的设计基本相似,在CAN总线收发部分以及单片机最小系统的硬件设计是相同的,所以不做详细介绍,如有需要可参考上一小节CAN/RS-RS-232转换模块的设计。 5.1 硬件设计

图5-1 CAN/SPI总线转换模块硬件原理框图

由于系统采用的单片机STC89C52自身不带SPI接口 ,所以我们采用普通的IO接口模拟SPI接口进行数据的通信。该模块的硬件原理图、PCB图及实物图见附录。 5.2 软件设计

程序可分为初始化、CAN数据收发和SPI总线数据收发。选用单片机是STC89C52,这款单片机本身不具有SPI接口,然而我们需要把从CAN总线接收来的数据通过SPI总线发送出去,我们采取用单片机的端口引脚来模拟SPI总线的方法来弥补。

1)程序初始化

程序初始化包括CAN总线的初始化、SPI总线的初始化。CAN控制器SJA1000的初始化包括设置工作方式、接收滤波方式、接收屏蔽寄存器和接收代码寄存器、波特率参数和中断允许寄存器。初始化设置完成后,SJA1000则进入工作状态,开始工作,独立CAN控制器SJA1000必须先复位,而且是低电平复位,在每次开始工作时给SJA1000的复位引脚一个复位电平(低电平),使其进入复位模式。

23

石河子大学学士学位论文

SPI总线的初始化要根据硬件电路图,把SCK 、MOSI、MISO、CS和单片机的端口引脚对应起来。

2)CAN总线数据的接收和SPI总线的发送

我们采取查询的方式来CAN总线数据的接收和SPI总线的发送实现,当SJA1000的数据接收缓存区有有效报文时,就通过调用Can_Receive函数把数据接收缓存区的数据接收进来,然后将从CAN总线接收来的数据再通过SPI总线发送出去,由于SPI总线发送是通过MOSI在SCK上升沿时一位一位的传送出去的,所以进入SPI发送程序里首先把SCK清零,然后把要发送的数据和0x80相与并把结果发到MOSI上,SCK置位,SCK在一次上升沿到来时把MOSI的数据位发送到对方的接收缓存寄存器了,接着要发送的数据左移一位,这样循环八次一个字节就发送出去了,而且这个字节的数据是从高位从低位一次传送的。

3)SPI数据的接收和CAN总线数据的发送

SPI总线与无线收发器NRF24L01模块相连,NRF24L01有一个INT引脚,当有数据往

图5-2 CAN/SPI总线转换模块软件主程序流程图 SPI总线是否有数据接收?Y通过can_trans()函数把数据发送到CAN总线上。Y从SJA1000的接收缓存区接收数据并通过SPI总线发送出去NSJA1000接收缓存区存在有效报文?N开始单片机发送时,此引脚被清零。当监测到INT引脚为低电平时,说明有数据通过SPI总线发送到单片机,此时调用SPI接收函数,SPI总线在SCK的下降沿到来时从MISO接收一位,所以进入SPI接收函数时先把SCK置位,然后把SCK清零,在SCK下降沿到来时就把数据接收到MISO上了,先把变量赋值0x00并与MISO相与然后把变量向左移动一位,这样循环八次一个字节的数据就接收完了[3]。

当SPI总线有数据接收进来,就调用can_trans函数把SPI接收的数据传送到CAN总线上。

24

第六章 系统调试

第六章 系统调试

在前面的小节中已详细的介绍了系统模块的设计,接下来介绍模块的调试过程中遇到的问题,以及问题的解决过程和方法。

总线的转化主要涉及的是数据的通信过程,因此传输中的帧格式定义是相当重要的,在调试的过程中应该注意。模块的调试过程中微小的疏忽都可能导致数据传输丢帧或接接收错误。

在设计以及调试的过程中遇到了很多问题,正是通过不断的解决这些问题设

图6-1 CAN/RS-232模块调试 计才能向前开展,才最终调试成功。遇到的主要问题主要有:

1) 在确定模块代码正确的前提下,代码写入单片机后发现SJA1000不工作。 检查电路后,发现单片机的复位引脚和SJA1000的复位引脚接在同一个硬件复位电路上了,而单片机是高电平复位,SJA1000是低电平复位,那么SJA1000相当于没有复位,所以其不能正常工作。我们把SJA1000复位引脚接到单片机P2.0引脚,在程序开头给P2.0引脚给10ms低电平进行软件置位。这样每次工作前先对SJA1000进行软件复位,使其能正常工作。

2)在调试CAN/SPI转换模块过程中,发现能通过SPI总线向无线模块(我们使用基于SPI的无线模块测试该模块)能发送数据,但从无线模块接收的数据都是0xFF。

图6-2 CAN/SPI模块调试 能接收到0xFF说明单片机检测到了无线模块INT的引脚有信号置位,但数据没能正确通过MISO进入单片机,我们发现MISO接到了P1.6口,而单片机的P1口的默认值为高电平,与无线模块的要求电平相反,不能正确的接收数据。我们考虑将MISO接到P2.1引脚,再调试时发现能模块可以正确的接收数据。

25

石河子大学学士学位论文

3)调试CAN/SPI转换模块过程中,为了测试接收数据的正确性把无线模块发过来的数据通过串口调试助手进行显示,发现数据会丢失。

在测试过程中通过串口调试助手通过CAN/RS232转换模块向CAN总线上发送数据,然后经过CAN/SPI转换模块送入SPI总线上通过无线模块发送到另一个无线接收模块,然后通过串口调试助手进行显示,发现有数据丢失的现象,我们经过逐步监测数据,未发现错误,最后通过在转换模块发送中添加一个延迟函数,数据能接收和发送都正确了。

26

第七章 总结

第七章 总结

经过大量的实践测试,设计总线转换模块可以实现总线数据格式的转换,达到了立项时的预期目标。CAN总线具有其它总线所不具备的优势,使得CAN总线成为现在世界上唯一一个有国际标准的现场总线,并被评为最有前景的总线。而现在工业控制领域仍存在各种总线协议,彼此之间不能兼容,短时间内又不可能有哪种总线一统天下。总线之间的不兼容严重阻碍了发展,我们设计的CAN/SPI、 CAN/RS-232总线转换模块可以分别实现CAN与SPI和RS-232总线格式的转换,为只具有RS-232或者SPI接口的设备和CAN总线的相互兼容提供了可能。在工作时只需要把转换模块的RS-232、SPI接口和设备的RS-232、SPI相连,而转换模块的CAN接口和CAN总线连在一起,在工作之前彼此之间制定一些协议,这样就可以实现了具备RS-232、SPI接口的设备也可以和CAN总线相兼容,也解决了现在各总线之间不兼容的弊端。

我们的设计也存在着很大的不足,由于整个模块的电路板都是自己腐蚀、焊接的,又没有做外壳进行装饰,所以整体看起来不够美观。经过大量的测试发现转换模块的稳定性不够高,要想让转换模块应用到实践中我们必须从这两点不足之处努力改进。

27


《CAN总线与RS-232、SPI总线转换模块的设计》论文 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版高中化学必修一3.1《金属的化学性质》(第1课时)word教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: