CN111858446A - Windows系统下基于双口RAM通信的CAN总线通信模块设计方法 - Google Patents
Windows系统下基于双口RAM通信的CAN总线通信模块设计方法 Download PDFInfo
- Publication number
- CN111858446A CN111858446A CN202010666263.1A CN202010666263A CN111858446A CN 111858446 A CN111858446 A CN 111858446A CN 202010666263 A CN202010666263 A CN 202010666263A CN 111858446 A CN111858446 A CN 111858446A
- Authority
- CN
- China
- Prior art keywords
- port ram
- data
- channel
- dual
- sending
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013461 design Methods 0.000 title claims abstract description 8
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000007246 mechanism Effects 0.000 claims abstract description 7
- 230000005540 biological transmission Effects 0.000 claims description 31
- 238000012360 testing method Methods 0.000 claims description 14
- 230000009977 dual effect Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 12
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 4
- 230000003993 interaction Effects 0.000 abstract description 5
- 238000004904 shortening Methods 0.000 abstract 1
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Abstract
本发明属于Windows系统技术领域,具体涉及一种Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,首先,划分双口RAM地址空间;其次,初始化CAN总线板卡;然后,进入CAN通信主流程:定时查询命令更新标志,根据应用程序设置的模式进行不同工作流程。查询发送数据,中断接收数据。对双口RAM共享区域进行信号灯保护,防止数据读写冲突。本发明可以实现Windows系统下CAN总线板卡通信功能,该方案采用双口RAM通信机制,极大的缩短了应用软件与底层板卡的交互时间。同时,双口RAM作为数据交互的中间介质,为上层应用和底层板卡程序提供了故障定位的数据依据,更方便程序调试。
Description
技术领域
本发明属于Windows系统技术领域,具体涉及一种Windows系统下基于双口RAM通信的CAN总线通信模块设计方法。
背景技术
CAN总线作为实时控制的串行通信网络,具有网络各节点之间数据通信实时性强的特点,容易形成冗余结构,提高系统的可靠性和系统的灵活性。
TMS320F28335作为TI高性能的32位浮点DSP处理器,具备精度高、成本低功耗小、性能高、外设集成度高的特点,在实际应用常被选为CAN总线通信模块节点。
TMS320F28335没有自带的通信程序,需要用户自行根据其寄存器特点进行设计,同行还需要满足其主机端驱动的设计要求。目前成熟的CAN总线通信方法有通过将协议帧分为帧信息区、节点信息区、动态翻转区。通过让主节点平等的接收各个从节点所发送的信息,避免一个从节点发送超长信息,堵塞整个节点通讯问题;还有通过在发送端和接收端进行滚动计数,达到冗余的目的,避免接收端产生新旧数据的震荡。但是上述方法没有提供数据缓冲机制,无法解决主机端和CAN总线板卡之间速度不匹配的问题。
为了解决Windows系统下的TMS320F28335板卡的CAN总线通信问题,在主机应用程序与DSP板卡底层程序之间提供交互接口,需要提出一种CAN总线板卡通信方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种Windows系统下的 CAN总线通信模块设计方法。
(二)技术方案
为解决上述技术问题,本发明提供一种Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,所述方法包括:
步骤1:划分双口RAM地址空间;
步骤2:初始化CAN总线板卡;
步骤3:进入通信模块主流程;
通过以上步骤,实现F28335板卡在Windows系统下的CAN总线通信功能。
其中,所述步骤1中,
首先,采取偶地址存数规则,将内存地址空间划分为6个区间,分别为板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区;
然后,根据驱动中实际使用的CAN通道数,选用信号灯基地址个数;对共享的内存空间采用信号灯保护机制,防止对数据读写失败。
其中,所述步骤1中:
使用偶地址存储数据原则,内存地址划分的最小单位为双字节;
将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称、板号、内存大小、双口RAM大小长度、软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储 CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给 CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型。
其中,所述步骤2中,
首先,初始化系统控制;
其次,设置CAN模块的GPIO,然后禁止中断对PIE控制器进行设置、初始化XINF外设模块、设置板卡定时器周期、使能中断、清零全局变量。
其中,所述步骤3中,包括:
步骤31:进入主循环;
步骤32:每隔1ms查询一次主机写入到双口RAM的模式值;
步骤33:判断模式值类型,根据类型进行三种工作模式的操作:
①工作模式:保存当前模式值,进入主流程:进行CAN数据收发和执行上层应用程序指令:
CAN数据发送:查询发送;
CAN数据接收:中断接收;
执行上层应用程序指令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作;
②复位模式:清零模式值,进行软件复位;
③自检模式:清零模式值,对CAN模块进行自检。
其中,所述步骤31中,设置板卡主循环为while(1),在不掉电的情况下一直执行后续步骤。
其中,所述步骤32中,设置定时器是100us一次中断,每次中断对计时器进行计数,在主流程中判断该计数值是否大于10,如果大于 10则申请信号灯,读取双口RAM的模式所在的地址内容,然后释放信号灯。
其中,所述步骤33的工作模式为:
首先,保存当前的模式值workCode;
其次,进入正常工作模式主流程,其主要步骤为:
Step1:获取信号灯;
Step2:反馈给应用程序进行模式选择的结果:将执行标志写入到双口RAM;
Step3:释放信号灯;
Step4:循环判断workCode是否为正常工作模式,如果是则继续进行Step5,否则退出该循环;
Step5:查询发送和中断接收CAN数据:
a.查询发送CAN数据:
a-1:查询当前发送处理数目是否达到要求发送的数据数量,如果没达到将继续判断两者之差是否大于8,如果是则置发送长度为 8,否则为两者之差,继续a-2;如果达到则将双口RAM的发送结束标志置1以通知上层应用程序继续发送数据,返回到Step4;
a-2:判断上次数据发送是否已完成,如果没完成则不进行本次发送,否则将发送标志清零,组装本次数据帧写入寄存器;
a-3:判断寄存器状态是否为发送完毕,如果是则将发送标志置1并将当前发送处理数增加8;
b.中断接收CAN数据:从寄存器中读取数据并写入到双口 RAM的接收缓冲区中,如果当前接收的数据大于接收缓冲区的大小则从缓冲区首地址继续写入;
Step6:执行上层应用软件发送的控制命令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作:
a.初始化CAN模块,设置波特率;
b.初始化邮箱,配置发送ID和接收ID;
c.初始化接收设置;
d.初始化发送设置;
e.初始化缓冲区设置;
Step7:读取当前模式值并返回到Step4。
其中,所述步骤33的复位模式为:
清零模式值,重新执行初始化CAN板卡操作,进行软件复位;获取信号灯,将执行标志写入双口RAM,释放信号灯。
其中,所述步骤33的自检模式为:
a.清零模式值,获取信号灯,将执行标志写入双口RAM,释放信号灯;
b.对CAN模块进行自检:开启CAN模块的自测模式,进行收发数对比,如果比对一致则自检成功,否则失败;
c.获取信号灯,将自检结果写入双口RAM,释放信号灯。
(三)有益效果
与现有技术相比较,本发明在系统为Windows的应用场景下,针对TMS320F28335板卡CAN总线模块特点,并结合基于双口RAM 通信的驱动模块特点,设计实现了一种Windows系统下基于双口 RAM通信的CAN总线板卡通信模块方法。本发明为解决CAN总线板卡通信问题提供了方案,上层应用软件通过双口RAM与CAN板卡进行数据交互,有利于上层软件进行故障定位。同时,使用双口 RAM内存空间作为数据接收的循环缓冲区,有效提高数据接收速度,解决主机与CAN总线板卡之间速度不匹配问题,同时还能降低丢包率。
附图说明
图1为基于双口RAM通信的CAN总线驱动实现流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为解决现有技术问题,本发明提供一种Windows系统下基于双口 RAM通信的CAN总线通信模块设计方法,所述方法用于在Windows 平台下,解决CAN总线通信问题;如图1所示,所述方法包括:
步骤1:划分双口RAM地址空间;
步骤2:初始化CAN总线板卡;
步骤3:进入通信模块主流程;
通过以上步骤,实现F28335板卡在Windows系统下的CAN总线通信功能。
其中,所述步骤1中,
首先,采取偶地址存数规则,将内存地址空间划分为6个区间,分别为板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区;
然后,根据驱动中实际使用的CAN通道数,选用信号灯基地址个数;对共享的内存空间采用信号灯保护机制,防止对数据读写失败。
其中,所述步骤1中:
使用偶地址存储数据原则,内存地址划分的最小单位为双字节;
将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称、板号、内存大小、双口RAM大小长度、软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储 CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给 CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型。
其中,所述步骤2中,
首先,初始化系统控制;
其次,设置CAN模块的GPIO,然后禁止中断对PIE控制器进行设置、初始化XINF外设模块、设置板卡定时器周期、使能中断、清零全局变量。
其中,所述步骤3中,包括:
步骤31:进入主循环;
步骤32:每隔1ms查询一次主机写入到双口RAM的模式值;
步骤33:判断模式值类型,根据类型进行三种工作模式的操作:
①工作模式:保存当前模式值,进入主流程:进行CAN数据收发和执行上层应用程序指令:
CAN数据发送:查询发送;
CAN数据接收:中断接收;
执行上层应用程序指令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作;
②复位模式:清零模式值,进行软件复位;
③自检模式:清零模式值,对CAN模块进行自检。
其中,所述步骤31中,设置板卡主循环为while(1),在不掉电的情况下一直执行后续步骤。
其中,所述步骤32中,设置定时器是100us一次中断,每次中断对计时器进行计数,在主流程中判断该计数值是否大于10,如果大于 10则申请信号灯,读取双口RAM的模式所在的地址内容,然后释放信号灯。
其中,所述步骤33的工作模式为:
首先,保存当前的模式值workCode;
其次,进入正常工作模式主流程,其主要步骤为:
Step1:获取信号灯;
Step2:反馈给应用程序进行模式选择的结果:将执行标志写入到双口RAM;
Step3:释放信号灯;
Step4:循环判断workCode是否为正常工作模式,如果是则继续进行Step5,否则退出该循环;
Step5:查询发送和中断接收CAN数据:
a.查询发送CAN数据:
a-1:查询当前发送处理数目是否达到要求发送的数据数量,如果没达到将继续判断两者之差是否大于8,如果是则置发送长度为 8,否则为两者之差,继续a-2;如果达到则将双口RAM的发送结束标志置1以通知上层应用程序继续发送数据,返回到Step4;
a-2:判断上次数据发送是否已完成,如果没完成则不进行本次发送,否则将发送标志清零,组装本次数据帧写入寄存器;
a-3:判断寄存器状态是否为发送完毕,如果是则将发送标志置1并将当前发送处理数增加8;
b.中断接收CAN数据:从寄存器中读取数据并写入到双口 RAM的接收缓冲区中,如果当前接收的数据大于接收缓冲区的大小则从缓冲区首地址继续写入;
Step6:执行上层应用软件发送的控制命令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作:
a.初始化CAN模块,设置波特率;
b.初始化邮箱,配置发送ID和接收ID;
c.初始化接收设置;
d.初始化发送设置;
e.初始化缓冲区设置;
Step7:读取当前模式值并返回到Step4。
其中,所述步骤33的复位模式为:
清零模式值,重新执行初始化CAN板卡操作,进行软件复位;获取信号灯,将执行标志写入双口RAM,释放信号灯。
其中,所述步骤33的自检模式为:
a.清零模式值,获取信号灯,将执行标志写入双口RAM,释放信号灯;
b.对CAN模块进行自检:开启CAN模块的自测模式,进行收发数对比,如果比对一致则自检成功,否则失败;
c.获取信号灯,将自检结果写入双口RAM,释放信号灯。
实施例1
本实施例提供一种Windows系统下基于双口RAM通信的CAN 总线通信模块设计方法,包括:
(1)划分双口RAM地址空间,对双口RAM划分出六个地址区域分别用于板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区,并且分配信号灯资源;
(2)初始化CAN总线板卡,初始化硬件资源,设置中断;
(3)通信模块主流程,对CAN总线数据进行查询发送和中断接收处理。同时,根据上层应用命令设置通信模块的工作模式。
所述步骤(1)、(2)实现了CAN通信模块的初始化设置过程。
所述步骤(3)对双口RAM命令更新标志进行定时查询,及时响应上层应用程序的指令,根据不同模式进行不同工作流程。设置接收中断外部CAN数据,并将数据存入双口RAM指定区域。同时,对双口RAM共享的地址空间进行信号灯保护机制,防止数据读写冲突。
实施例2
如图1所示,为了解决Windows系统下CAN总线驱动问题,本实施例采用基于双口RAM通信的实现方法。下面对本实施例的内容作进一步描述。
1、划分双口RAM地址空间
1)使用偶地址存储数据原则,内存地址划分的最小单位为双字节。
2)将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称,板号,内存大小,双口RAM大小长度,软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储 CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给 CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型;
2、初始化CAN总线板卡
首先初始化系统控制,其次设置CAN模块的GPIO,然后禁止中断对PIE控制器进行设置、初始化XINF外设模块、设置板卡定时器周期、使能中断、清零全局变量。
3、进入通信模块主流程
1)进入主循环:设置板卡主循环为while(1),在不掉电的情况下一直执行下面流程;
2)每隔1ms查询一次主机写入到双口RAM的模式值。
设置定时器是100us一次中断,每次中断对计时器进行计数,在主流程中判断该计数值是否大于10,如果大于10则申请信号灯,读取双口RAM的模式所在的地址内容,然后释放信号灯。
3)判断模式值类型,根据类型进行三种工作模式的操作:
①工作模式:进行CAN数据收发和执行上层应用程序指令;
首先,保存当前的模式值workCode。
其次,进入正常工作模式主流程,其主要步骤为:
Step1:获取信号灯;
Step2:反馈给应用程序进行模式选择的结果:将执行标志写入到双口RAM;
Step3:释放信号灯;
Step4:循环判断workCode是否为正常工作模式,如果是则继续进行Step5,否则退出该循环;
Step5:查询发送和中断接收CAN数据:
a.查询发送CAN数据:
a-1:查询当前发送处理数目是否达到要求发送的数据数量,如果没达到将继续判断两者之差是否大于8,如果是则置发送长度为8,否则为两者之差,继续a-2;如果达到则将双口RAM的发送结束标志置1以通知上层应用程序继续发送数据,返回到Step4;
a-2:判断上次数据发送是否已完成,如果没完成则不进行本次发送,否则将发送标志清零,组装本次数据帧写入寄存器,
a-3:判断寄存器状态是否为发送完毕,如果是则将发送标志置1 并将当前发送处理数增加8;
b.中断接收CAN数据:从寄存器中读取数据并写入到双口RAM 的接收缓冲区中,如果当前接收的数据大于接收缓冲区的大小则从缓冲区首地址继续写入。
Step6:执行上层应用软件发送的控制命令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作:
a.初始化CAN模块,设置波特率;
b.初始化邮箱,配置发送ID和接收ID;
c.初始化接收设置;
d.初始化发送设置;
e.初始化缓冲区设置;
Step7:读取当前模式值并返回到Step4。
②复位模式:清零模式值,重新执行初始化CAN板卡操作,进行软件复位。获取信号灯,将执行标志写入双口RAM,释放信号灯;
③自检模式:
a.清零模式值,获取信号灯,将执行标志写入双口RAM,释放信号灯;
b.对CAN模块进行自检:开启CAN模块的自测模式,进行收发数对比,如果比对一致则自检成功,否则失败;
c.获取信号灯,将自检结果写入双口RAM,释放信号灯。
利用上述技术方案,采用上述操作步骤,本发明可以实现 Windows系统下CAN总线板卡通信功能,该方法已经经过了算法验证,并进行了实验检验。结果标明,该方案采用双口RAM通信机制,极大的缩短了应用软件与底层板卡的交互时间。同时,双口RAM作为数据交互的中间介质,为上层应用和底层板卡程序提供了故障定位的数据依据,更方便程序调试。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述方法包括:
步骤1:划分双口RAM地址空间;
步骤2:初始化CAN总线板卡;
步骤3:进入通信模块主流程;
通过以上步骤,实现F28335板卡在Windows系统下的CAN总线通信功能。
2.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤1中,
首先,采取偶地址存数规则,将内存地址空间划分为6个区间,分别为板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区;
然后,根据驱动中实际使用的CAN通道数,选用信号灯基地址个数;对共享的内存空间采用信号灯保护机制,防止对数据读写失败。
3.如权利要求2所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤1中:
使用偶地址存储数据原则,内存地址划分的最小单位为双字节;
将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称、板号、内存大小、双口RAM大小长度、软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型。
4.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤2中,
首先,初始化系统控制;
其次,设置CAN模块的GPIO,然后禁止中断对PIE控制器进行设置、初始化XINF外设模块、设置板卡定时器周期、使能中断、清零全局变量。
5.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤3中,包括:
步骤31:进入主循环;
步骤32:每隔1ms查询一次主机写入到双口RAM的模式值;
步骤33:判断模式值类型,根据类型进行三种工作模式的操作:
①工作模式:保存当前模式值,进入主流程:进行CAN数据收发和执行上层应用程序指令:
CAN数据发送:查询发送;
CAN数据接收:中断接收;
执行上层应用程序指令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作;
②复位模式:清零模式值,进行软件复位;
③自检模式:清零模式值,对CAN模块进行自检。
6.如权利要求5所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤31中,设置板卡主循环为while(1),在不掉电的情况下一直执行后续步骤。
7.如权利要求5所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤32中,设置定时器是100us一次中断,每次中断对计时器进行计数,在主流程中判断该计数值是否大于10,如果大于10则申请信号灯,读取双口RAM的模式所在的地址内容,然后释放信号灯。
8.如权利要求5所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤33的工作模式为:
首先,保存当前的模式值workCode;
其次,进入正常工作模式主流程,其主要步骤为:
Step1:获取信号灯;
Step2:反馈给应用程序进行模式选择的结果:将执行标志写入到双口RAM;
Step3:释放信号灯;
Step4:循环判断workCode是否为正常工作模式,如果是则继续进行Step5,否则退出该循环;
Step5:查询发送和中断接收CAN数据:
a.查询发送CAN数据:
a-1:查询当前发送处理数目是否达到要求发送的数据数量,如果没达到将继续判断两者之差是否大于8,如果是则置发送长度为8,否则为两者之差,继续a-2;如果达到则将双口RAM的发送结束标志置1以通知上层应用程序继续发送数据,返回到Step4;
a-2:判断上次数据发送是否已完成,如果没完成则不进行本次发送,否则将发送标志清零,组装本次数据帧写入寄存器;
a-3:判断寄存器状态是否为发送完毕,如果是则将发送标志置1并将当前发送处理数增加8;
b.中断接收CAN数据:从寄存器中读取数据并写入到双口RAM的接收缓冲区中,如果当前接收的数据大于接收缓冲区的大小则从缓冲区首地址继续写入;
Step6:执行上层应用软件发送的控制命令:对每路CAN通道循环判断命令更新标志是否置1,如果是则根据指令类型进行不同操作:
a.初始化CAN模块,设置波特率;
b.初始化邮箱,配置发送ID和接收ID;
c.初始化接收设置;
d.初始化发送设置;
e.初始化缓冲区设置;
Step7:读取当前模式值并返回到Step4。
9.如权利要求5所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤33的复位模式为:
清零模式值,重新执行初始化CAN板卡操作,进行软件复位;获取信号灯,将执行标志写入双口RAM,释放信号灯。
10.如权利要求5所述的Windows系统下基于双口RAM通信的CAN总线通信模块设计方法,其特征在于,所述步骤33的自检模式为:
a.清零模式值,获取信号灯,将执行标志写入双口RAM,释放信号灯;
b.对CAN模块进行自检:开启CAN模块的自测模式,进行收发数对比,如果比对一致则自检成功,否则失败;
c.获取信号灯,将自检结果写入双口RAM,释放信号灯。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010666263.1A CN111858446A (zh) | 2020-07-09 | 2020-07-09 | Windows系统下基于双口RAM通信的CAN总线通信模块设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010666263.1A CN111858446A (zh) | 2020-07-09 | 2020-07-09 | Windows系统下基于双口RAM通信的CAN总线通信模块设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111858446A true CN111858446A (zh) | 2020-10-30 |
Family
ID=72984260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010666263.1A Pending CN111858446A (zh) | 2020-07-09 | 2020-07-09 | Windows系统下基于双口RAM通信的CAN总线通信模块设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858446A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656250A (zh) * | 2021-08-18 | 2021-11-16 | 天津津航计算技术研究所 | 一种下位机板卡状态监控技术的实现方法 |
CN115396293A (zh) * | 2022-08-23 | 2022-11-25 | 科东(广州)软件科技有限公司 | 一种通信异常处理系统、方法、装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681969A (zh) * | 2011-03-11 | 2012-09-19 | 山西国营大众机械厂军品第一研究所 | 基于can总线的长帧数据传输卡和长帧数据传输方法 |
CN103293995A (zh) * | 2013-06-09 | 2013-09-11 | 南车株洲电力机车研究所有限公司 | 基于微控制器的现场总线通信模块 |
CN103309830A (zh) * | 2013-07-08 | 2013-09-18 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法 |
CN208384564U (zh) * | 2018-07-10 | 2019-01-15 | 西安长远电子工程有限责任公司 | 一种基于pci总线的高速缓冲型can接口卡 |
-
2020
- 2020-07-09 CN CN202010666263.1A patent/CN111858446A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681969A (zh) * | 2011-03-11 | 2012-09-19 | 山西国营大众机械厂军品第一研究所 | 基于can总线的长帧数据传输卡和长帧数据传输方法 |
CN103293995A (zh) * | 2013-06-09 | 2013-09-11 | 南车株洲电力机车研究所有限公司 | 基于微控制器的现场总线通信模块 |
CN103309830A (zh) * | 2013-07-08 | 2013-09-18 | 哈尔滨工业大学 | VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法 |
CN208384564U (zh) * | 2018-07-10 | 2019-01-15 | 西安长远电子工程有限责任公司 | 一种基于pci总线的高速缓冲型can接口卡 |
Non-Patent Citations (3)
Title |
---|
杨磊: "模块化机器人关节控制系统底层通讯平台的设计", 《中国优秀硕士学位论文全 文数据库(电子期刊)信息科技辑 》, pages 140 - 164 * |
艾春晖 等: "基于双口 RAM 的CPCI 总线通讯机制研究", 《机械制造与自动化》, pages 110 - 112 * |
高强 等: "CAN 总线的PCI 接口通信卡设计", 《电子技术应用》, pages 122 - 124 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656250A (zh) * | 2021-08-18 | 2021-11-16 | 天津津航计算技术研究所 | 一种下位机板卡状态监控技术的实现方法 |
CN113656250B (zh) * | 2021-08-18 | 2024-04-05 | 天津津航计算技术研究所 | 一种下位机板卡状态监控技术的实现方法 |
CN115396293A (zh) * | 2022-08-23 | 2022-11-25 | 科东(广州)软件科技有限公司 | 一种通信异常处理系统、方法、装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100580639C (zh) | 用于控制对具有存储器集线器体系结构的存储模块的存储器存取的方法和系统 | |
US8909854B2 (en) | Memory device with specified write data size | |
US20170075842A1 (en) | Method, device, system and storage medium for implementing packet transmission in pcie switching network | |
US20160085585A1 (en) | Memory System, Method for Processing Memory Access Request and Computer System | |
CN111858446A (zh) | Windows系统下基于双口RAM通信的CAN总线通信模块设计方法 | |
CN103235760B (zh) | 基于CLB总线的高利用率NorFLASH存储接口芯片 | |
CN114706808A (zh) | 一种基于spi菊花链结构的通信系统、方法及设备 | |
CN111679794A (zh) | 多控存储系统中进行数据同步的方法和装置 | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
US9026838B2 (en) | Computer system, host-bus-adaptor control method, and program thereof | |
WO2021078197A1 (zh) | 内嵌处理器进行快速数据通信的方法、装置及存储介质 | |
CN111782027B (zh) | Ddr存储器运行频率调整方法及装置 | |
CN104252416A (zh) | 一种加速器以及数据处理方法 | |
CN111858444A (zh) | Windows系统下基于双口RAM通信的CAN总线驱动设计方法 | |
CN114286989B (zh) | 一种固态硬盘混合读写的实现方法以及装置 | |
US20130339591A1 (en) | Relaying apparatus, relay history recording method, and data processing apparatus | |
CN109992539B (zh) | 双主机协同工作装置 | |
CN115269455B (zh) | 基于fpga的磁盘数据读写控制方法、装置和存储终端 | |
CN111190852A (zh) | 基于双口的PowerPC与Microblaze交互系统及交互方法 | |
CN113660123B (zh) | 虚拟交换机升级方法、装置、电子设备以及存储介质 | |
KR20210006664A (ko) | 메모리 시스템 및 그것의 동작방법 | |
GB1575074A (en) | Buffer store control arrangements | |
CN111858445A (zh) | vxworks系统下基于双口RAM通信的CAN总线驱动设计方法 | |
US20030200401A1 (en) | Microcomputer system automatically backing-up data written in storage medium in transceiver, and transceiver connected thereto | |
CN112333283A (zh) | 自主高端存储阵列系统架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |