CAN总线 SJA1000中断】的更多相关文章

背景: 最近一直在使用C8051F340 + SJA1000来实现CAN通信,就SJA1000部分做个记录. 正文: 整个系统结构拓扑图如下: 两路CAN,C8051F340作为CPU,处理CAN与USB数据. 转入正题,关于SJA1000的中断. SJA1000的/INT脚与单片机的外部中断输入脚相连,平时/INT保持高电平,当SJA1000内部有中断时,/INT脚及变为低电平(单片机外部输入中断引脚设置为低电平有效边沿触发),等待单片机进行处理. SJA1000中断部分应该关注两个寄存器“I…
SJA1000 CAN驱动程序演示实验 2016-04-12 20:41:22来源: eefocus 关键字:SJA1000  CAN  驱动程序  演示实验   收藏 评论(0) 分享到 微博 QQ 微信 LinkedIn 一.实验目的 本驱动程序展示了如何在Small RTOS中编写SJA1000 的驱动程序.通过调用CAN 程序库SJA1000_PEI.LIB 的基本函数,实现实验板上CAN 节点的初始化以及CAN 节点数据收发测试.二.实验设备及器件PC 机 一台DP-51PROC 单片…
目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意的事项 0. 引言 中断是现代计算机体系结构的重要组成部分,我们回顾历史,现代体系结构的基本输入输出方式有三种 . 程序查询: CPU周期性询问外部设备是否准备就绪.该方式的明显的缺点就是浪费CPU资源,效率低下.但是在特定的场景下这种"程序查询"的方式还有有它的用武之地的 例如,在网络驱…
有一次做一个东西,为了尽量不占用CPU的处理数据时间,所以就使用DMA接收串口的数据,但是呢问题来了.,,,,,怎么样才能确定接收到了一条完整的数据了,,我们都知道只要打开DMA 那家伙就不停的把接收的数据放到我们指定的地方. 只要接收到一条完整的数据我就该去处理了 关于空闲中断,,,就是说每接收到一条完整的数据就会置位空闲标志位,我们只需要判断空闲标志位是否置一,,就能知道是不是接收到了一条完整的数据 用空闲中断的好处就是,,对于以前我写程序通信都会在数据的后面加上尾,,然后另一个接收的单片机…
PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号.PCI设备还可以使用MSI机制向处理器提交中断请求,而不使用这组中断信号.有关MSI机制的详细说明见第8章. 1.4.1 中断信号与中断控制器的连接关系 不同的处理器使用的…
串口持续地接收不定长.不定时的数据,把每一帧数据缓存下来且灵活地利用内存空间,下面提供一种方式供参考.原理是利用串口空闲中断和DMA,每当对方发来一帧完整的数据后,串口接收开始空闲,触发中断,在中断处理中新建一个接收队列节点,把DMA缓存的数据copy到接收队列里.当需要的时候就从接收队列里提出数据.定期清理队列防止堆空间溢出. 话不多说,上代码. 定义数据结构: /*USART接收队列*/ typedef struct _USART_REC_Queue { u16 index; //序号 ch…
LINUX中断描述符初始化 @CopyLeft by ICANTH,I Can do ANy THing that I CAN THink!~ Author: WenHui, WuHan University,2012-6-4 硬件产生中断之后,需要通过门描述符来寻找中断的处理程序入口.门描述符和段描述符一样,8个字节.门描述符大体分为:段偏移.段选择子以及DPL.段选择子用于在GDT中寻找到门段基址,DPL用于控制当前进程中断或异常访问权限.当发生中断时,将门描述符所指向的段基地放入%cs,将…
1.空闲中断和别的接收完成(一个字节)中断,发送完成(发送寄存器控)中断的一样是串口中断: 2.空闲中断是接收到一个数据以后,接收停顿超过一字节时间  认为桢收完,总线空闲中断是在检测到在接收数据后,数据总线上一个字节的时间内,没有再接到数据后发生.也就是RXNE位被置位之后,才开始检测,只被置位一次,除非再次检测到RXNE位被置位,然后才开始检测下一次的总线空闲.一次RXNE位被置位只进行一次. 实现思路: 采用串口1,并配置成空闲中断模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA.…
1.空闲中断和别的接收完成(一个字节)中断,发送完成(发送寄存器控)中断的一样是串口中断: 2.空闲中断是接收到一个数据以后,接收停顿超过一字节时间  认为桢收完,总线空闲中断是在检测到在接收数据后,数据总线上一个字节的时间内,没有再接到数据后发生.也就是RXNE位被置位之后,才开始检测,只被置位一次,除非再次检测到RXNE位被置位,然后才开始检测下一次的总线空闲.一次RXNE位被置位只进行一次. 实现思路: 采用串口1,并配置成空闲中断模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA.…
在PCI体系结构中,含有两类桥片,一个是HOST主桥,另一个是PCI桥.在每一个PCI设备中(包括PCI桥)都含有一个配置空间.这个配置空间由HOST主桥管理,而PCI桥可以转发来自HOST主桥的配置访问.在PCI总线中,PCI Agent设备使用的配置空间与PCI桥使用的配置空间有些差别,但这些配置空间都是由处理器通过HOST主桥管理. 一.存储器域与PCI总线域 HOST主桥的实现因处理器系统而异.PowerPC处理器和x86处理器的HOST主桥除了集成方式不同之外,其实现机制也有较大差异.…
本文主要讲解了x86体系架构从外部设备接受中断的过程,本文是系列文章的第一部分,试图回答以下问题: 什么是PIC以及它的用途是什么? 什么是APIC以及它的用途是什么?LAPIC和I/O APIC的目的是什么? APIC,xAPIC以及x2APIC之间的区别在哪儿? 什么是MSI? MSI以及MSI-X之间的存在哪些区别? $PIR, MPtable, 和 ACPI tables的用途是什么? 如果你想知道上述问题的答案,或者仅仅想简单了解一下中断控制器的发展过程,耐心看完本文,你一定会有收获.…
如何一步一步建立CAN通讯 2016-04-12 20:38:14来源: eefocus 关键字:CAN通讯  硬件环境   收藏 评论(0) 分享到 微博 QQ 微信 LinkedIn CAN通讯的优点在此就不多说了,10公里,5Kb/s的速度是能保证的. 第一步:硬件环境的建立. 这里采用的是SJA1000作为总线控制器,CTM8251模块作为总线驱动器.MCU采用的是MEGA16:利用I/O口模拟数据总线,当然也可以使用有总线的MCU:MCS-51,MEGA8515等. 原理图如下: 第二…
总算是进入了HCD的片儿区,既然来到一个片区,怎么都要去拜会一下山头几个大哥吧.,先回忆一些我们怎么到这里的?给你列举一个调用函数过程usb_control_msg->usb_internal_control_msg->usb_start_wait_urb->usb_submit_urb->usb_hcd_submit_urb.这个山头儿,王中之王就是drivers/usb/core/hcd.h里定义的struct usb_hcd. /*----------------------…
为了验证FPGA工程中的某个模块的功能和时序的正确性,常常需要对其单独进行验证,但是这些模块通常都与内部的众多信号相连(如系统总线,中断信号线等),往往一个模块的对外接口引脚会多达几百个,对其单独仿真的话,可能会对目标FPGA造成IO资源不足的情况.即使IO资源满足,当众多内部信号变成IO信号时,模块内部的信号将增加额外的IO延时,增加了时序约束的复杂度. 在编译时会出现类似错误: Error: Can't place 108 pins with 2.5 V I/O standard becau…
TLP的路由是指TLP通过Switch或者PCIe桥片时采用哪条路径,最终到达EP或者RC的方法.PCIe总线一共定义了三种路由方法,分别是基于地址(Address)的路由,基于ID的路由和隐式路由(Implicit)方式. 存储器和I/O读写请求TLP使用基于地址的路由方式,这种方式使用TLP中的Address字段进行路由选径,最终到达目的地. 而配置读写报文."Vendor_Defined Messages"报文.Cpl和CplD报文使用基于ID的路由方式,这种方式使用PCI总线号…
本节以MPC8548处理器为例说明HOST主桥在PowerPC处理器中的实现机制,并简要介绍x86处理器系统使用的HOST主桥. MPC8548处理器是Freescale基于E500 V2内核的一个PowerPC处理器,该处理器中集成了DDR控制器.多个eTSEC(Enhanced Three-Speed Ethernet Controller).PCI/PCI-X和PCIe总线控制器等一系列接口.MPC8548处理器的拓扑结构如图2?2所示.   如上图所示,MPC8548处理器的L1 Cac…
代码分析文章<KVM虚拟机代码揭秘--QEMU代码结构分析>.<KVM虚拟机代码揭秘--中断虚拟化>.<KVM虚拟机代码揭秘--设备IO虚拟化>.<KVM虚拟机代码揭秘--QEMU的PCI总线与设备(上)>.<KVM虚拟机代码揭秘--QEMU的PCI总线与设备(下)>.先从大的方面分析代码结构,然后分中断.IO.PCI总线与设备详细介绍. KVM虚拟机代码揭秘--QEMU代码结构分析 关于TCG的解释:TCG(Tiny Code Generato…
4 How Interrupts work   与遵循树的自然结构的地址范围转换不同, 中断信号可以起源于或者终止于板卡上的任何设备. 与设备树中自然表示的设备寻址不同,中断信号的表示独立于设备树节点之间的连接.通常用下面的四个属性来描述一个中断连接: interrupt-controller - 一个空属性,声明一个接收中断信号的设备节点 #interrupt-cells -  这是中断控制器节点的一个属性.它声明中断控制器的 interrupt specifier(中断描述符)占用多少单元格…
Zynq-7000系列器件PS端的DMA控制器采用ARM的IP核DMA-330(PL-330)实现. 特点: 1.8个独立的通道,4个可用于PL—PS间数据管理,每个通道有1024Byte的MFIFO 2.使用CPU_2x 时钟搬运数据,CPU_2x = (CPU frq/6)*2 3.执行自定义内存区域内的DMA指令运行DMA 4. AHB控制寄存器支持安全和非安全模式 5.每个通道内置4字Cache 6. 可以访问SoC的以下映射物理地址: DDR.OCM.PL.Linear QSPI Re…
组成计算机的三大件:CPU,内存和IO. 1 总线 总线就是一条或者多条物理上的导线,每个部件都接到这些导线上,同一时刻只能有一个部件在接收或者发送. 仲裁总线:所有部件按照另一条总线,也就是仲裁总线或者中断总线上给出的信号来判断这个时刻总线可以由哪个部件来使用.产生仲裁总线或者中断电位的可以是CPU,也可以是总线上的其他设备. 如上图所示,主板上的每个部件都是通过总线连接起来的. PCI总线:目前台式机与服务器所普遍使用的一种南桥与外设连接的总线技术. 北桥芯片:IO总线和以太网HUB模型的区…
连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251 前面的一系列文章简要地介绍了PCIe总线的结构.事务层.数据链路层和物理层.下面我们用一个简单地的例子来回顾并总结一下. 如下图所示,Requester的应用层(软件层)首先向其事务层发送如下信息:32位(或者64位)的Memory地址,事务类型(Transaction Type),数据量(以DW为单位),TC(Traffic Class,即优先级),字节使能(Byte Enable)和属性信…
 原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ 设备树使用手册 基本数据格式 设备树是一个包含节点和属性的简单树状结构.属性就是键-值对,而节点可以同时包含属性和子节点.例如,以下就是一个 .dts 格式的简单树: /{ node1 { a-string-property = "A string"; a-string-list-property = "first string", "second…
ARM处理器的工作状态:ARM处理器有两种工作状态.在程序的执行过程中,处理器可以在两种工作状态之间切换,并且不影响 相应寄存器中的内容. ARM状态,此时处理器执行32位对齐的ARM指令:BX指令,当操作数寄存器最低位为0时,进入ARM状态. Thumb,此时处理器执行16位对齐的Thumb指令.BX指令,当操作数寄存器最低位为1时,进入Thumb状态. BX(Branch Exchange):BX Rn;   ##其中Rn可以是R0-R15中的任意一个.指令通过将寄存器Rn的内容拷贝到程序计…
1 存储发展 存储在这里的含义为信息记录,是伴随人类活动出现的技术. 1. 竹简和纸张 竹简是中国古代使用的记录文字的工具,后来被纸张所取代,如图1.1所示. 2. 选数管 选数管是20世纪中期出现的电子存储装置,是一种由直观存储转为机器存储的装置.其实在19世纪出现的穿孔纸带存储就是一种由直观存储转向机器存储的产物,它对19世纪西方某国的人口普查起到了关键的加速作用. 选数管的容量从256-4096比特不等,其中4096比特的选数管有10英寸长,3英寸宽,最初是1946年开发的,因为成本太高,…
之前一直在做驱动方面的整理工作,对驱动的高效性有一些自己的理解这里和大家分享一下.并奉驱动程序,本程序覆盖uart1-8. 串口驱动,这是在每个单片机中可以说是必备接口.可以说大部分产品中都会使用,更有甚者一个产品中用到8个串口.这样一个高效的驱动是决定您产品优劣的关键因素.本文主要针对STM32F4XX系列芯片做的一个驱动接口层.以减少您在开发项目时驱动方面所花费时间,以及为程序达到高效的处理为目的. 从51,pic到现在的STM32,个人感觉STM32这方面做的非常突出,丰富的使用模式,强大…
转自:http://blog.chinaunix.net/uid-20522771-id-3457184.html 原文链接:http://devicetree.org/Device_Tree_Usage#How_Interrupts_Work   Device Tree Usage 设备树使用手册 This page walks through how to write a device tree for a new machine. It is intended to provide an…
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 如今我们来分析一下CAN总线的接收数据流程,对于网络设备.数据接收大体上採用中断+NAPI机制进行数据的接收.相同.我们如今的CAN模块也是採用相同的方式进行数据的接收. 因为我们仅仅针对CAN总线接收数据这条主线进行分析. 因些.会忽略一些针对CAN协议的设置及初始化等相关代码. 在初始化CAN设备时,我们须要给CAN设备分配NAPI功能.我们通过netif_napi_add()函数将CAN设备加入到NAPI机…
STM32之串口DMA接收不定长数据 引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序还要不要运行了? 同学B:串口可以配置成用DMA的方式接收数据,等接收完毕就可以去读取了! 这个同学是对的,我们可以使用DMA去接收数据,不过DMA需要定长才能产生接收中断,如何接收不定长的数据呢?…
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! CAN总线原理 由于Socket CAN涉及到CAN总线协议.套接字.Linux网络设备驱动等.因此,为了能够全面地了解Socket CAN的原理.我们需要了解以下几个方面的知识点: (1)CAN总线协议: (2)Socket原理: (3)Linux网络设备驱动: 当熟悉以下三个方面的知识点后,我们再去分析基于Linux的Socket CAN的驱动.这样的话理解起来更加容易.易懂. (4)Socket CAN的驱…
目录 一.    设备树简介    2 1.    问题一:为什么需要设备树?    2 ①名词解释:    2 ②DT详细介绍:    2 ③DTS是DT的源文件,描述Device Tree中的设备(Device)的具体内容和拓扑结构    2 ④DTC , Device Tree Compiler,设备树编译器    3 ⑤DTB, Device Tree BLOB设备树二进制对象    3 ⑥dtb文件的编译    3 ⑦boot image简介    3 2.    DTS设备树文件的加…