android can驱动程序,Android系统下CAN总线驱动程序的设计与实现

3.2 Linux中CAN驱动程序实现针对MCP2515控制器,在Linux kernel设计中采用字符设备驱动开发的形式。驱动初始化函数staticint_init MCP2515_init(),首先通过ioremap()函数将S5PV210的SPI寄存器的物理地址映射到内核空间,这样才可以在驱动程序中访问和配置S5PV210的SPI寄存器。在正确配置S5PV210的SPI寄存器后,通过register_chrdev()函数为MCP2515注册设备驱动,分配主设备号,这样在设备文件目录中创建对应的设备文件后,就可以用Linux的系统函数操作MCP2515了。而分配内存部分放在probe()函数中完成,分配空间包括为设备数据结构以及其内部的接收发送缓冲区动态分配空间。同时在probe()还需要完成申请中断工作,并初始化中断处理队列,在中断处理队列中读取CANINTF寄存器,判断是接收/发送中断的哪一个缓冲器,或者说是错误中断最后通过enable_irq()函数使能S5PV210相应的中断引脚。

(1)MCP2515初始化。在实现了SPI的加载和声明后,就可以利用SPI写命令对MCP2515进行初始化。MCP2515的初始化过程为:首先将CAN控制寄存器CANCTRL的REQOP2:0>位设置为‘100’进入配置模式,所有错误计数器被清零,进入配置模式后设置波特率,禁止所有中断,设置滤波器,清除发送接收缓存,打开中断,完成MCP2515的初始化。MCP2515初始化过程如图5所示。本文引用地址:http://www.eepw.com.cn/article/148042.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值