⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can驱动说明.txt

📁 西安付立叶的基于at91rm9200的linux
💻 TXT
字号:
/****************************************Copyright (c)**************************************************
**                                  西安傅立叶电子有限公司
**                                     研    发    部
**                              http://www.FFTChina.com
**-----------------------------------------文件信息-----------------------------------------------------
**文   件   名: cantest.c
**创   建   人: 
**最后修改日期: 2005年6月30日
**描        述: CAN模块说明文挡
**说明        :该说明文挡的使用适合驱动程序中断模式和查询模式
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

                                   can模块说明文挡
(1)硬件说明
   注意:

   1. 原版的CAN 原理图有两个错误
      原图上:
           u3(7:CANH) 接到 CON1(2)
           u3(6:CANL) 接到 CON1(3)

           u6(7:CANH) 接到 CON2(2)
           u6(6:CANL) 接到 CON2(3)
      更正为:
           u3(7:CANH) 接到 CON1(3)
           u3(6:CANL) 接到 CON1(2)

           u6(7:CANH) 接到 CON2(3)
           u6(6:CANL) 接到 CON2(2)

   2.
       系统的例子是两个CAN之间进行通讯,CAN2.OA标准协议
(2)包含文件
      基于linux的CAN驱动(查询方式)CAN.C
      SJA1000的配置文件             sja1000.h
      can应用程序                   main.c
 (3) 驱动程序以及应用程序的使用
     驱动程序的编译  **注意用户交叉编译器路径和提供内核存放的路径
     --/usr/local/arm/2.95.3/bin/arm-linux-gcc -O2 -DMODULE -D__KERNEL__  -I/usr/src/arm/linux-2.4.19-rmk7/include -c can.c
     --chmod a+r+x can.o
     应用程序的编译
     --/usr/local/arm/2.95.3/bin/arm-linux-gcc -O2 -o main main.c
     动态加载驱动模块
     --insmod can.o
     显示成功加载信息
     --mknod /dev/fftcan c 254 0
     运行
     --./main
     运行结果
     Begin to test fftcan drivers
     40                     CAN1ID号的高八位
     6 
     66                     数据0的ASCII码值
     66
     74
     63
     61
     6E
     @.fftcan               数据的字符窜形式显示   
     finished FFT can test
(4)应用程序函数说明
   1:ioctl(int fd,cmd,value);
        ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就
   是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数
   如下: 
        int ioctl(int fd, ind cmd,value); 
   其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设
   备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和
   cmd的意义相关的。
   本驱动中 :
        CMD=3或者CMD=4,则传递进去的ffttemp为经过组合的ac,am,btr0,btr1值;
        CMD=3表示对can0进行初始化 value参数为验收代码,验收屏蔽,总线定时寄存器0和1的值
        CMD=4表示对CAN1进行初始化 value参数为验收代码,验收屏蔽,总线定时寄存器0和1的值
        CMD=0表示查询通道0是否收到数据,value参数没有意义
        CMD=1表示查询通道1是否收到数据,value参数没有意义
   2:write(fd1,bufdat,1);
    原形:int write(int handle,char *buf,unsigned len)
    用法:write(文件句柄,缓冲区地址,缓冲区字节长度<最大65534>);
    功能:将缓冲区的数据写入与handle相联的文件或设备中,handle是从creat、open、dup或dup2调用中得到的文件句柄。对于磁盘或磁盘文件,写操作从当前文件指针处开始,对于用O_APPEND选项打开的文件,写数据之前,文件指针指向EOF;对于设备,字节被直接传送到设备中;
    返回值:实际写入的字节数(不包括回车符),出错时返回-1。
    头文件:io.h 
    本驱动中:
       fd就是用户程序打开设备时使用open函数返回的文件标示符
       buf表示要写入的数据数组起始地址
       len参数表示要写入的CAN通道号
    本函数用来向CAN总线发送数据

  3:read(fd1,0,bufdat);
    read()读文件函数
    原形:int read(int handle,void *buf,unsigned len)
    功能:从与handle(从creat、open、dup或dup2调用中得到的句柄)相联的文件中读取len字节到由buf所指的缓冲区中。对于以文本方式打开的文件,read删除读入数据中的回车符。当读到Ctrl-Z字符时返回文件结束。对于磁盘文件,read从当前文件指针处开始读取数据。在读操作完成后,文件指针增量为读入的字节数。对于设备,直接从设备中读字节。
    返回值:读入缓冲区的字节数,如果文件以文本方式打开,则不包括回车符和Ctrl-Z字符。
    头文件:io.h
    本驱动中:
       fd就是用户程序打开设备时使用open函数返回的文件标示符
       buf参数存放接收到的数据值,注意:接收到的数据为接收缓冲区里面的全部内容,包括了接收到的ID号和数据位等信息;
       len为要读取数据的CAN通道号

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -