7919|15

20

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

最近在做ad7280a的锂电管理,spi不通 [复制链接]

 
我是根据从机时序图模拟的,现在一直通不上,示波器的测得波形很乱

最新回复

建议楼主把自己的SPI的波形贴出来。 这样对比很容易发现问题。   详情 回复 发表于 2017-11-15 16:18
点赞 关注
 
 

回复
举报

466

帖子

0

TA的资源

版主

沙发
 
本帖最后由 weizhongc 于 2015-1-8 13:48 编辑

把程序贴出来

AFB3LE$)_@[{HKN]6VQ]1J2.png (39.39 KB, 下载次数: 2)

AFB3LE$)_@[{HKN]6VQ]1J2.png

点评

unsigned long spi(unsigned long Data_send) { unsigned char i; unsigned long Data_receive,j; j=Data_send; Data_receive=0; SCLK=0;MOSI=0;CS=0; for(i=0;i  详情 回复 发表于 2015-1-8 18:03
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
unsigned long spi(unsigned long Data_send)
{
        unsigned char i;
  unsigned long Data_receive,j;
        j=Data_send;
        Data_receive=0;
  SCLK=0;MOSI=0;CS=0;//MOSI对应单片机的输出 7280a输入 ,MISO相反
  for(i=0;i<32;i++)
  {
     if (MISO)
           {
                   Data_receive=Data_receive|0x00000001;  
           }   
           _nop_();  
           Data_receive=Data_receive<<1;
           SCLK=1;  
           _nop_();
           if (j&0x80000000)
           {MOSI=1;}
           else
                         MOSI=0;
          _nop_();         
          j=j<<1;
          SCLK=0;
   }
   CS=1;
   delay1us(3);//
   return Data_receive;
}
这个收到的数据很乱的,不知道这个时序写的是不是有问题

 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

4
 
unsigned long spi(unsigned long Data_send)
{
        unsigned char i;
  unsigned long Data_receive,j;
        j=Data_send;
        Data_receive=0;
  SCLK=0;MOSI=0;CS=0;
  for(i=0;i<32;i++)
  {
     if (MISO)
           {
                   Data_receive=Data_receive|0x00000001;  
           }   
           _nop_();  
           Data_receive=Data_receive<<1;
           SCLK=1;  
           _nop_();
           if (j&0x80000000)
           {MOSI=1;}
           else
                         MOSI=0;
          _nop_();         
          j=j<<1;
          SCLK=0;
   }
   CS=1;
   delay1us(3);//
   return Data_receive;
}
这个程序的时序是不是有问题啊



点评

你按着时序图重新写吧,下降沿发送,接收数据。这点你程序就有问题了。 unsigned long spi(unsigned long Data_send) { unsigned char i; unsigned long Data_receive,j; j=Data_send; Data_r  详情 回复 发表于 2015-1-9 09:28
 
 
 

回复

466

帖子

0

TA的资源

版主

5
 
123LJY 发表于 2015-1-8 18:03
unsigned long spi(unsigned long Data_send)
{
        unsigned char i;
  unsigned long Data_receive,j;
        j=Data_send;
        Data_receive=0;
  SCLK=0;MOSI=0;CS=0;
  for(i=0;i
你按着时序图重新写吧,下降沿发送,接收数据。这点你程序就有问题了。

unsigned long spi(unsigned long Data_send)
{
        unsigned char i;
  unsigned long Data_receive,j;
  j=Data_send;
  Data_receive=0;
  SCLK=0;
  MOSI=0;
  CS=0;//MOSI对应单片机的输出 7280a输入 ,MISO相反
  for(i=0;i<32;i++)
  {

         
           Data_receive=Data_receive<<1;
           SCLK=1;  
           _nop_();

          _nop_();         
          j=j<<1;
          SCLK=0;
          _nop_();  
          if (j&0x80000000)
               MOSI=1;
           else
               MOSI=0;
          if (MISO)
              Data_receive=Data_receive|0x00000001;  
           
   }
   CS=1;
   delay1us(3);//
   return Data_receive;
}

点评

按照这个时序发的,spi(0x01C2B6E2)拆分后意思 向器件地址0 控制寄存器地址0x0E 写入数据0x15 寻址所有器件 1;  详情 回复 发表于 2015-1-9 10:09
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

6
 
weizhongc 发表于 2015-1-9 09:28
你按着时序图重新写吧,下降沿发送,接收数据。这点你程序就有问题了。

unsigned long spi(unsigned long Data_send)
{
        unsigned char i;
  unsigned long Data_receive,j;
  j=Data_send;
  Data_receive=0;
  SCLK=0;
  MOSI=0;
  CS=0;//MOSI对应单片机的输出 7280a输入 ,MISO相反
  for(i=0;i

按照这个时序发的,spi(0x01C2B6E2)拆分后意思 向器件地址0  控制寄存器地址0x0E
  写入数据0x15  寻址所有器件 1;                                                                                                                                        spi(0x038716CA)拆分后意思 向器件地址0  读取寄存器地址0x1C
  写入控制寄存器地址0x0E  寻址所有器件 1;

看返回的数据 是不是0x01C2B6E2,结果0x17400086 ,这是哪的问题
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

7
 
楼主不知道还在不在~~我也在研究BMS 能否交流下?

点评

nmg
可以啊,184156387 帮楼主转接  详情 回复 发表于 2015-12-3 10:54
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

8
 
可以啊,184156387
 
 
 

回复

15

帖子

3

TA的资源

一粒金砂(中级)

9
 
用模拟SPI程序。

部分程序代码.txt

1.24 KB, 下载次数: 24

 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

10
 
楼主,跟你遇到了一样的问题,你的程序改好了吗?
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

11
 
楼主,跟你在做一样的东西,spi的时序一直写不好,不知道你的调通了吗?
 
 
 

回复

5220

帖子

239

TA的资源

管理员

12
 
zadzad163 发表于 2015-2-1 13:43
楼主不知道还在不在~~我也在研究BMS 能否交流下?

可以啊,184156387

帮楼主转接
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

13
 
弄出来了吗
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

14
 
楼主,你的问题解决了没
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(中级)

15
 
一般模拟SPI主要是时序问题,对照时序图,把每步高低电平的需要延时按照时序图加上,应该没什么问题。可以给MISO上加上上拉试试。在不行就加上逻辑分析仪,看时序吧
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
建议楼主把自己的SPI的波形贴出来。 这样对比很容易发现问题。
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表