• 大小: 3.13MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-29
  • 语言: 其他
  • 标签:

资源简介

这是我做过的一个项目,前期阶段的代码,包含mcp2510+s3c2410和sja1000+89C51两部分,有完整代码。其中mcp2510+s3c2410采用linux2.6内核,有can总线完整可用驱动(驱动中包含SPI)及上层测试程序。sja1000+89C51部分使用c编写的。 文档部分包含MCP2510、sja1000芯片资料和can总线相关资料、SPI设置资料

资源截图

代码片段和文件信息

#include
#include
#include
#include

#include
#include
#include
#include
#include
#include
#include

#include
#include

#include
#include

#include
#include 

#include 
#include 
#include 
#include 
#include 

#include “mcp2510_ioctl.h“
#include “can.h“

#define INT_DEV_NAME  “candev“
#define INT_DEV_MAJOR 240

#define TIME_STEP  (1000)
#define SIG_MYINT 33

static struct timer_list *int_timer=NULL;
unsigned char * dbuf;
void inttimer_register(struct timer_list *pdataunsigned long timeover);

void can_interrupt(int irqvoid *dstruct pt_regs *regs)
{

unsigned char buffer;

siginfo_t info;
struct task_struct *p;
info.si_signo=SIG_MYINT;
info.si_code=-1;
info.si_int=0x8;

//buffer = Read_2510(CANSTAT);
buffer = Read_2510(CANINTF);

//close interrupt in mcp2510
Write_2510(CANINTE 0x00);

if((buffer&0x02) == 0x02)
{
can_data_receive();
flag = 0xff; 
Modify_2510(CANINTF0x020x00);
}
else if((buffer&0x80) == 0x80)
{
ReceiveError();
flag = 0xff; 
Modify_2510(CANINTF0x800x00);
}
else if((buffer&0x20) == 0x20)
{
ErrorInterrupt();
flag = 0xff; 
Modify_2510(CANINTF0x200x00);
}
else
{
flag=0xff;
can_data_receive();
Write_2510(CANINTF0x00);
}


        /*clear interrupt register for EINT1*/
SRCPND &= (~0x00000002);    
    INTPND = INTPND;
Write_2510(CANINTE 0xa2);



read_lock(&tasklist_lock);
        for_each_task(p){
  send_sig_info(SIGWINCH&infop);
}
read_unlock(&tasklist_lock);


}
void inttimer_timeover(unsigned long arg)
{
siginfo_t info;
struct task_struct *p;
unsigned char buffer;
info.si_signo=SIG_MYINT;
info.si_code=-1;
info.si_int=0x8;



buffer = Read_2510(EFLG);
if(buffer>0xc0)
{
flag=0xff;
RXdata[0]=‘E‘;
RXdata[1]=‘F‘;
RXdata[2]=‘L‘;
RXdata[3]=‘G‘;
RXdata[4]=‘E‘;
RXdata[5]=‘R‘;
RXdata[6]=‘R‘;
RXdata[7]=‘O‘;
RXdata[8]=‘R‘;
read_lock(&tasklist_lock);
        for_each_task(p){
  send_sig_info(SIGWINCH&infop);
}
read_unlock(&tasklist_lock);
}
inttimer_register(int_timerTIME_STEP);
      
}

void inttimer_register(struct timer_list *pdataunsigned long timeover)
{
init_timer(pdata);
pdata->expires=jiffies+timeover;
pdata->data=(unsigned long)pdata;
pdata->function=inttimer_timeover;
add_timer(pdata);
}


int can_open(struct inode *inodestruct file *filp)
{
MOD_INC_USE_COUNT;


        return 0;
}
int can_ioctl(struct inode *inodestruct file *filpunsigned int cmdunsigned long arg)
{
switch(cmd)
{
case IOCTL_test1:printk(“============IOCTL case  1===============\n“);
break;
case IOCTL_test2:printk(“============IOCTL case  2===============\n“);
break;
case IOCTL_test3:printk(“==========

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-05-05 13:59  can总线程序\
     文件       34304  2010-04-22 20:42  can总线程序\CAN总线协议.doc
     文件       32256  2010-04-22 20:39  can总线程序\CAN总线原理.doc
     目录           0  2010-07-12 12:18  can总线程序\MCP2510\
     文件     1949272  2010-04-26 17:34  can总线程序\MCP2510.pdf
     目录           0  2010-07-12 12:18  can总线程序\MCP2510\2010-7-6\
     目录           0  2010-07-12 12:18  can总线程序\MCP2510\2010-7-6\test\
     文件        6250  2010-07-05 13:45  can总线程序\MCP2510\2010-7-6\test\can.c
     文件        6250  2010-07-05 13:45  can总线程序\MCP2510\2010-7-6\test\can.c~
     文件       10844  2010-07-05 13:04  can总线程序\MCP2510\2010-7-6\test\can.h
     文件       10844  2010-07-05 12:49  can总线程序\MCP2510\2010-7-6\test\can.h~
     文件       11164  2010-07-05 13:45  can总线程序\MCP2510\2010-7-6\test\can.o
     文件       14850  2010-07-05 11:46  can总线程序\MCP2510\2010-7-6\test\exam
     文件        1296  2010-07-05 11:46  can总线程序\MCP2510\2010-7-6\test\exam.c
     文件        1290  2010-07-02 11:29  can总线程序\MCP2510\2010-7-6\test\exam.c~
     文件         390  2010-06-09 13:21  can总线程序\MCP2510\2010-7-6\test\Makefile
     文件         146  2010-06-09 13:21  can总线程序\MCP2510\2010-7-6\test\Makefile~
     文件        4105  2010-06-30 20:32  can总线程序\MCP2510\2010-7-6\test\mcp2510.h
     文件        4105  2010-06-19 20:00  can总线程序\MCP2510\2010-7-6\test\mcp2510.h~
     文件         285  2010-05-30 13:53  can总线程序\MCP2510\2010-7-6\test\mcp2510_ioctl.h
     目录           0  2010-07-12 12:18  can总线程序\MCP2510\不成功的rx0缓冲器\
     目录           0  2010-07-12 12:18  can总线程序\MCP2510\不成功的rx0缓冲器\test\
     文件        6248  2010-07-06 11:23  can总线程序\MCP2510\不成功的rx0缓冲器\test\can.c
     文件        6250  2010-07-06 11:21  can总线程序\MCP2510\不成功的rx0缓冲器\test\can.c~
     文件       10978  2010-07-06 12:44  can总线程序\MCP2510\不成功的rx0缓冲器\test\can.h
     文件       10978  2010-07-06 12:43  can总线程序\MCP2510\不成功的rx0缓冲器\test\can.h~
     文件       10896  2010-07-06 12:44  can总线程序\MCP2510\不成功的rx0缓冲器\test\can.o
     文件       15068  2010-07-06 12:13  can总线程序\MCP2510\不成功的rx0缓冲器\test\exam
     文件        1292  2010-07-06 12:13  can总线程序\MCP2510\不成功的rx0缓冲器\test\exam.c
     文件        1292  2010-07-06 12:13  can总线程序\MCP2510\不成功的rx0缓冲器\test\exam.c~
     文件         390  2010-06-09 13:21  can总线程序\MCP2510\不成功的rx0缓冲器\test\Makefile
............此处省略20个文件信息

评论

共有 条评论

相关资源