arm linux 下 MCP2510数据接收问题

mrelay 2009-04-14 09:19:57
调试MCP2510的数据收发时的问题:
硬件:ARM+MCP2510 直接用ARM带的SPI接口连接。
操作系统:armlinux
用的是中断方式接收数据,spi驱动直接用操作系统带的。在里边添加了中断处理。中断处理过程是:产生中断后,中断处理程序只是简单的通知应用程序有数据要接收,然后就返回,由应用程序来读取数据。
问题:在发送端MCP2510连续发送数据时,接收端的MCP2510就不能完全接收。数据丢失严重。观察发现:如果在应用接收函数处理过程中又来了两个中断情况下,接收函数在下次读MCP2510数据的时候,就会读不到数据。我这种接收数据的方式是有问题,我想问一下这种读不到数据情况正常吗?我觉得即使是被覆盖了,也应该读到最后一包数据吧,怎么会没有数据呢?

初始化过程如下:

1、复位
2、设置配置模式 地址0x0f=0x87
3、设置速率 地址0x2a=0x01 地址0x29=0x89 地址0x28=0x02
4、初始化CAN缓冲区 地址0x20=0 地址0x21=0 地址0x22=0 地址0x23=0
5、初始化CAN缓冲区 地址0x24=0 地址0x25=0 地址0x26=0 地址0x27=0
6、初始化CAN缓冲区 地址0x00=0 地址0x01=8 地址0x02=0 地址0x03=0
7、初始化CAN缓冲区 地址0x04=0 地址0x05=0 地址0x06=0 地址0x07=0
8、初始化CAN缓冲区 地址0x08=0 地址0x09=8 地址0x0a=0 地址0x0b=0
9、初始化CAN缓冲区 地址0x10=0 地址0x11=0 地址0x12=0 地址0x13=0
10 初始化CAN缓冲区 地址0x14=0 地址0x15=0 地址0x16=0 地址0x17=0
11 初始化CAN缓冲区 地址0x18=0 地址0x19=0 地址0x1a=0 地址0x1b=0
12 初始化CAN缓冲区 地址0x30-0x3d 为0 0x40-0x4d 为0 0x50-0x5d 为0
13 初始化CAN缓冲区 地址0x60=0 接收缓冲区0的控制寄存器
14 初始化CAN缓冲区 地址0x70=0 接收缓冲区1的控制寄存器
15 设置为普通模式
16 修改0x60地址的数据为 0x04
17 修改0x70地址的数据为 0x00
18 使能接收中断
...全文
334 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrelay 2009-04-14
  • 打赏
  • 举报
回复
谢谢。

如果连续来了两个中断,我去读的时候,却读不到数据,这种是正常情况,还是我的初始化设置有问题?或者是其他的问题呢?
morris88 2009-04-14
  • 打赏
  • 举报
回复
一般来说,最好在中断中接收数据并缓存,然后应用层程序在需要时从核心数据缓存中读取...

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧