6153|11

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用过MCP2510的高手请进,为什么无法从SPI口读取mcp2510的数据!!! [复制链接]

请问为什么我无法读取mcp2510芯片的数据????????
    硬件连接很简单!用三星S3C44b0的io口模拟spi总线接口与mcp2510的SPI口对应相接! 型号mcp2510 I/P 。所接的电压是3.3v。 然后7,8脚接晶振。但是根据时许图编写出来的程序无法读取片内数据。。。。难道片子坏了1!!
    单字节spi收发程序如下:
        U8  recdata;
        U8  data;
        int i=0;
        recdata = 0;
        data = bData;         
     for(i=0;i<8;i++)
       {
        SPI_CLK_0();                        //时钟线为0
        if((data & 0x80)!=0 ) SPI_TX_1();                // 等待SPIF置位,即等待数据发送完毕 ,MSB模式
         else        SPI_TX_0();
        delay_us(1);
         

        data <<= 1;
        SPI_CLK_1();               //时钟线置一
        if(0 != SPI_RX()) recdata |= 1;                //此时,应该给recdata最低位置位
        if(7 != i)  recdata <<= 1;        //最后一次不要移位
        delay_us(1);
         }
   *pData = recdata;

我把44b0(mcu的一款)的模拟spi口的发送和接收引脚直接相连后,可以读出发送的数据,说明这个收发程序是可以用的。然后我编写了spi时序,但是每次SPI读出的数据都是255:和没接一样!!检查很久,未果 :(  望各位大侠指教,谢谢!!!!!

最新回复

谢谢,我的问题已经解决,就是在检测发送结束后,向MCP2510芯片发送一条读指令就可以了 while( CAN_SPI_CMD( SPI_CMD_READ, TOLONG(&(MCP2510_MAP->TXB0CTRL)), ARG_UNUSED, ARG_UNUSED )&0x08 )。 但是,本人认为这条指令为只读指令,没什么意义。但是加了这条指令后就可以了,具体可以继续讨论。 本人认为是芯片有BUG。  详情 回复 发表于 2008-12-13 11:28
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
呵呵, 2510 是FLASH么?

要是读出来FF, 那应该是对的呀 呵呵, 你可以先写,再读,看是否一样

通常Flash里的值 默认,或擦除后,的值都是0xFF
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
支持一下
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
你的spi模拟有问题
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
我记得 还要设置MCU为主模式;
同时SPI通信本身还有两种方式,你必须使你的MCU和MCP2510的方式是一样的。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
从SPI发送的时候,可以用示波器看看各个信号线和控制线的电平变化。
如果根本没变化,那你是不是没有使能SPI功能?
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

7
 
这一版块,太没人气了,是不是大家都成大侠了

如果成大侠了,也常回家看看嘛,家里太冷清了

据说努力顶帖也是一种美德,但我只想大家常回家看看

毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
支持搂主,收藏
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼主的问题解决了吗?我现在用pxa270模拟SPI也遇到和你一样的问题,欢迎加我qq:19679989交流
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
你看看我用 S3C2410 - MCP2510 在 linux2.4.18 下的驱动程序吧,看是否有帮助

连接地址为:[url=http://bbs.21ic.com/upfiles/img/20078/2007822234936464.rar][/url]

压缩包里包括:
linux2.4.18_ARM9-S3C2410_MCP2510_CAN_driver (s3c2410-can-mcp2510.c 与相关头文件)
CAN通信测试应用程序
ARM9-S3C2410_CAN接口扩展_硬件设计.JPG

这个驱动是可用的,我测试过
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

11
 
大概看了下MCP2510,是个CAN总线的协议转换芯片吧
你应该主要是读取里面缓冲区的数据,我感觉要是你的缓冲区里面没有从外面获取数据的话,里面的数据确实可能是0xff,这样你读出来的数据可能是对的,为了验证一下,你可以用spi往里面写点东西,然后再试着读出来,看看是不是一样的,如果是一样的,你的程序应该就是没有问题的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

12
 
谢谢,我的问题已经解决,就是在检测发送结束后,向MCP2510芯片发送一条读指令就可以了
while( CAN_SPI_CMD( SPI_CMD_READ, TOLONG(&(MCP2510_MAP->TXB0CTRL)), ARG_UNUSED, ARG_UNUSED )&0x08 )。
但是,本人认为这条指令为只读指令,没什么意义。但是加了这条指令后就可以了,具体可以继续讨论。
本人认为是芯片有BUG。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表