[发明专利]一种单SPI总线控制多CAN接口的控制方法有效
申请号: | 201210593317.1 | 申请日: | 2012-12-29 |
公开(公告)号: | CN103064815A | 公开(公告)日: | 2013-04-24 |
发明(设计)人: | 叶飞虹;王赫;李民英 | 申请(专利权)人: | 广东志成冠军集团有限公司 |
主分类号: | G06F13/40 | 分类号: | G06F13/40 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 胡彬 |
地址: | 523000 广东省东莞市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 spi 总线 控制 can 接口 方法 | ||
1.一种单SPI总线控制多CAN接口的控制方法,其特征在于,所述方法包括以下步骤:
存储过程:
A、当多个CAN芯片中的任意一个CAN芯片的接收邮箱接收完CAN总线上的数据时该CAN芯片触发中断,发送中断信号;
B、单片机通过SPI总线设置所述触发中断的CAN芯片关闭芯片内部中断使能,并退出中断;
C、单片机通过SPI总线查询所有触发中断的CAN芯片的接收邮箱接收的数据,并通过SPI总线读取到单片机的内存缓冲区中,在单片机的内存缓冲区设置数据标识,恢复所述触发中断的CAN芯片中断使能,让所述触发中断的CAN芯片继续接收数据;
读取过程:
D、单片机应用程序判断内存缓冲区是否有数据标识,是则拷贝内存缓冲区数据到应用程序的内存缓冲区,否则返回失败,并继续判断内存缓冲区是否有数据标识。
2.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
发送过程:
E、单片机通过SPI总线通知多个CAN芯片中的任意一个CAN芯片发送数据到与所述CAN芯片连接的CAN总线上。
3.如权利要求1所述的方法,其特征在于,在所述步骤A之前还包括以下步骤:
依次配置每个CAN芯片对应的中断向量和中断处理函数,初始化所述CAN芯片的片选信号互斥量以及所述CAN芯片对应的接收数据内存缓冲区;
依次配置每个CAN芯片的速率、接收滤波器以及唤醒功能。
4.如权利要求1所述的方法,其特征在于,所述步骤B具体包括以下步骤:
B1、当多个CAN芯片中的任意一个CAN芯片的接收邮箱接收到CAN总线上的数据时,当前CAN芯片中断记数器加1;
B2、判断当前CAN芯片获取片选信号互斥量是否成功,是则执行步骤B3,否则执行步骤B4;
B3、设置当前CAN芯片片选信号,使当前CAN芯片处于选通,并通过SPI接口设置当前CAN芯片关闭芯片内部中断使能,让当前CAN芯片不继续产生中断信号,继续执行步骤B5;
B4、检查片选信号是否是当前CAN芯片,是则执行步骤B6,否则执行步骤B7;
B5、释放多CAN芯片片选信号互斥量;
B6、唤醒数据接收任务;
B7、关闭当前CAN芯片在单片机上对应的中断向量使能,让单片机不响应当前CAN芯片产生的中断信号,等待数据接收任务处理。
5.如权利要求1所述的方法,其特征在于,所述步骤C具体包括以下步骤:
C1、单片机统计系统初始化过的CAN芯片数,按顺序依次查询,并初始化第一个CAN芯片的序号等于0;
C2、单片机获得待查询CAN芯片的序号;
C3、判断当前序号的CAN芯片是否超过系统初始化CAN芯片的最大个数,是则结束数据接收,否则执行步骤C4;
C4、通过当前CAN芯片中断计数器判断当前CAN芯片是否接收到数据,是则执行步骤C5,否则将CAN芯片的序号加1,并返回步骤C3;
C5、判断当前CAN芯片是否获得片选信号使用权,是则设置片选信号选中当前CAN芯片,并获取CAN芯片的接收邮箱状态,否则将CAN芯片的序号加1,并返回步骤C3;
C6、判断CAN芯片邮箱是否有数据包,是则读取数据包存在内存缓冲区,同时通知应用程序读取数据,否则执行步骤C7;
C7、开启CAN芯片内中断使能,判断当前CAN芯片对应单片机上中断向量使能是否关闭,是则开启当前CAN芯片中断向量使能,否则将CAN芯片的序号加1,并返回步骤C3。
6.如权利要求1所述的方法,其特征在于,所述步骤D具体包括以下步骤:
D1、判断内存缓冲区是否存有数据,是则从内存缓冲区读取数据并返回结果,否则执行步骤D2;
D2、判断当前CAN芯片数据接收是否结束,是则执行步骤D3,否则返回结果并退出读取;
D3、判断是否有数据进入通知,是则从内存缓冲区读取数据,返回结果并退出读取,否则继续判断是否有数据进入通知。
7.如权利要求2所述的方法,其特征在于,所述步骤E具体包括以下步骤:
E1、判断当前CAN芯片是否获得片选信号使用权,是则获取发送寄存器状态,否则继续判断当前CAN芯片是否获得片选信号使用权;
E2、判断当前CAN芯片的邮箱是否准备好发送数据,是则发送数据并返回 结果,否则将CAN芯片号加1继续判断下一个CAN芯片的邮箱是否准备好发送数据,当判断最后一个CAN芯片的邮箱没有准备好发送数据时,获取错误码并返回结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东志成冠军集团有限公司,未经广东志成冠军集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210593317.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:隐形拉链
- 下一篇:一种可编程控制器PLC输出点的扩展方法及装置